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
 | 
					```c
 | 
				
			||||||
// Connects each switch in the dip switch to the GPIO pin of the MCU
 | 
					// Connects each switch in the dip switch to the GPIO pin of the MCU
 | 
				
			||||||
#define DIP_SWITCH_PINS { B14, A15, A10, B9 }
 | 
					#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
 | 
					or
 | 
				
			||||||
| 
						 | 
					@ -96,7 +98,6 @@ bool dip_switch_update_mask_user(uint32_t state) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
## Hardware
 | 
					## Hardware
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Connects each switch in the dip switch to the GPIO pin of the MCU
 | 
					### Connects each switch in the dip switch to the GPIO pin of the MCU
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,6 +14,8 @@ DIP スイッチは、以下を `rules.mk` に追加することでサポート
 | 
				
			||||||
```c
 | 
					```c
 | 
				
			||||||
// Connects each switch in the dip switch to the GPIO pin of the MCU
 | 
					// Connects each switch in the dip switch to the GPIO pin of the MCU
 | 
				
			||||||
#define DIP_SWITCH_PINS { B14, A15, A10, B9 }
 | 
					#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"
 | 
					#include "dip_switch.h"
 | 
				
			||||||
 | 
					#ifdef SPLIT_KEYBOARD
 | 
				
			||||||
 | 
					#    include "split_common/split_util.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// for memcpy
 | 
					// for memcpy
 | 
				
			||||||
#include <string.h>
 | 
					#include <string.h>
 | 
				
			||||||
| 
						 | 
					@ -32,6 +35,9 @@
 | 
				
			||||||
#ifdef DIP_SWITCH_PINS
 | 
					#ifdef DIP_SWITCH_PINS
 | 
				
			||||||
#    define NUMBER_OF_DIP_SWITCHES (sizeof(dip_switch_pad) / sizeof(pin_t))
 | 
					#    define NUMBER_OF_DIP_SWITCHES (sizeof(dip_switch_pad) / sizeof(pin_t))
 | 
				
			||||||
static pin_t dip_switch_pad[] = DIP_SWITCH_PINS;
 | 
					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
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef DIP_SWITCH_MATRIX_GRID
 | 
					#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) {
 | 
					void dip_switch_init(void) {
 | 
				
			||||||
#ifdef DIP_SWITCH_PINS
 | 
					#ifdef DIP_SWITCH_PINS
 | 
				
			||||||
    for (uint8_t i = 0; i < NUMBER_OF_DIP_SWITCHES; i++) {
 | 
					    for (uint8_t i = 0; i < NUMBER_OF_DIP_SWITCHES; i++) {
 | 
				
			||||||
 | 
					#    if defined(SPLIT_KEYBOARD) && defined(DIP_SWITCH_PINS_RIGHT)
 | 
				
			||||||
 | 
					        if (isLeftHand) {
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
            setPinInputHigh(dip_switch_pad[i]);
 | 
					            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);
 | 
					    dip_switch_read(true);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -89,7 +103,15 @@ void dip_switch_read(bool forced) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (uint8_t i = 0; i < NUMBER_OF_DIP_SWITCHES; i++) {
 | 
					    for (uint8_t i = 0; i < NUMBER_OF_DIP_SWITCHES; i++) {
 | 
				
			||||||
#ifdef DIP_SWITCH_PINS
 | 
					#ifdef DIP_SWITCH_PINS
 | 
				
			||||||
 | 
					#    if defined(SPLIT_KEYBOARD) && defined(DIP_SWITCH_PINS_RIGHT)
 | 
				
			||||||
 | 
					        if (isLeftHand) {
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
            dip_switch_state[i] = !readPin(dip_switch_pad[i]);
 | 
					            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
 | 
					#endif
 | 
				
			||||||
#ifdef DIP_SWITCH_MATRIX_GRID
 | 
					#ifdef DIP_SWITCH_MATRIX_GRID
 | 
				
			||||||
        dip_switch_state[i] = peek_matrix(dip_switch_pad[i].row, dip_switch_pad[i].col, read_raw);
 | 
					        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