From 0bde920817ef458f2ad61a66ce76a2535bbc261b Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Thu, 1 Jul 2021 08:22:21 -0700 Subject: Convert Dip Switch callbacks to boolean functions (#13399) --- docs/feature_dip_switch.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'docs/feature_dip_switch.md') diff --git a/docs/feature_dip_switch.md b/docs/feature_dip_switch.md index 15e449c4c4..5e8c19bfa7 100644 --- a/docs/feature_dip_switch.md +++ b/docs/feature_dip_switch.md @@ -23,8 +23,9 @@ or The callback functions can be inserted into your `.c`: ```c -void dip_switch_update_kb(uint8_t index, bool active) { - dip_switch_update_user(index, active); +bool dip_switch_update_kb(uint8_t index, bool active) { + if !(dip_switch_update_user(index, active)) { return false; } + return true; } ``` @@ -32,7 +33,7 @@ void dip_switch_update_kb(uint8_t index, bool active) { or `keymap.c`: ```c -void dip_switch_update_user(uint8_t index, bool active) { +bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { case 0: if(active) { audio_on(); } else { audio_off(); } @@ -57,6 +58,7 @@ void dip_switch_update_user(uint8_t index, bool active) { } break; } + return true; } ``` @@ -64,8 +66,9 @@ Additionally, we support bit mask functions which allow for more complex handlin ```c -void dip_switch_update_mask_kb(uint32_t state) { - dip_switch_update_mask_user(state); +bool dip_switch_update_mask_kb(uint32_t state) { + if (!dip_switch_update_mask_user(state)) { return false; } + return true; } ``` @@ -73,7 +76,7 @@ void dip_switch_update_mask_kb(uint32_t state) { or `keymap.c`: ```c -void dip_switch_update_mask_user(uint32_t state) { +bool dip_switch_update_mask_user(uint32_t state) { if (state & (1UL<<0) && state & (1UL<<1)) { layer_on(_ADJUST); // C on esc } else { @@ -89,6 +92,7 @@ void dip_switch_update_mask_user(uint32_t state) { } else { layer_off(_TEST_B); } + return true; } ``` -- cgit v1.2.3 From d972919204a5f1cb96d4e16c765d7028a423888a Mon Sep 17 00:00:00 2001 From: Dasky Date: Sat, 24 Jul 2021 18:44:31 +0100 Subject: [Docs] Fix typo in dip switch example (#13688) --- docs/feature_dip_switch.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docs/feature_dip_switch.md') diff --git a/docs/feature_dip_switch.md b/docs/feature_dip_switch.md index 5e8c19bfa7..43a6a3faf7 100644 --- a/docs/feature_dip_switch.md +++ b/docs/feature_dip_switch.md @@ -24,7 +24,7 @@ The callback functions can be inserted into your `.c`: ```c bool dip_switch_update_kb(uint8_t index, bool active) { - if !(dip_switch_update_user(index, active)) { return false; } + if (!dip_switch_update_user(index, active)) { return false; } return true; } ``` -- cgit v1.2.3 From 9d1c98c891bb8e1e98dc618e0693a7efff23a22e Mon Sep 17 00:00:00 2001 From: XScorpion2 Date: Thu, 19 Aug 2021 12:39:15 -0500 Subject: 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--- docs/feature_dip_switch.md | 3 ++- docs/ja/feature_dip_switch.md | 2 ++ quantum/dip_switch.c | 26 ++++++++++++++++++++++++-- 3 files changed, 28 insertions(+), 3 deletions(-) (limited to 'docs/feature_dip_switch.md') diff --git a/docs/feature_dip_switch.md b/docs/feature_dip_switch.md index 43a6a3faf7..6fbe91657d 100644 --- a/docs/feature_dip_switch.md +++ b/docs/feature_dip_switch.md @@ -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 diff --git a/docs/ja/feature_dip_switch.md b/docs/ja/feature_dip_switch.md index a5436779f1..8d0eeafa5a 100644 --- a/docs/ja/feature_dip_switch.md +++ b/docs/ja/feature_dip_switch.md @@ -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 { ... } ``` あるいは diff --git a/quantum/dip_switch.c b/quantum/dip_switch.c index 72789ca8e8..2608cae594 100644 --- a/quantum/dip_switch.c +++ b/quantum/dip_switch.c @@ -17,6 +17,9 @@ */ #include "dip_switch.h" +#ifdef SPLIT_KEYBOARD +# include "split_common/split_util.h" +#endif // for memcpy #include @@ -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); -- cgit v1.2.3