diff options
author | Takeshi ISHII <2170248+mtei@users.noreply.github.com> | 2020-07-04 23:04:47 +0900 |
---|---|---|
committer | Drashna Jael're <drashna@live.com> | 2020-08-08 22:09:30 -0700 |
commit | 063f14f72d79bb9fada650306bbd6aba6e77258b (patch) | |
tree | 9b05ccfef8eba9e02b45ff43ba7ed3322f5aa570 | |
parent | e0ab67fb43333fb21cf79c803870ebda72fe30e0 (diff) |
add SPLIT_HAND_MATRIX_GRID support (#8685)
Co-authored-by: Danny <nooges@users.noreply.github.com>
-rw-r--r-- | quantum/split_common/split_util.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/quantum/split_common/split_util.c b/quantum/split_common/split_util.c index dfd06f5f94..0850d8041f 100644 --- a/quantum/split_common/split_util.c +++ b/quantum/split_common/split_util.c @@ -5,6 +5,7 @@ #include "timer.h" #include "transport.h" #include "quantum.h" +#include "wait.h" #ifdef PROTOCOL_LUFA # include <LUFA/Drivers/USB/USB.h> @@ -79,11 +80,34 @@ static inline bool usbIsActive(void) { static inline bool usbIsActive(void) { return true; } #endif +#ifdef SPLIT_HAND_MATRIX_GRID +void matrix_io_delay(void); + +static uint8_t peek_matrix_intersection(pin_t out_pin, pin_t in_pin) { + setPinInputHigh(in_pin); + setPinOutput(out_pin); + writePinLow(out_pin); + // It's almost unnecessary, but wait until it's down to low, just in case. + wait_us(1); + uint8_t pin_state = readPin(in_pin); + // Set out_pin to a setting that is less susceptible to noise. + setPinInputHigh(out_pin); + matrix_io_delay(); // Wait for the pull-up to go HIGH. + return pin_state; +} +#endif + __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); return readPin(SPLIT_HAND_PIN); +#elif defined(SPLIT_HAND_MATRIX_GRID) +# ifdef SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT + return peek_matrix_intersection(SPLIT_HAND_MATRIX_GRID); +# else + return !peek_matrix_intersection(SPLIT_HAND_MATRIX_GRID); +# endif #elif defined(EE_HANDS) return eeconfig_read_handedness(); #elif defined(MASTER_RIGHT) |