From 4db27a2c7614c0aa5a0b46d8e1f5c5cc8216fd1c Mon Sep 17 00:00:00 2001 From: Alex Ong Date: Wed, 29 Aug 2018 10:45:53 +1000 Subject: Changed order of rules in TMK. Documented feature. --- docs/feature_debounce_algo.md | 51 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 docs/feature_debounce_algo.md (limited to 'docs') diff --git a/docs/feature_debounce_algo.md b/docs/feature_debounce_algo.md new file mode 100644 index 000000000..7dcfec4a8 --- /dev/null +++ b/docs/feature_debounce_algo.md @@ -0,0 +1,51 @@ +# Debounce algorithm + +QMK supports multiple debounce algorithms through its debounce API. + +The underlying debounce algorithm is determined by which matrix.c file you are using. + +The logic for which debounce method called is below. It checks various defines that you have set in rules.mk + +``` +ifeq ($(strip $(SPLIT_KEYBOARD)), yes) + # Do nothing, debouncing is inside matrix.c inside split_common +else ifeq ($(strip $(DEBOUNCE_ALGO)), manual) + # Do nothing. do your debouncing in matrix.c +else ifeq ($(strip $(DEBOUNCE_ALGO)), sym_g) + TMK_COMMON_SRC += $(DEBOUNCE)/debounce_sym_g.c +else ifeq ($(strip $(DEBOUNCE_ALGO)), eager_pk) + TMK_COMMON_SRC += $(DEBOUNCE)/debounce_eager_pk.c +else ifeq ($(strip $(CUSTOM_MATRIX)), yes) + # Do nothing. Custom matrix code. +else # default algorithm + TMK_COMMON_SRC += $(DEBOUNCE)/debounce_sym_g.c +endif +``` +# Debounce selection +The following is for keyboards where ```SPLIT_KEYBOARD``` is not defined as ```YES``` +| DEBOUNCE_ALGO | CUSTOM_MATRIX | Description | What to do | +| ------------- | -------------| --------------------------------------------------- | ----------------------------- | +| Not defined | Not defined | You are using the included matrix.c and debounce.c | Nothing. Debounce_sym_g used. | +| manual | Not defined | You are using the included matrix.c but your own debounce.c | ```SRC += debounce.c``` add your own debounce.c and implement necessary functions | +| sym_g / eager_pk | Not defined | You are using the included matrix.c and debounce.c | Nothing. Chosen debounce method used. | +| Not defined | YES | You have your own matrix.c, and your own debounce | Write the fully debounced matrix into matrix.c's matrix | +| manual | YES | Same as above | same as above | +| sym_g/ eager_pk | YES | You are using your own matrix.c, but included debounce | Write the raw matrix values into matrix.c's matrix | + +Note: +If ```SPLIT_KEYBOARD = YES``` is defined, the algorithm inside split_common will be used. +A future pull request will fix this to use the debounce.c code. + +# Use your own debouncing code +* Set ```DEBOUNCE_ALGO = manual```. +* Add ```SRC += debounce.c``` +* Add your own ```debounce.c```. Look at included debounce.c's for sample implementations. +* Debouncing occurs after every raw matrix scan. + +# Changing between included debouncing methods +You can either use your own code, by including your own debounce.c, or switch to another included one. +Included debounce methods are: +* 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 +* 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. + + -- cgit v1.2.3-24-g4f1b From e8e6268765b052a6f6b53d34f0d8afb200989ba7 Mon Sep 17 00:00:00 2001 From: Alex Ong Date: Wed, 29 Aug 2018 10:48:11 +1000 Subject: Fixed missing whitespace in debounce documentation Table wasn't working due to missing newline. --- docs/feature_debounce_algo.md | 1 + 1 file changed, 1 insertion(+) (limited to 'docs') diff --git a/docs/feature_debounce_algo.md b/docs/feature_debounce_algo.md index 7dcfec4a8..9809bd1bf 100644 --- a/docs/feature_debounce_algo.md +++ b/docs/feature_debounce_algo.md @@ -23,6 +23,7 @@ endif ``` # Debounce selection The following is for keyboards where ```SPLIT_KEYBOARD``` is not defined as ```YES``` + | DEBOUNCE_ALGO | CUSTOM_MATRIX | Description | What to do | | ------------- | -------------| --------------------------------------------------- | ----------------------------- | | Not defined | Not defined | You are using the included matrix.c and debounce.c | Nothing. Debounce_sym_g used. | -- cgit v1.2.3-24-g4f1b From a55c838961c89097ab849ed6cb1f261791e6b9b4 Mon Sep 17 00:00:00 2001 From: Alex Ong Date: Wed, 29 Aug 2018 10:49:53 +1000 Subject: Added bold in a few areas. --- docs/feature_debounce_algo.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'docs') diff --git a/docs/feature_debounce_algo.md b/docs/feature_debounce_algo.md index 9809bd1bf..2c694cdfb 100644 --- a/docs/feature_debounce_algo.md +++ b/docs/feature_debounce_algo.md @@ -21,8 +21,9 @@ else # default algorithm TMK_COMMON_SRC += $(DEBOUNCE)/debounce_sym_g.c endif ``` + # Debounce selection -The following is for keyboards where ```SPLIT_KEYBOARD``` is not defined as ```YES``` +The following is for keyboards where ```SPLIT_KEYBOARD``` is **not** defined as ```YES``` | DEBOUNCE_ALGO | CUSTOM_MATRIX | Description | What to do | | ------------- | -------------| --------------------------------------------------- | ----------------------------- | @@ -33,7 +34,7 @@ The following is for keyboards where ```SPLIT_KEYBOARD``` is not defined as ```Y | manual | YES | Same as above | same as above | | sym_g/ eager_pk | YES | You are using your own matrix.c, but included debounce | Write the raw matrix values into matrix.c's matrix | -Note: +**Note**: If ```SPLIT_KEYBOARD = YES``` is defined, the algorithm inside split_common will be used. A future pull request will fix this to use the debounce.c code. -- cgit v1.2.3-24-g4f1b From 574fc6444bf48d10317c72bc6a5c61f7e46938a3 Mon Sep 17 00:00:00 2001 From: alex-ong Date: Sat, 26 Jan 2019 17:38:52 +1100 Subject: Whitespace cleanup. --- docs/feature_debounce_algo.md | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'docs') diff --git a/docs/feature_debounce_algo.md b/docs/feature_debounce_algo.md index 2c694cdfb..e4489662e 100644 --- a/docs/feature_debounce_algo.md +++ b/docs/feature_debounce_algo.md @@ -7,18 +7,16 @@ The underlying debounce algorithm is determined by which matrix.c file you are u The logic for which debounce method called is below. It checks various defines that you have set in rules.mk ``` -ifeq ($(strip $(SPLIT_KEYBOARD)), yes) - # Do nothing, debouncing is inside matrix.c inside split_common -else ifeq ($(strip $(DEBOUNCE_ALGO)), manual) +ifeq ($(strip $(DEBOUNCE_ALGO)), manual) # Do nothing. do your debouncing in matrix.c else ifeq ($(strip $(DEBOUNCE_ALGO)), sym_g) - TMK_COMMON_SRC += $(DEBOUNCE)/debounce_sym_g.c + QUANTUM_SRC += $(DEBOUNCE)/debounce_sym_g.c else ifeq ($(strip $(DEBOUNCE_ALGO)), eager_pk) - TMK_COMMON_SRC += $(DEBOUNCE)/debounce_eager_pk.c + QUANTUM_SRC += $(DEBOUNCE)/debounce_eager_pk.c else ifeq ($(strip $(CUSTOM_MATRIX)), yes) # Do nothing. Custom matrix code. else # default algorithm - TMK_COMMON_SRC += $(DEBOUNCE)/debounce_sym_g.c + QUANTUM_SRC += $(DEBOUNCE)/debounce_sym_g.c endif ``` @@ -32,11 +30,10 @@ The following is for keyboards where ```SPLIT_KEYBOARD``` is **not** defined as | sym_g / eager_pk | Not defined | You are using the included matrix.c and debounce.c | Nothing. Chosen debounce method used. | | Not defined | YES | You have your own matrix.c, and your own debounce | Write the fully debounced matrix into matrix.c's matrix | | manual | YES | Same as above | same as above | -| sym_g/ eager_pk | YES | You are using your own matrix.c, but included debounce | Write the raw matrix values into matrix.c's matrix | +| sym_g / eager_pk | YES | You are using your own matrix.c, but included debounce | Write the raw matrix values into matrix.c's matrix | -**Note**: -If ```SPLIT_KEYBOARD = YES``` is defined, the algorithm inside split_common will be used. -A future pull request will fix this to use the debounce.c code. +**Regarding split keyboards**: +The debounce code is compatible with split keyboards. # Use your own debouncing code * Set ```DEBOUNCE_ALGO = manual```. -- cgit v1.2.3-24-g4f1b From cce8dfab394a643fd6d0250bc8a80a721703a154 Mon Sep 17 00:00:00 2001 From: alex-ong Date: Sat, 26 Jan 2019 20:37:47 +1100 Subject: Removed check for custom_matrix. We can safely include the debounce file for compilation when custom_matrix is used. --- docs/feature_debounce_algo.md | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) (limited to 'docs') diff --git a/docs/feature_debounce_algo.md b/docs/feature_debounce_algo.md index e4489662e..c4ef86fc7 100644 --- a/docs/feature_debounce_algo.md +++ b/docs/feature_debounce_algo.md @@ -13,24 +13,18 @@ else ifeq ($(strip $(DEBOUNCE_ALGO)), sym_g) QUANTUM_SRC += $(DEBOUNCE)/debounce_sym_g.c else ifeq ($(strip $(DEBOUNCE_ALGO)), eager_pk) QUANTUM_SRC += $(DEBOUNCE)/debounce_eager_pk.c -else ifeq ($(strip $(CUSTOM_MATRIX)), yes) - # Do nothing. Custom matrix code. else # default algorithm QUANTUM_SRC += $(DEBOUNCE)/debounce_sym_g.c endif ``` # Debounce selection -The following is for keyboards where ```SPLIT_KEYBOARD``` is **not** defined as ```YES``` -| DEBOUNCE_ALGO | CUSTOM_MATRIX | Description | What to do | -| ------------- | -------------| --------------------------------------------------- | ----------------------------- | -| Not defined | Not defined | You are using the included matrix.c and debounce.c | Nothing. Debounce_sym_g used. | -| manual | Not defined | You are using the included matrix.c but your own debounce.c | ```SRC += debounce.c``` add your own debounce.c and implement necessary functions | -| sym_g / eager_pk | Not defined | You are using the included matrix.c and debounce.c | Nothing. Chosen debounce method used. | -| Not defined | YES | You have your own matrix.c, and your own debounce | Write the fully debounced matrix into matrix.c's matrix | -| manual | YES | Same as above | same as above | -| sym_g / eager_pk | YES | You are using your own matrix.c, but included debounce | Write the raw matrix values into matrix.c's matrix | +| DEBOUNCE_ALGO | Description | What to do | +| ------------- | --------------------------------------------------- | ----------------------------- | +| Not defined | You are using the included matrix.c and debounce.c | Nothing. Debounce_sym_g will be compiled, and used if necessary | +| manual | Use your own debounce.c | ```SRC += debounce.c``` add your own debounce.c and implement necessary functions | +| sym_g / eager_pk | You are using the included matrix.c and debounce.c | Use an alternative debounce algorithm | **Regarding split keyboards**: The debounce code is compatible with split keyboards. @@ -38,7 +32,7 @@ The debounce code is compatible with split keyboards. # Use your own debouncing code * Set ```DEBOUNCE_ALGO = manual```. * Add ```SRC += debounce.c``` -* Add your own ```debounce.c```. Look at included debounce.c's for sample implementations. +* Add your own ```debounce.c```. Look at included ```debounce_sym_g.c```s for sample implementations. * Debouncing occurs after every raw matrix scan. # Changing between included debouncing methods -- cgit v1.2.3-24-g4f1b From 7d8c62993921383a35f9cd172fe0a1d2e893b2f3 Mon Sep 17 00:00:00 2001 From: alex-ong Date: Sun, 27 Jan 2019 07:23:15 +1100 Subject: Stricter, leaner DEBOUNCE_TYPE section in common_features.mk. Cleanup debounce_type.mk --- docs/feature_debounce_algo.md | 44 ----------------------------------------- docs/feature_debounce_type.md | 46 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 44 deletions(-) delete mode 100644 docs/feature_debounce_algo.md create mode 100644 docs/feature_debounce_type.md (limited to 'docs') diff --git a/docs/feature_debounce_algo.md b/docs/feature_debounce_algo.md deleted file mode 100644 index c4ef86fc7..000000000 --- a/docs/feature_debounce_algo.md +++ /dev/null @@ -1,44 +0,0 @@ -# Debounce algorithm - -QMK supports multiple debounce algorithms through its debounce API. - -The underlying debounce algorithm is determined by which matrix.c file you are using. - -The logic for which debounce method called is below. It checks various defines that you have set in rules.mk - -``` -ifeq ($(strip $(DEBOUNCE_ALGO)), manual) - # Do nothing. do your debouncing in matrix.c -else ifeq ($(strip $(DEBOUNCE_ALGO)), sym_g) - QUANTUM_SRC += $(DEBOUNCE)/debounce_sym_g.c -else ifeq ($(strip $(DEBOUNCE_ALGO)), eager_pk) - QUANTUM_SRC += $(DEBOUNCE)/debounce_eager_pk.c -else # default algorithm - QUANTUM_SRC += $(DEBOUNCE)/debounce_sym_g.c -endif -``` - -# Debounce selection - -| DEBOUNCE_ALGO | Description | What to do | -| ------------- | --------------------------------------------------- | ----------------------------- | -| Not defined | You are using the included matrix.c and debounce.c | Nothing. Debounce_sym_g will be compiled, and used if necessary | -| manual | Use your own debounce.c | ```SRC += debounce.c``` add your own debounce.c and implement necessary functions | -| sym_g / eager_pk | You are using the included matrix.c and debounce.c | Use an alternative debounce algorithm | - -**Regarding split keyboards**: -The debounce code is compatible with split keyboards. - -# Use your own debouncing code -* Set ```DEBOUNCE_ALGO = manual```. -* Add ```SRC += debounce.c``` -* Add your own ```debounce.c```. Look at included ```debounce_sym_g.c```s for sample implementations. -* Debouncing occurs after every raw matrix scan. - -# Changing between included debouncing methods -You can either use your own code, by including your own debounce.c, or switch to another included one. -Included debounce methods are: -* 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 -* 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. - - diff --git a/docs/feature_debounce_type.md b/docs/feature_debounce_type.md new file mode 100644 index 000000000..82b3d7de1 --- /dev/null +++ b/docs/feature_debounce_type.md @@ -0,0 +1,46 @@ +# Debounce algorithm + +QMK supports multiple debounce algorithms through its debounce API. + +The underlying debounce algorithm is determined by which matrix.c file you are using. + +The logic for which debounce method called is below. It checks various defines that you have set in rules.mk + +``` +DEBOUNCE_TYPE?= sym_g +VALID_DEBOUNCE_TYPES := sym_g eager_pk custom +ifeq ($(filter $(DEBOUNCE_TYPE),$(VALID_DEBOUNCE_TYPES)),) + $(error DEBOUNCE_TYPE="$(DEBOUNCE_TYPE)" is not a valid debounce algorithm) +endif +ifeq ($(strip $(DEBOUNCE_TYPE)), sym_g) + QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_sym_g.c +else ifeq ($(strip $(DEBOUNCE_TYPE)), eager_pk) + QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_eager_pk.c +endif +``` + +# Debounce selection + +| DEBOUNCE_ALGO | Description | What to do | +| ------------- | --------------------------------------------------- | ----------------------------- | +| Not defined | You are using the included matrix.c and debounce.c | Nothing. Debounce_sym_g will be compiled, and used if necessary | +| custom | Use your own debounce.c | ```SRC += debounce.c``` add your own debounce.c and implement necessary functions | +| sym_g / eager_pk | You are using the included matrix.c and debounce.c | Use an alternative debounce algorithm | + +**Regarding split keyboards**: +The debounce code is compatible with split keyboards. + +# Use your own debouncing code +* Set ```DEBOUNCE_TYPE = custom ```. +* Add ```SRC += debounce.c``` +* Add your own ```debounce.c```. Look at included ```debounce_sym_g.c```s for sample implementations. +* Debouncing occurs after every raw matrix scan. +* Use num_rows rather than MATRIX_ROWS, so that split keyboards are supported correctly. + +# Changing between included debouncing methods +You can either use your own code, by including your own debounce.c, or switch to another included one. +Included debounce methods are: +* 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 +* 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. + + -- cgit v1.2.3-24-g4f1b