qmk-firmware/quantum
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
..
audio Move Audio drivers from quantum to platform drivers folder (#14308) 2021-10-06 12:01:45 +11:00
backlight fix typo in backlight code from #14439 (#14442) 2021-09-15 03:37:45 +01:00
bootmagic Fix issues with VIA EEPROM init and bring in line with eeconfig functionality (#13243) 2021-08-20 21:02:53 -07:00
debounce Manually format develop (#15003) 2021-11-01 19:18:33 +00:00
keymap_extras Basic keycode overhaul (#14726) 2021-11-03 22:22:17 -07:00
led_matrix Fixup LED matrix. (#15020) 2021-11-02 10:05:42 +00:00
logging Move print/debug files to quantum (#12069) 2021-08-03 18:49:33 +01:00
process_keycode Merge remote-tracking branch 'origin/master' into develop 2021-11-13 09:32:14 -08:00
rgb_matrix Add Pixel Rain RGB Matrix effect (#14155) 2021-11-02 10:40:25 +11:00
rgblight Merge remote-tracking branch 'upstream/master' into develop 2021-07-25 12:17:15 +10:00
sequencer Remove SERIAL_LINK feature (#14727) 2021-10-07 12:32:05 +11:00
split_common Manually format develop (#15003) 2021-11-01 19:18:33 +00:00
action.c Basic keycode overhaul (#14726) 2021-11-03 22:22:17 -07:00
action.h Manually format develop (#15003) 2021-11-01 19:18:33 +00:00
action_code.h Migrate platform independent code from tmk_core -> quantum (#13673) 2021-08-18 00:18:58 +01:00
action_layer.c Migrate platform independent code from tmk_core -> quantum (#13673) 2021-08-18 00:18:58 +01:00
action_layer.h Migrate platform independent code from tmk_core -> quantum (#13673) 2021-08-18 00:18:58 +01:00
action_macro.c Migrate platform independent code from tmk_core -> quantum (#13673) 2021-08-18 00:18:58 +01:00
action_macro.h Migrate platform independent code from tmk_core -> quantum (#13673) 2021-08-18 00:18:58 +01:00
action_tapping.c Manually format develop (#15003) 2021-11-01 19:18:33 +00:00
action_tapping.h Migrate platform independent code from tmk_core -> quantum (#13673) 2021-08-18 00:18:58 +01:00
action_util.c Fix issues with Oneshot disabling (#14934) 2021-11-01 09:41:24 -07:00
action_util.h Migrate platform independent code from tmk_core -> quantum (#13673) 2021-08-18 00:18:58 +01:00
bitwise.c Migrate some tmk_core files to quantum (#11791) 2021-02-07 23:16:15 +00:00
bitwise.h Migrate some tmk_core files to quantum (#11791) 2021-02-07 23:16:15 +00:00
color.c Add support for hsv->rgb conversion without using CIE curve. (#9856) 2020-08-29 14:30:02 -07:00
color.h Relocate RGB/HSV color defs to a more fitting place (#13377) 2021-06-29 19:15:58 +01:00
command.c [Bug] Fix command feature if mousekey is enabled and using 3-speed setting (#14697) 2021-10-05 17:50:23 -07:00
command.h Refactor quantum/command.{c,h} for code size & {read,maintain}ability (#11842) 2021-08-07 17:12:57 +10:00
config_common.h Remove deprecated KEYMAP alias (#15037) 2021-11-03 12:18:11 +11:00
crc.c Add CRC8 calculation subsystem to quantum (#12641) 2021-06-18 00:09:43 +01:00
crc.h Add CRC8 calculation subsystem to quantum (#12641) 2021-06-18 00:09:43 +01:00
debounce.h Avoid 8-bit timer overflows in debounce algorithms (#12240) 2021-06-09 17:23:21 +10:00
deferred_exec.c Add support for deferred executors. (#14859) 2021-11-15 18:21:09 +00:00
deferred_exec.h Add support for deferred executors. (#14859) 2021-11-15 18:21:09 +00:00
digitizer.c Digitizer HID interface : absolute coordinates for mouse cursor (#12851) 2021-08-18 04:52:44 +10:00
digitizer.h Digitizer HID interface : absolute coordinates for mouse cursor (#12851) 2021-08-18 04:52:44 +10:00
dip_switch.c Align DIP_SWITCH_PINS_RIGHT implementation with encoders (#14079) 2021-08-20 10:15:11 +01:00
dip_switch.h Convert Dip Switch callbacks to boolean functions (#13399) 2021-07-01 08:22:21 -07:00
dynamic_keymap.c Improve EEPROM defaults for Dynamic Keymaps (#12853) 2021-05-10 15:37:36 -07:00
dynamic_keymap.h clang-format changes 2019-08-30 15:01:52 -07:00
dynamic_macro.h [Core] Convert Dynamic Macro to a Core Feature (#5948) 2019-11-04 22:59:13 -08:00
eeconfig.c Migrate STM32_EEPROM_ENABLE to use EEPROM_DRIVER (#14433) 2021-09-15 01:21:36 -07:00
eeconfig.h Reuse of EEPROM debounce logic (#14699) 2021-10-07 01:47:14 +01:00
encoder.c Allow for removal of hysteresis on 4x encoders (#13698) 2021-08-18 09:40:00 +10:00
encoder.h 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
haptic.c haptic: Feature to disable it when usb port is not configured or suspended. (#12692) 2021-11-02 16:54:29 +11:00
haptic.h haptic: Feature to disable it when usb port is not configured or suspended. (#12692) 2021-11-02 16:54:29 +11:00
joystick.c Hid joystick interface (#4226) 2020-08-29 14:30:02 -07:00
joystick.h 2020 November 28 Breaking Changes Update (#11053) 2020-11-28 12:02:18 -08:00
keyboard.c Fix develop after recent changes (#14975) 2021-10-28 23:43:57 +01:00
keyboard.h Migrate platform independent code from tmk_core -> quantum (#13673) 2021-08-18 00:18:58 +01:00
keycode.h Basic keycode overhaul (#14726) 2021-11-03 22:22:17 -07:00
keycode_config.c Basic keycode overhaul (#14726) 2021-11-03 22:22:17 -07:00
keycode_config.h 2021 May 29 Breaking Changes Update (#13034) 2021-05-29 14:38:50 -07:00
keycode_legacy.h Basic keycode overhaul (#14726) 2021-11-03 22:22:17 -07:00
keymap.h Revert 14083 && 14144 (#14150) 2021-08-25 01:16:59 +01:00
keymap_common.c Basic keycode overhaul (#14726) 2021-11-03 22:22:17 -07:00
led.c Ensure single newline at EOF for core files (#11310) 2020-12-28 04:36:32 +11:00
led.h Migrate some tmk_core files to quantum (#11791) 2021-02-07 23:16:15 +00:00
led_tables.c Remove unused LED_BREATHING_TABLE 2020-03-06 22:29:01 -08:00
led_tables.h Change include guards in quantum/ to pragma once (#11239) 2020-12-26 15:53:12 +11:00
main.c Add support for deferred executors. (#14859) 2021-11-15 18:21:09 +00:00
matrix.c Optimize matrix scanning by removing variable shifts (#14947) 2021-10-26 20:01:57 -07:00
matrix.h Change the prototype of matrix_output_unselect_delay() (#13045) 2021-07-13 16:50:25 +09:00
matrix_common.c Change the prototype of matrix_output_unselect_delay() (#13045) 2021-07-13 16:50:25 +09:00
mousekey.c mousekey: expose current report to users (#13069) 2021-07-03 00:50:47 -07:00
mousekey.h mousekey: expose current report to users (#13069) 2021-07-03 00:50:47 -07:00
pointing_device.c Add needed include to pointing_device.c (#15167) 2021-11-16 04:09:31 +11:00
pointing_device.h Rework and expand Pointing Device support (#14343) 2021-11-14 22:03:24 -08:00
pointing_device_drivers.c Rework and expand Pointing Device support (#14343) 2021-11-14 22:03:24 -08:00
programmable_button.c Add Support for USB programmable buttons (#12950) 2021-09-15 08:40:22 -07:00
programmable_button.h Add Support for USB programmable buttons (#12950) 2021-09-15 08:40:22 -07:00
quantum.c Rework and expand Pointing Device support (#14343) 2021-11-14 22:03:24 -08:00
quantum.h Add support for deferred executors. (#14859) 2021-11-15 18:21:09 +00:00
quantum_keycodes.h Basic keycode overhaul (#14726) 2021-11-03 22:22:17 -07:00
raw_hid.h Relocate protocol files within tmk_core/common/ (#14972) 2021-10-28 22:31:59 +01:00
ring_buffer.h Migrate some tmk_core files to quantum (#11791) 2021-02-07 23:16:15 +00:00
send_string.c Move SENDSTRING_BELL code to send_string.h (#13566) 2021-07-16 09:40:20 -07:00
send_string.h Remove hex_to_keycode and move tap_random_base64 to send_string.c (#12079) 2021-03-12 18:03:44 +11:00
send_string_keycodes.h Workaround for recent changes to mouse keycodes (#12367) 2021-03-24 19:38:35 +00:00
sync_timer.c Relocate protocol files within tmk_core/common/ (#14972) 2021-10-28 22:31:59 +01:00
sync_timer.h Relocate protocol files within tmk_core/common/ (#14972) 2021-10-28 22:31:59 +01:00
util.h Migrate some tmk_core files to quantum (#11791) 2021-02-07 23:16:15 +00:00
variable_trace.c clang-format changes 2019-08-30 15:01:52 -07:00
variable_trace.h Change include guards in quantum/ to pragma once (#11239) 2020-12-26 15:53:12 +11:00
velocikey.c clang-format changes 2019-08-30 15:01:52 -07:00
velocikey.h Change include guards in quantum/ to pragma once (#11239) 2020-12-26 15:53:12 +11:00
via.c Fix issues with VIA EEPROM init and bring in line with eeconfig functionality (#13243) 2021-08-20 21:02:53 -07:00
via.h Fix issues with VIA EEPROM init and bring in line with eeconfig functionality (#13243) 2021-08-20 21:02:53 -07:00
via_ensure_keycode.h Basic keycode overhaul (#14726) 2021-11-03 22:22:17 -07:00
virtser.h Relocate protocol files within tmk_core/common/ (#14972) 2021-10-28 22:31:59 +01:00
wpm.c Reimplements WPM feature to be smaller & precise (#13902) 2021-11-16 05:40:52 +11:00
wpm.h Reimplements WPM feature to be smaller & precise (#13902) 2021-11-16 05:40:52 +11:00