mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-11-04 07:12:33 +01:00 
			
		
		
		
	Add layer condition example to encoder callback function (#15490)
Co-authored-by: filterpaper <filterpaper@localhost>
This commit is contained in:
		
							parent
							
								
									dad7424bec
								
							
						
					
					
						commit
						067d94f0b6
					
				@ -87,6 +87,43 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
!> If you return `true`, this will allow the keyboard level code to run, as well.  Returning `false` will override the keyboard level code.  Depending on how the keyboard level function is set up. 
 | 
					!> If you return `true`, this will allow the keyboard level code to run, as well.  Returning `false` will override the keyboard level code.  Depending on how the keyboard level function is set up. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Layer conditions can also be used with the callback function like the following:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```c
 | 
				
			||||||
 | 
					bool encoder_update_user(uint8_t index, bool clockwise) {
 | 
				
			||||||
 | 
					    if (get_highest_layer(layer_state|default_layer_state) > 0) {
 | 
				
			||||||
 | 
					        if (index == 0) {
 | 
				
			||||||
 | 
					            if (clockwise) {
 | 
				
			||||||
 | 
					                tap_code(KC_WH_D);
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                tap_code(KC_WH_U);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } else if (index == 1) {
 | 
				
			||||||
 | 
					            if (clockwise) {
 | 
				
			||||||
 | 
					                tap_code(KC_VOLU);
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                tap_code(KC_VOLD);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } else {  /* Layer 0 */
 | 
				
			||||||
 | 
					        if (index == 0) {
 | 
				
			||||||
 | 
					            if (clockwise) {
 | 
				
			||||||
 | 
					                tap_code(KC_PGDN);
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                tap_code(KC_PGUP);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } else if (index == 1) {
 | 
				
			||||||
 | 
					            if (clockwise) {
 | 
				
			||||||
 | 
					                tap_code(KC_DOWN);
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                tap_code(KC_UP);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Hardware
 | 
					## Hardware
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The A an B lines of the encoders should be wired directly to the MCU, and the C/common lines should be wired to ground.
 | 
					The A an B lines of the encoders should be wired directly to the MCU, and the C/common lines should be wired to ground.
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user