7fbe6c3594
With these changes, the ergodox ez goes from 315 scans per second when no keys are pressed (~3.17ms/scan) to 447 (~2.24ms/scan). The changes to the pin read are just condensing the logic, and replacing a lot of conditional operations with a single bitwise inversion. The change to row scanning is more significant, and merits explanation. In general, you can only scan one row of a keyboard at a time, because if you scan two rows, you no longer know which row is pulling a given column down. But in the Ergodox design, this isn't the case; the left hand is controlled by an I2C-based GPIO expander, and the columns and rows are *completely separate* electrically from the columns and rows on the right-hand side. So simply reading rows in parallel offers two significant improvements. One is that we no longer need the 30us delay after each right-hand row, because we're spending more than 30us communicating with the left hand over i2c. Another is that we're no longer wastefully sending i2c messages to the left hand to unselect rows when no rows had actually been selected in the first place. These delays were, between them, coming out to nearly 30% of the time spent in each scan. Signed-off-by: seebs <seebs@seebs.net> |
7 years ago | |
---|---|---|
.vscode | 7 years ago | |
docs | 7 years ago | |
drivers | 7 years ago | |
keyboards | 7 years ago | |
layouts | 7 years ago | |
lib | 7 years ago | |
quantum | 7 years ago | |
tests | 8 years ago | |
tmk_core | 7 years ago | |
users | 7 years ago | |
util | 7 years ago | |
.editorconfig | 7 years ago | |
.gitattributes | 8 years ago | |
.gitignore | 7 years ago | |
.gitmodules | 7 years ago | |
.travis.yml | 7 years ago | |
CODE_OF_CONDUCT.md | 8 years ago | |
Dockerfile | 7 years ago | |
LICENSE | 7 years ago | |
Makefile | 7 years ago | |
Vagrantfile | 9 years ago | |
autocomplete.sh | 7 years ago | |
book.json | 7 years ago | |
build_full_test.mk | 8 years ago | |
build_keyboard.mk | 7 years ago | |
build_layout.mk | 7 years ago | |
build_test.mk | 8 years ago | |
common.mk | 8 years ago | |
common_features.mk | 7 years ago | |
lcd_backlight_keyframes.h | 8 years ago | |
license_GPLv2.md | 8 years ago | |
license_GPLv3.md | 8 years ago | |
license_Modified_BSD.md | 8 years ago | |
message.mk | 7 years ago | |
readme.md | 7 years ago | |
secrets.tar.enc | 7 years ago | |
shell.nix | 7 years ago | |
testlist.mk | 8 years ago |
readme.md
Quantum Mechanical Keyboard Firmware
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.
Official website
http://qmk.fm is the official website of QMK, where you can find links to this page, the documentation, and the keyboards supported by QMK.
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 Erez Zukerman, and the Clueboard by Zach White.
Documentation
https://docs.qmk.fm is hosted on Gitbook and GitHub (they are synced). You can request changes by making a fork and pull request, or by clicking the "suggest an edit" link on any page of the Docs.