summaryrefslogtreecommitdiff
path: root/quantum/debounce/readme.md
blob: f77f78c764f94c727ecf2a3a6d905ba4412634ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Debounce algorithms belong in this folder.
Here are a few ideas

1) 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

2) 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.

3) 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!