mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-11-04 07:12:33 +01:00 
			
		
		
		
	Stricter, leaner DEBOUNCE_TYPE section in common_features.mk. Cleanup debounce_type.mk
This commit is contained in:
		
							parent
							
								
									562c0d702a
								
							
						
					
					
						commit
						7d8c629939
					
				@ -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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -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.
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user