]> git.donarmstrong.com Git - qmk_firmware.git/blob - quantum/debounce/readme.md
Eager Per Row Debouncing added (added to Ergodox) (#5498)
[qmk_firmware.git] / quantum / debounce / readme.md
1 Debounce algorithms belong in this folder.
2 Here are a few ideas
3
4 1) Global vs Per-Key vs Per-Row
5  * Global - one timer for all keys. Any key change state affects global timer
6  * Per key - one timer per key
7  * Per row - one timer per row
8
9 2) Eager vs symmetric vs asymmetric
10  * Eager - any key change is reported immediately. All further inputs for DEBOUNCE ms are ignored.
11  * Symmetric - wait for no changes for DEBOUNCE ms before reporting change
12  * Asymmetric - wait for different times depending on key-down/key-up. E.g. Eager key-down, DEBOUNCE ms key up.
13
14 3) Timestamp vs cycles
15  * old old old code waits n cycles, decreasing count by one each matrix_scan
16  * newer code stores the millisecond the change occurred, and does subraction to figure out time elapsed.
17  * Timestamps are superior, i don't think cycles will ever be used again once upgraded.
18
19 The default algorithm is symmetric and global.
20 Here are a few that could be implemented:
21
22 sym_g.c
23 sym_pk.c
24 sym_pr.c
25 sym_pr_cycles.c 
26 eager_g.c
27 eager_pk.c
28 eager_pr.c //could be used in ergo-dox!