forked from mirrors/qmk_firmware
b8c3f4c60b
* quantum/debounce: Added sym_pk debounce algorithm * Apply suggestions from code review Co-Authored-By: Ryan <fauxpark@gmail.com> * quantum/debounce/sym_pk: delete comments and rename functions following code review * quantum/debounce/sym_pk: Modifications for code readability according to code review * quantum/debounce/sym_pk: Modifications for code readability according to code review (2) * quantum/debounce/sym_pk: code review: cleaner code Co-Authored-By: Nick Brassel <nick@tzarc.org> Co-authored-by: Ryan <fauxpark@gmail.com> Co-authored-by: Nick Brassel <nick@tzarc.org> |
||
---|---|---|
.. | ||
eager_pk.c | ||
eager_pr.c | ||
readme.md | ||
sym_g.c | ||
sym_pk.c |
Debounce algorithms belong in this folder. Here are a few ideas
- Global vs Per-Key vs Per-Row
- Global - one timer for all keys. Any key change state affects global timer
- Per key - one timer per key
- Per row - one timer per row
- Eager vs symmetric vs asymmetric
- Eager - any key change is reported immediately. All further inputs for DEBOUNCE ms are ignored.
- Symmetric - wait for no changes for DEBOUNCE ms before reporting change
- Asymmetric - wait for different times depending on key-down/key-up. E.g. Eager key-down, DEBOUNCE ms key up.
- Timestamp vs cycles
- old old old code waits n cycles, decreasing count by one each matrix_scan
- newer code stores the millisecond the change occurred, and does subraction to figure out time elapsed.
- Timestamps are superior, i don't think cycles will ever be used again once upgraded.
The default algorithm is symmetric and global. Here are a few that could be implemented:
sym_g.c sym_pk.c sym_pr.c sym_pr_cycles.c eager_g.c eager_pk.c eager_pr.c //could be used in ergo-dox!