Go to file
Ted M Lin 552f8d81b9
Reduce PROGMEM usage for sendstring LUT (#8109)
* Reduce PROGMEM usage for keycode map

Bit-pack the keycode bool array to gain back a small amount of flash space.
The trade-off is an increase in runtime instructions when running macros.

It does make the code a bit harder to read, as well as maintain.

For configs that use send_string() et al, it saves ~100 bytes.

* Switch to macro and common definition

Rewrite the array declarations so both the unpacked (original) and
packed LUT arrays can use the same value definitions. This is done by
defining a macro that "knows what to do".

This makes the code much easier to read and maintain.

* Fix macro typos and improve perf

Pack the bits in a more efficient order for extraction.
And also fix the copy/paste error in the macro...

* Switch fully to packed LUT

Some minor reformatting.
Compile tested all sendstring_xyz.h to make sure they were converted
properly. Also checked that an unconverted version would generate a
compile error.

* Apply whitespace suggestions from code review

Co-Authored-By: Ryan <fauxpark@gmail.com>

Co-authored-by: Ryan <fauxpark@gmail.com>
2020-03-03 10:43:18 +11:00
.github CI: Add workflow for CLI testing (#7357) 2020-02-08 13:43:55 +01:00
.vscode 2020 February 29 Breaking Changes Update (#8064) 2020-02-29 11:59:30 -08:00
bin Add pep8-naming to our python linting 2019-12-01 13:40:14 -08:00
docs [Docs] Update ISP Flashing guide (#8149) 2020-03-01 22:29:26 -08:00
drivers Clean up includes for glcdfont headers (#7745) 2020-03-01 17:56:50 +11:00
keyboards Rewrite the Bathroom Epiphanies Frosty Flake matrix and LED handling (#8243) 2020-03-02 05:17:09 +00:00
layouts 2020 February 29 Breaking Changes Update (#8064) 2020-02-29 11:59:30 -08:00
lib 2020 February 29 Breaking Changes Update (#8064) 2020-02-29 11:59:30 -08:00
quantum Reduce PROGMEM usage for sendstring LUT (#8109) 2020-03-03 10:43:18 +11:00
tests
tmk_core format code according to conventions [skip ci] 2020-03-01 19:20:09 +00:00
users Clean up includes for glcdfont headers (#7745) 2020-03-01 17:56:50 +11:00
util Allow for ChibiOS 20.x (master), as well as enabling ChibiOS-Contrib HAL. (#8272) 2020-03-01 11:50:49 +11:00
.clang_complete
.clang-format
.editorconfig
.gitattributes
.gitignore 2020 February 29 Breaking Changes Update (#8064) 2020-02-29 11:59:30 -08:00
.gitmodules Track master branches for lib/chibios, lib/chibios-contrib, lib/ugfx. (#8273) 2020-03-01 11:51:38 +11:00
.travis.yml Fix unknown key 'IndentPPDirectives' on CI (#7933) 2020-01-19 13:59:57 -08:00
autocomplete.sh
book.json
bootloader.mk Add LUFA mass storage BOOTLOADER "support" (#7729) 2019-12-29 20:53:23 +00:00
build_full_test.mk
build_json.mk Add JSON keymap to prereq list of C keymap 2019-12-08 15:13:47 -08:00
build_keyboard.mk
build_layout.mk
build_test.mk
CODE_OF_CONDUCT.md
common_features.mk 2020 February 29 Breaking Changes Update (#8064) 2020-02-29 11:59:30 -08:00
common.mk
Dockerfile
Doxyfile
doxygen-todo Remove PJRC USB stack 2020-02-08 11:07:43 -08:00
LICENSE
license_GPLv2.md
license_GPLv3.md
license_Modified_BSD.md
Makefile 2020 February 29 Breaking Changes Update (#8064) 2020-02-29 11:59:30 -08:00
message.mk Use FIRMWARE_FORMAT for "Checking file size" message (#8121) 2020-02-10 04:19:08 +11:00
nose2.cfg
readme.md Breaking Changes documentation fixes 2020-02-29 12:30:38 -08:00
requirements.txt Drop bs4 dependency, update docs, minor improvements 2020-02-15 15:19:03 -08:00
secrets.tar.enc
setup.cfg
shell.nix
show_options.mk Fix AVR boards which were overriding backlight without setting… (#8044) 2020-01-31 10:44:40 +11:00
testlist.mk
Vagrantfile

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.