forked from mirrors/qmk_userspace
		
	Added right vs left specific pin assignments for dip switch (#13074)
* Added right vs left specific pin assignments for dip switch * Update feature_dip_switch.md * Ran formatting tools
This commit is contained in:
		
					parent
					
						
							
								af3673a5b6
							
						
					
				
			
			
				commit
				
					
						9d1c98c891
					
				
			
		
					 3 changed files with 28 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -9,6 +9,8 @@ and this to your `config.h`:
 | 
			
		|||
```c
 | 
			
		||||
// Connects each switch in the dip switch to the GPIO pin of the MCU
 | 
			
		||||
#define DIP_SWITCH_PINS { B14, A15, A10, B9 }
 | 
			
		||||
// For split keyboards, you can separately define the right side pins
 | 
			
		||||
#define DIP_SWITCH_PINS_RIGHT { ... }
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
or
 | 
			
		||||
| 
						 | 
				
			
			@ -96,7 +98,6 @@ bool dip_switch_update_mask_user(uint32_t state) {
 | 
			
		|||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Hardware
 | 
			
		||||
 | 
			
		||||
### Connects each switch in the dip switch to the GPIO pin of the MCU
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,8 @@ DIP スイッチは、以下を `rules.mk` に追加することでサポート
 | 
			
		|||
```c
 | 
			
		||||
// Connects each switch in the dip switch to the GPIO pin of the MCU
 | 
			
		||||
#define DIP_SWITCH_PINS { B14, A15, A10, B9 }
 | 
			
		||||
// For split keyboards, you can separately define the right side pins
 | 
			
		||||
#define DIP_SWITCH_PINS_RIGHT { ... }
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
あるいは
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,6 +17,9 @@
 | 
			
		|||
 */
 | 
			
		||||
 | 
			
		||||
#include "dip_switch.h"
 | 
			
		||||
#ifdef SPLIT_KEYBOARD
 | 
			
		||||
#    include "split_common/split_util.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// for memcpy
 | 
			
		||||
#include <string.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -32,6 +35,9 @@
 | 
			
		|||
#ifdef DIP_SWITCH_PINS
 | 
			
		||||
#    define NUMBER_OF_DIP_SWITCHES (sizeof(dip_switch_pad) / sizeof(pin_t))
 | 
			
		||||
static pin_t dip_switch_pad[] = DIP_SWITCH_PINS;
 | 
			
		||||
#    if defined(SPLIT_KEYBOARD) && defined(DIP_SWITCH_PINS_RIGHT)
 | 
			
		||||
static pin_t dip_switch_pad_right[] = DIP_SWITCH_PINS_RIGHT;
 | 
			
		||||
#    endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef DIP_SWITCH_MATRIX_GRID
 | 
			
		||||
| 
						 | 
				
			
			@ -60,7 +66,15 @@ __attribute__((weak)) bool dip_switch_update_mask_kb(uint32_t state) { return di
 | 
			
		|||
void dip_switch_init(void) {
 | 
			
		||||
#ifdef DIP_SWITCH_PINS
 | 
			
		||||
    for (uint8_t i = 0; i < NUMBER_OF_DIP_SWITCHES; i++) {
 | 
			
		||||
        setPinInputHigh(dip_switch_pad[i]);
 | 
			
		||||
#    if defined(SPLIT_KEYBOARD) && defined(DIP_SWITCH_PINS_RIGHT)
 | 
			
		||||
        if (isLeftHand) {
 | 
			
		||||
#    endif
 | 
			
		||||
            setPinInputHigh(dip_switch_pad[i]);
 | 
			
		||||
#    if defined(SPLIT_KEYBOARD) && defined(DIP_SWITCH_PINS_RIGHT)
 | 
			
		||||
        } else {
 | 
			
		||||
            setPinInputHigh(dip_switch_pad_right[i]);
 | 
			
		||||
        }
 | 
			
		||||
#    endif
 | 
			
		||||
    }
 | 
			
		||||
    dip_switch_read(true);
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -89,7 +103,15 @@ void dip_switch_read(bool forced) {
 | 
			
		|||
 | 
			
		||||
    for (uint8_t i = 0; i < NUMBER_OF_DIP_SWITCHES; i++) {
 | 
			
		||||
#ifdef DIP_SWITCH_PINS
 | 
			
		||||
        dip_switch_state[i] = !readPin(dip_switch_pad[i]);
 | 
			
		||||
#    if defined(SPLIT_KEYBOARD) && defined(DIP_SWITCH_PINS_RIGHT)
 | 
			
		||||
        if (isLeftHand) {
 | 
			
		||||
#    endif
 | 
			
		||||
            dip_switch_state[i] = !readPin(dip_switch_pad[i]);
 | 
			
		||||
#    if defined(SPLIT_KEYBOARD) && defined(DIP_SWITCH_PINS_RIGHT)
 | 
			
		||||
        } else {
 | 
			
		||||
            dip_switch_state[i] = !readPin(dip_switch_pad_right[i]);
 | 
			
		||||
        }
 | 
			
		||||
#    endif
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef DIP_SWITCH_MATRIX_GRID
 | 
			
		||||
        dip_switch_state[i] = peek_matrix(dip_switch_pad[i].row, dip_switch_pad[i].col, read_raw);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue