diff options
Diffstat (limited to 'tmk_core/common/debounce/readme.md')
| -rw-r--r-- | tmk_core/common/debounce/readme.md | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/tmk_core/common/debounce/readme.md b/tmk_core/common/debounce/readme.md new file mode 100644 index 000000000..1a77d44df --- /dev/null +++ b/tmk_core/common/debounce/readme.md | |||
| @@ -0,0 +1,28 @@ | |||
| 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 assymetric | ||
| 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 | * Assymetric - 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 | debounce_sym_g.c | ||
| 23 | debounce_sym_pk.c | ||
| 24 | debounce_sym_pr.c | ||
| 25 | debounce_sym_pr_cycles.c //currently used in ergo-dox | ||
| 26 | debounce_eager_g.c | ||
| 27 | debounce_eager_pk.c | ||
| 28 | debounce_eager_pr.c //could be used in ergo-dox! | ||
