aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXScorpion2 <rcalt2vt@gmail.com>2021-08-19 12:39:15 -0500
committerGitHub <noreply@github.com>2021-08-19 18:39:15 +0100
commit9d1c98c891bb8e1e98dc618e0693a7efff23a22e (patch)
treeb3ceeb02861a2e94c248c1e538e9b8db456ffa47
parentaf3673a5b6985f4364210c3656f323624c2e1962 (diff)
downloadqmk_firmware-9d1c98c891bb8e1e98dc618e0693a7efff23a22e.tar.gz
qmk_firmware-9d1c98c891bb8e1e98dc618e0693a7efff23a22e.zip
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
-rw-r--r--docs/feature_dip_switch.md3
-rw-r--r--docs/ja/feature_dip_switch.md2
-rw-r--r--quantum/dip_switch.c26
3 files changed, 28 insertions, 3 deletions
diff --git a/docs/feature_dip_switch.md b/docs/feature_dip_switch.md
index 43a6a3faf..6fbe91657 100644
--- a/docs/feature_dip_switch.md
+++ b/docs/feature_dip_switch.md
@@ -9,6 +9,8 @@ and this to your `config.h`:
9```c 9```c
10// Connects each switch in the dip switch to the GPIO pin of the MCU 10// Connects each switch in the dip switch to the GPIO pin of the MCU
11#define DIP_SWITCH_PINS { B14, A15, A10, B9 } 11#define DIP_SWITCH_PINS { B14, A15, A10, B9 }
12// For split keyboards, you can separately define the right side pins
13#define DIP_SWITCH_PINS_RIGHT { ... }
12``` 14```
13 15
14or 16or
@@ -96,7 +98,6 @@ bool dip_switch_update_mask_user(uint32_t state) {
96} 98}
97``` 99```
98 100
99
100## Hardware 101## Hardware
101 102
102### Connects each switch in the dip switch to the GPIO pin of the MCU 103### Connects each switch in the dip switch to the GPIO pin of the MCU
diff --git a/docs/ja/feature_dip_switch.md b/docs/ja/feature_dip_switch.md
index a5436779f..8d0eeafa5 100644
--- a/docs/ja/feature_dip_switch.md
+++ b/docs/ja/feature_dip_switch.md
@@ -14,6 +14,8 @@ DIP スイッチは、以下を `rules.mk` に追加することでサポート
14```c 14```c
15// Connects each switch in the dip switch to the GPIO pin of the MCU 15// Connects each switch in the dip switch to the GPIO pin of the MCU
16#define DIP_SWITCH_PINS { B14, A15, A10, B9 } 16#define DIP_SWITCH_PINS { B14, A15, A10, B9 }
17// For split keyboards, you can separately define the right side pins
18#define DIP_SWITCH_PINS_RIGHT { ... }
17``` 19```
18 20
19あるいは 21あるいは
diff --git a/quantum/dip_switch.c b/quantum/dip_switch.c
index 72789ca8e..2608cae59 100644
--- a/quantum/dip_switch.c
+++ b/quantum/dip_switch.c
@@ -17,6 +17,9 @@
17 */ 17 */
18 18
19#include "dip_switch.h" 19#include "dip_switch.h"
20#ifdef SPLIT_KEYBOARD
21# include "split_common/split_util.h"
22#endif
20 23
21// for memcpy 24// for memcpy
22#include <string.h> 25#include <string.h>
@@ -32,6 +35,9 @@
32#ifdef DIP_SWITCH_PINS 35#ifdef DIP_SWITCH_PINS
33# define NUMBER_OF_DIP_SWITCHES (sizeof(dip_switch_pad) / sizeof(pin_t)) 36# define NUMBER_OF_DIP_SWITCHES (sizeof(dip_switch_pad) / sizeof(pin_t))
34static pin_t dip_switch_pad[] = DIP_SWITCH_PINS; 37static pin_t dip_switch_pad[] = DIP_SWITCH_PINS;
38# if defined(SPLIT_KEYBOARD) && defined(DIP_SWITCH_PINS_RIGHT)
39static pin_t dip_switch_pad_right[] = DIP_SWITCH_PINS_RIGHT;
40# endif
35#endif 41#endif
36 42
37#ifdef DIP_SWITCH_MATRIX_GRID 43#ifdef DIP_SWITCH_MATRIX_GRID
@@ -60,7 +66,15 @@ __attribute__((weak)) bool dip_switch_update_mask_kb(uint32_t state) { return di
60void dip_switch_init(void) { 66void dip_switch_init(void) {
61#ifdef DIP_SWITCH_PINS 67#ifdef DIP_SWITCH_PINS
62 for (uint8_t i = 0; i < NUMBER_OF_DIP_SWITCHES; i++) { 68 for (uint8_t i = 0; i < NUMBER_OF_DIP_SWITCHES; i++) {
63 setPinInputHigh(dip_switch_pad[i]); 69# if defined(SPLIT_KEYBOARD) && defined(DIP_SWITCH_PINS_RIGHT)
70 if (isLeftHand) {
71# endif
72 setPinInputHigh(dip_switch_pad[i]);
73# if defined(SPLIT_KEYBOARD) && defined(DIP_SWITCH_PINS_RIGHT)
74 } else {
75 setPinInputHigh(dip_switch_pad_right[i]);
76 }
77# endif
64 } 78 }
65 dip_switch_read(true); 79 dip_switch_read(true);
66#endif 80#endif
@@ -89,7 +103,15 @@ void dip_switch_read(bool forced) {
89 103
90 for (uint8_t i = 0; i < NUMBER_OF_DIP_SWITCHES; i++) { 104 for (uint8_t i = 0; i < NUMBER_OF_DIP_SWITCHES; i++) {
91#ifdef DIP_SWITCH_PINS 105#ifdef DIP_SWITCH_PINS
92 dip_switch_state[i] = !readPin(dip_switch_pad[i]); 106# if defined(SPLIT_KEYBOARD) && defined(DIP_SWITCH_PINS_RIGHT)
107 if (isLeftHand) {
108# endif
109 dip_switch_state[i] = !readPin(dip_switch_pad[i]);
110# if defined(SPLIT_KEYBOARD) && defined(DIP_SWITCH_PINS_RIGHT)
111 } else {
112 dip_switch_state[i] = !readPin(dip_switch_pad_right[i]);
113 }
114# endif
93#endif 115#endif
94#ifdef DIP_SWITCH_MATRIX_GRID 116#ifdef DIP_SWITCH_MATRIX_GRID
95 dip_switch_state[i] = peek_matrix(dip_switch_pad[i].row, dip_switch_pad[i].col, read_raw); 117 dip_switch_state[i] = peek_matrix(dip_switch_pad[i].row, dip_switch_pad[i].col, read_raw);