Go to file
Pierre Chevalier a8c230743a
Write firmware for the Ferris keyboard (#9634)
* Write firmware for the Ferris keyboard

Took inspiration from the gergoplex and the ergodox_ez firmware for the
split matrix with io_expander on the right hand.
Cleaned up a lot of bit fiddling on the mcu side by taking inspiration
from the `split_custom` in quantum.
Still bit fiddling on the mcp side as it is particularly natural to do
so with the abstractions provided by the i2c protocol. Would be good to
clean that up and abstract away the wiring from the generic i2c code in
a similar fashion as quantum and the mcp side behave.

One improvement over the ergodox_ez and the gergoplex firmwares is that
the wiring is straight forward as opposed to swapping rows and columns
in two different places that end up cancelling out for some reason.

At this stage, I have flashed this firmware to a board and have verified
that all keys are behaving as intended by shorting pins.
I still have to solder in some switches and test that everything works
correctly at normal typing speeds, but I don't expect any major issues
given I'm building up on previous effort, including the debouncing code
from the ergodox_ez.

* Remove rotation from info.json and label the keys as per default keymap

* Comply with minor review feedback points

* Use CUSTOM_MATRIX=lite to remove boilerplate

* Update keyboards/handwired/ferris/info.json

Didn't play nicely in the configurator

Co-authored-by: Ryan <fauxpark@gmail.com>

* Remove MIDI_ENABLE from rules.mk

Co-authored-by: Ryan <fauxpark@gmail.com>

* Remove FAUXCLICKY_ENABLE from rules.mk

Co-authored-by: Ryan <fauxpark@gmail.com>

* Prefer wait_ms over _delay_ms

Co-authored-by: Ryan <fauxpark@gmail.com>

* Remove unused include

Co-authored-by: Ryan <fauxpark@gmail.com>

* Remove unused include

Co-authored-by: Ryan <fauxpark@gmail.com>

* Remove unused include

Co-authored-by: Ryan <fauxpark@gmail.com>

* Remove unused includeh

Co-authored-by: Ryan <fauxpark@gmail.com>

* Use dprint over print and remove include for print.h

* Remove all unused includes

* Remove unused code

* Cleanups thanks to code review

* Move more personal settings from the ferris config to the default keymap config

These setting happen to be unused in the default keymap at the moment,
as it has only one layer with no homerow modifiers and no mouse key; but
I would like to keep it there for two reasons:
* It can serve as an example to people creating their own keymap
* I plan to design a more usable default keymap that uses these features
  once this PR which adds the Ferris keyboard is merged.

* Consolidate mcp logic inside matrix.c

Co-authored-by: Ryan <fauxpark@gmail.com>
2020-07-18 13:57:33 +10:00
.github CI: Run 'qmk info' on keyboard changes (#9212) 2020-06-20 22:19:56 +01:00
.vscode Allow trailing whitespace in markdown docs, for formatting purposes. (#8774) 2020-04-13 11:31:40 +10:00
bin Move everything to Python 3.6 (#8835) 2020-04-18 22:00:56 +02:00
docs MSYS2: Switch to bootloadHID package and bring back avrdude package (#9736) 2020-07-16 18:01:34 +01:00
drivers OLED driver function to set pixels (#9713) 2020-07-16 15:48:04 +10:00
keyboards Write firmware for the Ferris keyboard (#9634) 2020-07-18 13:57:33 +10:00
layouts Create ajp10304 userspace and ortho_4x12 layout. (#9304) 2020-07-09 20:18:51 +01:00
lib Remove DESCRIPTION (#9732) 2020-07-16 15:49:18 +10:00
quantum Redefine IS_LAYER_ON/OFF() as aliases for existing layer functions (#6352) 2020-07-16 22:27:55 +10:00
tests format code according to conventions [skip ci] 2020-03-13 18:44:56 +00:00
tmk_core Remove DESCRIPTION (#9732) 2020-07-16 15:49:18 +10:00
users Redefine IS_LAYER_ON/OFF() as aliases for existing layer functions (#6352) 2020-07-16 22:27:55 +10:00
util MSYS2: Switch to bootloadHID package and bring back avrdude package (#9736) 2020-07-16 18:01:34 +01:00
.clang-format fix indent size 2019-06-11 01:51:40 -07:00
.editorconfig QMK CLI and JSON keymap support (#6176) 2019-07-15 12:14:27 -07:00
.gitattributes Set eep files to binary mode 2016-08-27 18:37:28 +03:00
.gitignore Allow for user song list (#9281) 2020-07-16 16:45:50 +10:00
.gitmodules 2020 May 30 Breaking Changes Update (#9215) 2020-05-30 13:14:59 -07:00
.travis.yml Fix unknown key 'IndentPPDirectives' on CI (#7933) 2020-01-19 13:59:57 -08:00
book.json adds redirects for docs 2017-08-19 08:31:54 -04:00
bootloader.mk Add LUFA mass storage BOOTLOADER "support" (#7729) 2019-12-29 20:53:23 +00:00
build_full_test.mk Add SRC and OPT_DEFS when building tests 2017-07-20 10:17:31 -04:00
build_json.mk Load keymap-level rules.mk when compiling keymap.json (#8841) 2020-04-18 14:29:48 +01:00
build_keyboard.mk Align some ChibiOS build logic (#8461) 2020-03-22 20:48:17 +11:00
build_layout.mk Allow for building layouts from keymap.json files. 2020-07-07 07:27:39 -07:00
build_test.mk Initial arm->chibios pass - simplify some platform logic (#8450) 2020-03-21 16:20:04 +11:00
CODE_OF_CONDUCT.md updates the coc 2019-08-24 12:43:39 -04:00
common_features.mk Support IS31FL3741 and IS31FL3741A. (#9201) 2020-06-20 14:49:15 +10:00
common.mk Move Split Common VPATH addition (#4716) 2018-12-31 08:45:44 -08:00
Dockerfile Update docker util script and travis to use new base container 2019-07-14 21:01:38 -07:00
Doxyfile Generate API docs from source code comments (#2491) 2018-03-22 02:50:38 -04:00
doxygen-todo Remove Bluefruit protocol (#9008) 2020-05-04 23:05:45 +01:00
LICENSE add an explicit lisence file for github to pickup 2017-11-13 20:50:54 -05:00
license_GPLv2.md Clarify the quantum license (#1042) 2017-03-28 15:20:36 -07:00
license_GPLv3.md Clarify the quantum license (#1042) 2017-03-28 15:20:36 -07:00
license_Modified_BSD.md Clarify the quantum license (#1042) 2017-03-28 15:20:36 -07:00
Makefile 2020 May 30 Breaking Changes Update (#9215) 2020-05-30 13:14:59 -07:00
message.mk 2020 May 30 Breaking Changes Update (#9215) 2020-05-30 13:14:59 -07:00
nose2.cfg Setup a python test framework 2019-09-07 07:58:41 -07:00
readme.md Breaking Changes documentation fixes 2020-02-29 12:30:38 -08:00
requirements-dev.txt Use milc for config check, requirements fixes 2020-04-08 09:31:14 -07:00
requirements.txt CLI: Add development mode support 2020-04-08 09:31:14 -07:00
secrets.tar.enc update building for .hex, secrets moving 2017-08-21 21:57:46 -04:00
setup.cfg Add flake8 to our test suite and fix all errors (#7379) 2019-11-20 14:54:18 -08:00
shell.nix shell.nix improvements, and fix problems on Darwin (#9551) 2020-07-08 21:50:01 +01:00
show_options.mk Remove unused LED_BREATHING_TABLE 2020-03-06 22:29:01 -08:00
testlist.mk Add basic infrastrucure for building full tests 2017-06-18 21:08:23 +03:00
Vagrantfile Remove broken example from Makefile (#9159) 2020-05-21 20:33:20 +01:00

Quantum Mechanical Keyboard Firmware

Current Version Build Status Discord Docs Status GitHub contributors GitHub forks

This is a keyboard firmware based on the tmk_keyboard firmware with some useful features for Atmel AVR and ARM controllers, and more specifically, the OLKB product line, the ErgoDox EZ keyboard, and the Clueboard product line.

Documentation

The docs are powered by Docsify and hosted on GitHub. They are also viewable offline; see Previewing the Documentation for more details.

You can request changes by making a fork and opening a pull request, or by clicking the "Edit this page" link at the bottom of any page.

Supported Keyboards

The project also includes community support for lots of other keyboards.

Maintainers

QMK is developed and maintained by Jack Humbert of OLKB with contributions from the community, and of course, Hasu. The OLKB product firmwares are maintained by Jack Humbert, the Ergodox EZ by ZSA Technology Labs, the Clueboard by Zach White, and the Atreus by Phil Hagelberg.

Official Website

qmk.fm is the official website of QMK, where you can find links to this page, the documentation, and the keyboards supported by QMK.