Open-source keyboard firmware for Atmel AVR and Arm USB families https://qmk.fm
Go to file
Seebs 7fbe6c3594 improve ergodox ez performance
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>
2017-11-26 02:07:06 -05:00
.vscode Add EditorConfig file (#1930) 2017-10-31 11:13:40 -04:00
docs Update config_options.md 2017-11-21 21:26:29 -05:00
drivers update to driver separation 2017-09-15 21:43:58 -04:00
keyboards improve ergodox ez performance 2017-11-26 02:07:06 -05:00
layouts qwerty_code_friendly: Expose caps-lock & fix typo 2017-11-09 23:13:56 +11:00
lib update chibios 2017-11-17 11:40:13 -05:00
quantum adds planck light keyboard 2017-11-20 23:37:38 -05:00
tests Fix unreferenced errors with mingw compiler and unit tests 2017-07-11 19:41:04 +03:00
tmk_core I found a typo! 2017-11-22 11:40:46 -05:00
users Update to drashna keymaps (#4) 2017-11-17 20:48:26 -05:00
util adds planck light keyboard 2017-11-20 23:37:38 -05:00
.editorconfig Add EditorConfig file (#1930) 2017-10-31 11:13:40 -04:00
.gitattributes Set eep files to binary mode 2016-08-27 18:37:28 +03:00
.gitignore 333fred layout update (#1971) 2017-11-06 12:09:01 -05:00
.gitmodules Update .gitmodules 2017-11-16 15:09:45 -05:00
.travis.yml add qmk.fm as a backup host 2017-10-15 13:37:46 -04:00
autocomplete.sh Make arguments redo, subproject elimination (#1784) 2017-10-14 11:32:19 -10:00
book.json adds redirects for docs 2017-08-19 08:31:54 -04:00
build_full_test.mk Add SRC and OPT_DEFS when building tests 2017-07-20 10:17:31 -04:00
build_keyboard.mk QMK DFU bootloader generation (#2009) 2017-11-14 16:11:29 -05:00
build_layout.mk Creates a layouts/ folder for keymaps shared between keyboards (#1609) 2017-08-23 22:29:07 -04:00
build_test.mk Split common.mk into common.mk and common_features.mk 2017-06-18 21:22:22 +03:00
CODE_OF_CONDUCT.md create initial code of conduct 2017-06-27 21:36:44 -04:00
common_features.mk Fix pointing device feature 2017-10-31 20:59:55 -04:00
common.mk Start mvoing hardware drivers to /drivers/ (#1433) 2017-07-10 11:18:47 -04:00
Dockerfile Reverting CMD Changes 2017-08-19 08:17:58 -04:00
lcd_backlight_keyframes.h Clarify naming between LCD_BACKLIGHT and LED_BACKLIGHT 2017-07-10 09:01:59 -04: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 update version silencing 2017-11-14 22:56:29 -05:00
message.mk Clone chibios and ugfx if it's not already checked out. (#1651) 2017-09-06 15:21:31 -07:00
readme.md Improvements to documentation (#1919) 2017-11-01 11:21:54 -04:00
secrets.tar.enc update building for .hex, secrets moving 2017-08-21 21:57:46 -04:00
shell.nix Add shell.nix for NixOS users 2017-09-25 13:14:20 -04:00
testlist.mk Add basic infrastrucure for building full tests 2017-06-18 21:08:23 +03:00
Vagrantfile Update some obsolete references 2016-07-30 08:37:30 +02:00

Quantum Mechanical Keyboard Firmware

Current Version Build Status Gitter 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.

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.