Stricter, leaner DEBOUNCE_TYPE section in common_features.mk. Cleanup debounce_type.mk

master
alex-ong 2019-01-27 07:23:15 +11:00
parent 562c0d702a
commit 7d8c629939
2 changed files with 18 additions and 15 deletions

View File

@ -265,14 +265,15 @@ endif
DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce
# Debounce Modules. If implemented in matrix.c, don't use these. # Debounce Modules. If implemented in matrix.c, don't use these.
ifeq ($(strip $(DEBOUNCE_TYPE)), custom) DEBOUNCE_TYPE?= sym_g
# Do nothing. do your debouncing in matrix.c VALID_DEBOUNCE_TYPES := sym_g eager_pk custom
else ifeq ($(strip $(DEBOUNCE_TYPE)), sym_g) 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 QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_sym_g.c
else ifeq ($(strip $(DEBOUNCE_TYPE)), eager_pk) else ifeq ($(strip $(DEBOUNCE_TYPE)), eager_pk)
QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_eager_pk.c QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_eager_pk.c
else # default algorithm. Won't be used if we have a custom_matrix that doesn't utilize it
QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_sym_g.c
endif endif

View File

@ -7,14 +7,15 @@ 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 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) DEBOUNCE_TYPE?= sym_g
# Do nothing. do your debouncing in matrix.c VALID_DEBOUNCE_TYPES := sym_g eager_pk custom
else ifeq ($(strip $(DEBOUNCE_ALGO)), sym_g) ifeq ($(filter $(DEBOUNCE_TYPE),$(VALID_DEBOUNCE_TYPES)),)
QUANTUM_SRC += $(DEBOUNCE)/debounce_sym_g.c $(error DEBOUNCE_TYPE="$(DEBOUNCE_TYPE)" is not a valid debounce algorithm)
else ifeq ($(strip $(DEBOUNCE_ALGO)), eager_pk) endif
QUANTUM_SRC += $(DEBOUNCE)/debounce_eager_pk.c ifeq ($(strip $(DEBOUNCE_TYPE)), sym_g)
else # default algorithm QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_sym_g.c
QUANTUM_SRC += $(DEBOUNCE)/debounce_sym_g.c else ifeq ($(strip $(DEBOUNCE_TYPE)), eager_pk)
QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_eager_pk.c
endif endif
``` ```
@ -23,17 +24,18 @@ endif
| DEBOUNCE_ALGO | Description | What to do | | 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 | | 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 | | 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 | | sym_g / eager_pk | You are using the included matrix.c and debounce.c | Use an alternative debounce algorithm |
**Regarding split keyboards**: **Regarding split keyboards**:
The debounce code is compatible with split keyboards. The debounce code is compatible with split keyboards.
# Use your own debouncing code # Use your own debouncing code
* Set ```DEBOUNCE_ALGO = manual```. * Set ```DEBOUNCE_TYPE = custom ```.
* Add ```SRC += debounce.c``` * Add ```SRC += debounce.c```
* Add your own ```debounce.c```. Look at included ```debounce_sym_g.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. * 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 # Changing between included debouncing methods
You can either use your own code, by including your own debounce.c, or switch to another included one. You can either use your own code, by including your own debounce.c, or switch to another included one.