Go to file
vectorstorm c9fd698711
Reimplements WPM feature to be smaller & precise (#13902)
* Reimplements WPM feature.

 - Now calculates exact WPM over the last up to three seconds of typing.
 - WPM_SMOOTHING removed, as it's no longer needed.
 - WPM_SAMPLE_SECONDS added, to specify how long a period to average WPM
   over, set to 5 seconds by default.
 - WPM_SAMPLE_PERIODS added, to specify how many sampling buffers we'll
   use.  Each one uses one extra byte of space.  Having more will lead
   to smoother decay of WPM values.  Defaults to 50 (we're saving so
   many bytes of firmware space I felt like being extravagent, and this
   change is still a big size saving overall)
 - WPM_UNFILTERED option added (defaults to unset), which disables all
   filtering within the WPM feature.  This saves some space in the
   firmware and also reduces latency between typing and the WPM
   calculation measuring it.  (saves 70 bytes in my tests)
 - WPM_LAUNCH_CONTROL added (defaults to unset).  When typing begins
   while the current displayed WPM value is zero, the WPM calculation
   only considers the time elapsed since typing began, not the whole
   WPM_SAMPLE_SECONDS buffer.  The result of this is that the displayed
   WPM value much more rapidly reaches an accurate WPM value, even when
   results are being filtered. (costs 22 bytes in my tests)
 - Updates documentation to reflect changed options.

Saves about 900 bytes, in my tests, compared against the previous implementation,
with default settings.

* Apply suggestions from code review

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>

Co-authored-by: Trevor Powell <trevor@vectorstorm.org>
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
2021-11-16 05:40:52 +11:00
.github Merge remote-tracking branch 'origin/master' into develop 2021-11-14 23:06:50 +00:00
.vscode remove Bracket Pair Colorizer recommendation (#14816) 2021-10-15 11:54:19 +11:00
api_data Generate api data on each push (#10609) 2020-10-25 14:48:44 -07:00
builddefs Add support for deferred executors. (#14859) 2021-11-15 18:21:09 +00:00
data Merge remote-tracking branch 'origin/master' into develop 2021-11-04 21:15:20 +00:00
docs Reimplements WPM feature to be smaller & precise (#13902) 2021-11-16 05:40:52 +11:00
drivers Rework and expand Pointing Device support (#14343) 2021-11-14 22:03:24 -08:00
keyboards Rework and expand Pointing Device support (#14343) 2021-11-14 22:03:24 -08:00
layouts Rework and expand Pointing Device support (#14343) 2021-11-14 22:03:24 -08:00
lib Merge remote-tracking branch 'origin/master' into develop 2021-11-14 23:06:50 +00:00
platforms Fix uart function prototypes (#15162) 2021-11-15 20:15:45 +11:00
quantum Reimplements WPM feature to be smaller & precise (#13902) 2021-11-16 05:40:52 +11:00
tests Basic keycode overhaul (#14726) 2021-11-03 22:22:17 -07:00
tmk_core Add support for deferred executors. (#14859) 2021-11-15 18:21:09 +00:00
users Merge remote-tracking branch 'origin/master' into develop 2021-11-10 14:10:35 +00:00
util Update to ChibiOS 20.3.4, support builds against trunk (#14208) 2021-11-03 08:26:40 +11: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 [nix] Use niv and poetry2nix to more easily manage dependencies (#11181) 2021-04-03 08:05:46 -07:00
.gitignore New CLI subcommand to create clang-compatible compilation database (`compile_commands.json`) (#14370) 2021-09-16 14:59:57 +10:00
.gitmodules Purge uGFX. (#14720) 2021-10-07 10:57:48 +11:00
Dockerfile move everything from qmkfm/base_container to qmkfm/qmk_cli (#14230) 2021-08-29 16:41:56 -07:00
Doxyfile 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
Makefile Migrate makefile utilities to sub-directory (#14917) 2021-10-28 01:07:53 +01:00
Vagrantfile move everything from qmkfm/base_container to qmkfm/qmk_cli (#14230) 2021-08-29 16:41:56 -07:00
book.json adds redirects for docs 2017-08-19 08:31:54 -04:00
build_full_test.mk Ensure single newline at EOF for core files (#11310) 2020-12-28 04:36:32 +11:00
build_json.mk Add config.h and rules.mk support for data driven keymaps (#12859) 2021-08-18 21:52:41 +01:00
build_keyboard.mk Migrate makefile utilities to sub-directory (#14917) 2021-10-28 01:07:53 +01:00
build_layout.mk Add config.h and rules.mk support for data driven keymaps (#12859) 2021-08-18 21:52:41 +01:00
build_test.mk Fix develop after recent changes (#14975) 2021-10-28 23:43:57 +01:00
common_features.mk Rework and expand Pointing Device support (#14343) 2021-11-14 22:03:24 -08:00
doxygen-todo Remove SERIAL_LINK feature (#14727) 2021-10-07 12:32:05 +11:00
license_GPLv2.md
license_GPLv3.md
license_Modified_BSD.md
nose2.cfg Setup a python test framework 2019-09-07 07:58:41 -07:00
paths.mk Update UART driver API (#14839) 2021-11-13 18:23:14 +00:00
readme.md [Core] [Docs] Remove travis-ci references (#13916) 2021-08-20 23:31:26 +01:00
requirements-dev.txt Move hid and pyusb to requirements.txt (#13134) 2021-06-07 16:30:55 -07:00
requirements.txt switch to qmk-dotty-dict (#13460) 2021-07-14 09:08:48 -07:00
setup.cfg Use the schema to eliminate custom code (#11108) 2021-01-09 13:34:14 -08:00
shell.nix Remove bin/qmk (#14231) 2021-08-29 16:50:22 -07:00
testlist.mk Remove SERIAL_LINK feature (#14727) 2021-10-07 12:32:05 +11:00

readme.md

Quantum Mechanical Keyboard Firmware

Current Version 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.