Open-source keyboard firmware for Atmel AVR and Arm USB families https://qmk.fm
Go to file
Seebs c0baf2a964 Improve state/chord handling and clean up namespace
Some values that can never, ever, change were held in local
variables, rather than in PROGMEM. Fixed.

Change "pressed" to a signed int so the test for < 0 makes
sense, and to avoid possible weird failure modes in the
case where a key release comes in when pressed is already
zero. (Shouldn't happen, sure, but computers are weird.)

A lot of things in process_steno had external linkage for no
particular reason. They've been marked static. Stuff still
builds.

Distinguish between currently-held keys and keys that have
been held, and expose these values through a nicely-named API
so other code could, say, check on the current set of steno
chording in order to make displays. Also in passing fix up the
"state" value having external linkage so it could clash with
other people's variable declarations.

The API also provides hooks for key processing and steno chord
events, so you can monitor those events without having to
run in matrix_scan_user and recheck the values directly. Also
document these.

There is no path through processing a key that doesn't
end with a return false, so the nested return foo() are
gone and we just return false.
2018-04-07 17:12:44 -04:00
.vscode Add EditorConfig file (#1930) 2017-10-31 11:13:40 -04:00
docs Improve state/chord handling and clean up namespace 2018-04-07 17:12:44 -04:00
drivers Update whitefox to use the K-Type teensy workaround 2018-04-03 23:06:14 -04:00
keyboards Fix some Configurator Warnings regarding LAYOUT vs KEYMAP (#2708) 2018-04-07 15:14:53 -04:00
layouts Zweihander: swap space and enter keys (#2665) 2018-04-04 09:18:15 -07:00
lib Merge ChibiOS and LUFA descriptor support (#2362) 2018-02-08 15:07:46 -05:00
quantum Improve state/chord handling and clean up namespace 2018-04-07 17:12:44 -04:00
tests add tests for action_layer.c and reset layer state after tests 2017-12-15 13:23:30 -05:00
tmk_core Update whitefox to use the K-Type teensy workaround 2018-04-03 23:06:14 -04:00
users Add userspace config.h handling to build script (#2640) 2018-04-01 00:02:40 -04:00
util Hopefully fix Travis Auto-Incrementation 2018-03-29 18:18:50 -04:00
.clang_complete Vim Layout for Ergodox-EZ (mac only) (#2112) 2017-12-11 21:06:05 -05:00
.editorconfig Fix .editorconfig to not mess with line endings 2018-02-03 15:20:44 -05:00
.gitattributes Set eep files to binary mode 2016-08-27 18:37:28 +03:00
.gitignore Generate API docs from source code comments (#2491) 2018-03-22 02:50:38 -04:00
.gitmodules Update .gitmodules 2017-11-16 15:09:45 -05:00
.travis.yml Generate API docs from source code comments (#2491) 2018-03-22 02:50:38 -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
bootloader.mk Updates bootloader settings, adds file size check (#2029) 2017-11-27 23:08:21 -05:00
build_full_test.mk Add SRC and OPT_DEFS when building tests 2017-07-20 10:17:31 -04:00
build_keyboard.mk Update whitefox to use the K-Type teensy workaround 2018-04-03 23:06:14 -04: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 Rule to enable Modifiers with Auto-Shift (#2542) 2018-03-16 16:41:01 -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
Doxyfile Generate API docs from source code comments (#2491) 2018-03-22 02:50:38 -04:00
doxygen-todo Generate API docs from source code comments (#2491) 2018-03-22 02:50:38 -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 Added a clean target to remove build artifacts 2018-03-16 16:44:22 -04:00
message.mk Reset color after submodule warning message 2018-01-12 13:25:05 -05:00
readme.md Found some broken links while looking up ARM keyboard support 2017-12-15 13:23:52 -05:00
secrets.tar.enc update building for .hex, secrets moving 2017-08-21 21:57:46 -04:00
shell.nix shell.nix: add teensy loader 2017-11-26 17:55:24 -05: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.