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
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
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
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
action_layer.h
action_macro.c
action_macro.h
action_tapping.c Manually format develop (#15003) 2021-11-01 19:18:33 +00:00
action_tapping.h
action_util.c Fix issues with Oneshot disabling (#14934) 2021-11-01 09:41:24 -07:00
action_util.h
bitwise.c
bitwise.h
color.c
color.h
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
config_common.h Remove deprecated KEYMAP alias (#15037) 2021-11-03 12:18:11 +11:00
crc.c
crc.h
debounce.h
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.h
dip_switch.c
dip_switch.h
dynamic_keymap.c
dynamic_keymap.h
dynamic_macro.h
eeconfig.c
eeconfig.h Reuse of EEPROM debounce logic (#14699) 2021-10-07 01:47:14 +01:00
encoder.c
encoder.h
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
joystick.h
keyboard.c Fix develop after recent changes (#14975) 2021-10-28 23:43:57 +01:00
keyboard.h
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
keycode_legacy.h Basic keycode overhaul (#14726) 2021-11-03 22:22:17 -07:00
keymap.h
keymap_common.c Basic keycode overhaul (#14726) 2021-11-03 22:22:17 -07:00
led.c
led.h
led_tables.c
led_tables.h
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
matrix_common.c
mousekey.c
mousekey.h
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
programmable_button.h
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
send_string.c
send_string.h
send_string_keycodes.h
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
variable_trace.c
variable_trace.h
velocikey.c
velocikey.h
via.c
via.h
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