From 82be3579fd2e69b786582cc152d8ae7ca0283355 Mon Sep 17 00:00:00 2001 From: daskygit <32983009+daskygit@users.noreply.github.com> Date: Tue, 31 May 2022 17:01:48 +0100 Subject: [PATCH 1/3] Move SPLIT_HAND_PIN setup to split_pre_init --- quantum/split_common/split_util.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/quantum/split_common/split_util.c b/quantum/split_common/split_util.c index 7d50adf758fb..2fc3a9986c4b 100644 --- a/quantum/split_common/split_util.c +++ b/quantum/split_common/split_util.c @@ -93,7 +93,6 @@ static uint8_t peek_matrix_intersection(pin_t out_pin, pin_t in_pin) { __attribute__((weak)) bool is_keyboard_left(void) { #if defined(SPLIT_HAND_PIN) // Test pin SPLIT_HAND_PIN for High/Low, if low it's right hand - setPinInput(SPLIT_HAND_PIN); # ifdef SPLIT_HAND_PIN_LOW_IS_LEFT return !readPin(SPLIT_HAND_PIN); # else @@ -132,6 +131,10 @@ __attribute__((weak)) bool is_keyboard_master(void) { // this code runs before the keyboard is fully initialized void split_pre_init(void) { +#if defined(SPLIT_HAND_PIN) + setPinInput(SPLIT_HAND_PIN); + wait_us(100); +#endif isLeftHand = is_keyboard_left(); #if defined(RGBLIGHT_ENABLE) && defined(RGBLED_SPLIT) From 92380f1bdbb379c66f48d0263410e8704d52a20a Mon Sep 17 00:00:00 2001 From: Dasky <32983009+daskygit@users.noreply.github.com> Date: Sun, 5 Jun 2022 23:21:12 +0100 Subject: [PATCH 2/3] doppelganger should use old behaviour --- keyboards/doppelganger/doppelganger.c | 35 +++++++++++++++------------ 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/keyboards/doppelganger/doppelganger.c b/keyboards/doppelganger/doppelganger.c index 04d19480daab..de3849e383ad 100644 --- a/keyboards/doppelganger/doppelganger.c +++ b/keyboards/doppelganger/doppelganger.c @@ -15,25 +15,30 @@ */ #include "doppelganger.h" -void keyboard_pre_init_kb (void) { - setPinOutput(C6); - setPinOutput(B0); +void keyboard_pre_init_kb(void) { + setPinOutput(C6); + setPinOutput(B0); } bool led_update_kb(led_t led_state) { - bool res = led_update_user(led_state); - if(res) { - // writePin sets the pin high for 1 and low for 0. - // In this example the pins are inverted, setting - // it low/0 turns it on, and high/1 turns the LED off. - // This behavior depends on whether the LED is between the pin - // and VCC or the pin and GND. - writePin(C6, !led_state.caps_lock); - } - return res; + bool res = led_update_user(led_state); + if (res) { + // writePin sets the pin high for 1 and low for 0. + // In this example the pins are inverted, setting + // it low/0 turns it on, and high/1 turns the LED off. + // This behavior depends on whether the LED is between the pin + // and VCC or the pin and GND. + writePin(C6, !led_state.caps_lock); + } + return res; } __attribute__((weak)) layer_state_t layer_state_set_user(layer_state_t state) { - writePin(B0, !(state & (1UL << 1))); - return state; + writePin(B0, !(state & (1UL << 1))); + return state; +} + +bool is_keyboard_left(void) { + setPinInput(SPLIT_HAND_PIN); + return readPin(SPLIT_HAND_PIN); } From f5a8f1857caf73e951ff36e77598cb8512b2a1b1 Mon Sep 17 00:00:00 2001 From: Dasky <32983009+daskygit@users.noreply.github.com> Date: Mon, 6 Jun 2022 01:05:37 +0100 Subject: [PATCH 3/3] Add comment for future Co-authored-by: Joel Challis --- keyboards/doppelganger/doppelganger.c | 1 + 1 file changed, 1 insertion(+) diff --git a/keyboards/doppelganger/doppelganger.c b/keyboards/doppelganger/doppelganger.c index de3849e383ad..304d764028a1 100644 --- a/keyboards/doppelganger/doppelganger.c +++ b/keyboards/doppelganger/doppelganger.c @@ -38,6 +38,7 @@ __attribute__((weak)) layer_state_t layer_state_set_user(layer_state_t state) { return state; } +// Override core logic as we reuse SPLIT_HAND_PIN within matrix pins bool is_keyboard_left(void) { setPinInput(SPLIT_HAND_PIN); return readPin(SPLIT_HAND_PIN);