feat(kscan): Improve matrix debouncing
Switched the GPIO matrix driver to debouncing using a simple integrator algorithm. Whenever a key is pressed, we now scan at a rate controlled by debounce-scan-period-ms (default 1 ms) until all keys are released, then return to either waiting for an interrupt or polling more slowly. The timers for key press and release can now be controlled separately, so debounce-period is deprecated in favor of debounce-press-ms and debounce-release-ms. Global Kconfig options ZMK_KSCAN_DEBOUNCE_PRESS_MS and ZMK_KSCAN_DEBOUNCE_RELEASE_MS are also added to make these easier to set. Added documentation for debouncing options.
This commit is contained in:
parent
5cc7c280a5
commit
f946dc6893
8 changed files with 348 additions and 64 deletions
|
|
@ -14,6 +14,24 @@ config ZMK_KSCAN_MATRIX_POLLING
|
|||
config ZMK_KSCAN_DIRECT_POLLING
|
||||
bool "Poll for key event triggers instead of using interrupts on direct wired boards."
|
||||
|
||||
config ZMK_KSCAN_DEBOUNCE_PRESS_MS
|
||||
int "Debounce time for key press in milliseconds."
|
||||
default -1
|
||||
help
|
||||
Global debounce time for key press in milliseconds.
|
||||
If this is -1, the debounce time is controlled by the debounce-press-ms
|
||||
Devicetree property, which defaults to 5 ms. Otherwise this overrides the
|
||||
debounce time for all key scan drivers to the chosen value.
|
||||
|
||||
config ZMK_KSCAN_DEBOUNCE_RELEASE_MS
|
||||
int "Debounce time for key release in milliseconds."
|
||||
default -1
|
||||
help
|
||||
Global debounce time for key release in milliseconds.
|
||||
If this is -1, the debounce time is controlled by the debounce-release-ms
|
||||
Devicetree property, which defaults to 5 ms. Otherwise this overrides the
|
||||
debounce time for all key scan drivers to the chosen value.
|
||||
|
||||
endif
|
||||
|
||||
config ZMK_KSCAN_INIT_PRIORITY
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue