aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorJames Churchill <pelrun@gmail.com>2019-03-05 01:44:46 +1000
committerMechMerlin <30334081+mechmerlin@users.noreply.github.com>2019-03-04 07:44:46 -0800
commitc7c4937eef9cb34b73e765390b842282ad9f0544 (patch)
tree2e2582abe4273e3acf7125e0b8a09eb04ab04730 /docs
parentcdfcbfc92dba8198847e26056d8135a5feb0b5ec (diff)
downloadqmk_firmware-c7c4937eef9cb34b73e765390b842282ad9f0544.tar.gz
qmk_firmware-c7c4937eef9cb34b73e765390b842282ad9f0544.zip
Clean up debounce a bit (#5255)
Diffstat (limited to 'docs')
-rw-r--r--docs/config_options.md4
-rw-r--r--docs/feature_debounce_type.md31
-rw-r--r--docs/getting_started_make_guide.md4
3 files changed, 16 insertions, 23 deletions
diff --git a/docs/config_options.md b/docs/config_options.md
index 8fa6e944f..336feee8f 100644
--- a/docs/config_options.md
+++ b/docs/config_options.md
@@ -307,8 +307,8 @@ Use these to enable or disable building certain features. The more you have enab
307 * Enables split keyboard support (dual MCU like the let's split and bakingpy's boards) and includes all necessary files located at quantum/split_common 307 * Enables split keyboard support (dual MCU like the let's split and bakingpy's boards) and includes all necessary files located at quantum/split_common
308* `CUSTOM_MATRIX` 308* `CUSTOM_MATRIX`
309 * Allows replacing the standard matrix scanning routine with a custom one. 309 * Allows replacing the standard matrix scanning routine with a custom one.
310* `CUSTOM_DEBOUNCE` 310* `DEBOUNCE_TYPE`
311 * Allows replacing the standard key debouncing routine with a custom one. 311 * Allows replacing the standard key debouncing routine with an alternative or custom one.
312* `WAIT_FOR_USB` 312* `WAIT_FOR_USB`
313 * Forces the keyboard to wait for a USB connection to be established before it starts up 313 * Forces the keyboard to wait for a USB connection to be established before it starts up
314* `NO_USB_STARTUP_CHECK` 314* `NO_USB_STARTUP_CHECK`
diff --git a/docs/feature_debounce_type.md b/docs/feature_debounce_type.md
index 82b3d7de1..5d4343f08 100644
--- a/docs/feature_debounce_type.md
+++ b/docs/feature_debounce_type.md
@@ -2,45 +2,38 @@
2 2
3QMK supports multiple debounce algorithms through its debounce API. 3QMK supports multiple debounce algorithms through its debounce API.
4 4
5The underlying debounce algorithm is determined by which matrix.c file you are using.
6
7The logic for which debounce method called is below. It checks various defines that you have set in rules.mk 5The logic for which debounce method called is below. It checks various defines that you have set in rules.mk
8 6
9``` 7```
8DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce
10DEBOUNCE_TYPE?= sym_g 9DEBOUNCE_TYPE?= sym_g
11VALID_DEBOUNCE_TYPES := sym_g eager_pk custom 10ifneq ($(strip $(DEBOUNCE_TYPE)), custom)
12ifeq ($(filter $(DEBOUNCE_TYPE),$(VALID_DEBOUNCE_TYPES)),) 11 QUANTUM_SRC += $(DEBOUNCE_DIR)/$(strip $(DEBOUNCE_TYPE)).c
13 $(error DEBOUNCE_TYPE="$(DEBOUNCE_TYPE)" is not a valid debounce algorithm)
14endif
15ifeq ($(strip $(DEBOUNCE_TYPE)), sym_g)
16 QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_sym_g.c
17else ifeq ($(strip $(DEBOUNCE_TYPE)), eager_pk)
18 QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_eager_pk.c
19endif 12endif
20``` 13```
21 14
22# Debounce selection 15# Debounce selection
23 16
24| DEBOUNCE_ALGO | Description | What to do | 17| DEBOUNCE_TYPE | Description | What else is needed |
25| ------------- | --------------------------------------------------- | ----------------------------- | 18| ------------- | --------------------------------------------------- | ----------------------------- |
26| Not defined | You are using the included matrix.c and debounce.c | Nothing. Debounce_sym_g will be compiled, and used if necessary | 19| Not defined | Use the default algorithm, currently sym_g | Nothing |
27| custom | Use your own debounce.c | ```SRC += debounce.c``` add your own debounce.c and implement necessary functions | 20| custom | Use your own debounce.c | ```SRC += debounce.c``` add your own debounce.c and implement necessary functions |
28| sym_g / eager_pk | You are using the included matrix.c and debounce.c | Use an alternative debounce algorithm | 21| anything_else | Use another algorithm from quantum/debounce/* | Nothing |
29 22
30**Regarding split keyboards**: 23**Regarding split keyboards**:
31The debounce code is compatible with split keyboards. 24The debounce code is compatible with split keyboards.
32 25
33# Use your own debouncing code 26# Use your own debouncing code
34* Set ```DEBOUNCE_TYPE = custom ```. 27* Set ```DEBOUNCE_TYPE = custom ```.
35* Add ```SRC += debounce.c``` 28* Add ```SRC += debounce.c```
36* Add your own ```debounce.c```. Look at included ```debounce_sym_g.c```s for sample implementations. 29* Add your own ```debounce.c```. Look at current implementations in ```quantum/debounce``` for examples.
37* Debouncing occurs after every raw matrix scan. 30* Debouncing occurs after every raw matrix scan.
38* Use num_rows rather than MATRIX_ROWS, so that split keyboards are supported correctly. 31* Use num_rows rather than MATRIX_ROWS, so that split keyboards are supported correctly.
39 32
40# Changing between included debouncing methods 33# Changing between included debouncing methods
41You can either use your own code, by including your own debounce.c, or switch to another included one. 34You can either use your own code, by including your own debounce.c, or switch to another included one.
42Included debounce methods are: 35Included debounce methods are:
43* debounce_eager_pk - debouncing per key. On any state change, response is immediate, followed by ```DEBOUNCE_DELAY``` millseconds of no further input for that key 36* eager_pk - debouncing per key. On any state change, response is immediate, followed by ```DEBOUNCE_DELAY``` millseconds of no further input for that key
44* debounce_sym_g - debouncing per keyboard. On any state change, a global timer is set. When ```DEBOUNCE_DELAY``` milliseconds of no changes has occured, all input changes are pushed. 37* sym_g - debouncing per keyboard. On any state change, a global timer is set. When ```DEBOUNCE_DELAY``` milliseconds of no changes has occured, all input changes are pushed.
45 38
46 39
diff --git a/docs/getting_started_make_guide.md b/docs/getting_started_make_guide.md
index bb7e1e7e3..75eafd42c 100644
--- a/docs/getting_started_make_guide.md
+++ b/docs/getting_started_make_guide.md
@@ -143,9 +143,9 @@ As there is no standard split communication driver for ARM-based split keyboards
143 143
144Lets you replace the default matrix scanning routine with your own code. You will need to provide your own implementations of matrix_init() and matrix_scan(). 144Lets you replace the default matrix scanning routine with your own code. You will need to provide your own implementations of matrix_init() and matrix_scan().
145 145
146`CUSTOM_DEBOUNCE` 146`DEBOUNCE_TYPE`
147 147
148Lets you replace the default key debouncing routine with your own code. You will need to provide your own implementation of debounce(). 148Lets you replace the default key debouncing routine with an alternative one. If `custom` you will need to provide your own implementation.
149 149
150## Customizing Makefile Options on a Per-Keymap Basis 150## Customizing Makefile Options on a Per-Keymap Basis
151 151