diff options
Diffstat (limited to 'quantum/split_common')
-rw-r--r-- | quantum/split_common/split_util.c | 6 | ||||
-rw-r--r-- | quantum/split_common/transactions.c | 5 | ||||
-rw-r--r-- | quantum/split_common/transport.h | 1 |
3 files changed, 9 insertions, 3 deletions
diff --git a/quantum/split_common/split_util.c b/quantum/split_common/split_util.c index 96f19bfd84..9af3c29d75 100644 --- a/quantum/split_common/split_util.c +++ b/quantum/split_common/split_util.c @@ -63,7 +63,7 @@ static struct { #if defined(SPLIT_USB_DETECT) _Static_assert((SPLIT_USB_TIMEOUT / SPLIT_USB_TIMEOUT_POLL) <= UINT16_MAX, "Please lower SPLIT_USB_TIMEOUT and/or increase SPLIT_USB_TIMEOUT_POLL."); -static bool usbIsActive(void) { +static bool usb_bus_detected(void) { for (uint16_t i = 0; i < (SPLIT_USB_TIMEOUT / SPLIT_USB_TIMEOUT_POLL); i++) { // This will return true if a USB connection has been established if (usb_connected_state()) { @@ -74,7 +74,7 @@ static bool usbIsActive(void) { return false; } #else -static inline bool usbIsActive(void) { +static inline bool usb_bus_detected(void) { return usb_vbus_state(); } #endif @@ -179,7 +179,7 @@ __attribute__((weak)) bool is_keyboard_left_impl(void) { } __attribute__((weak)) bool is_keyboard_master_impl(void) { - bool is_master = usbIsActive(); + bool is_master = usb_bus_detected(); // Avoid NO_USB_STARTUP_CHECK - Disable USB as the previous checks seem to enable it somehow if (!is_master) { diff --git a/quantum/split_common/transactions.c b/quantum/split_common/transactions.c index 33bc9e9f57..decf5e5ede 100644 --- a/quantum/split_common/transactions.c +++ b/quantum/split_common/transactions.c @@ -419,6 +419,10 @@ static bool mods_handlers_master(matrix_row_t master_matrix[], matrix_row_t slav if (!mods_need_sync && new_mods.oneshot_mods != split_shmem->mods.oneshot_mods) { mods_need_sync = true; } + new_mods.oneshot_locked_mods = get_oneshot_locked_mods(); + if (!mods_need_sync && new_mods.oneshot_locked_mods != split_shmem->mods.oneshot_locked_mods) { + mods_need_sync = true; + } # endif // NO_ACTION_ONESHOT bool okay = true; @@ -442,6 +446,7 @@ static void mods_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave set_weak_mods(mods.weak_mods); # ifndef NO_ACTION_ONESHOT set_oneshot_mods(mods.oneshot_mods); + set_oneshot_locked_mods(mods.oneshot_locked_mods); # endif } diff --git a/quantum/split_common/transport.h b/quantum/split_common/transport.h index 4f6b968fa8..fbd87ca312 100644 --- a/quantum/split_common/transport.h +++ b/quantum/split_common/transport.h @@ -101,6 +101,7 @@ typedef struct _split_mods_sync_t { uint8_t weak_mods; # ifndef NO_ACTION_ONESHOT uint8_t oneshot_mods; + uint8_t oneshot_locked_mods; # endif // NO_ACTION_ONESHOT } split_mods_sync_t; #endif // SPLIT_MODS_ENABLE |