From 54e2bf3edefb670ede2c2c3934dc732264ac6381 Mon Sep 17 00:00:00 2001 From: Joshua Diamond Date: Tue, 22 Dec 2020 12:23:09 -0500 Subject: [PATCH] Fix Issue #9533 - Delayed shift state handling (#11220) Co-authored-by: Ryan --- quantum/process_keycode/process_unicode_common.h | 1 - quantum/process_keycode/process_unicodemap.c | 9 +++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/quantum/process_keycode/process_unicode_common.h b/quantum/process_keycode/process_unicode_common.h index 3082fbb5f..c10e171ec 100644 --- a/quantum/process_keycode/process_unicode_common.h +++ b/quantum/process_keycode/process_unicode_common.h @@ -75,7 +75,6 @@ typedef union { } unicode_config_t; extern unicode_config_t unicode_config; -extern uint8_t unicode_saved_mods; void unicode_input_mode_init(void); uint8_t get_unicode_input_mode(void); diff --git a/quantum/process_keycode/process_unicodemap.c b/quantum/process_keycode/process_unicodemap.c index fcf676c24..459397014 100644 --- a/quantum/process_keycode/process_unicodemap.c +++ b/quantum/process_keycode/process_unicodemap.c @@ -21,8 +21,13 @@ __attribute__((weak)) uint16_t unicodemap_index(uint16_t keycode) { // Keycode is a pair: extract index based on Shift / Caps Lock state uint16_t index = keycode - QK_UNICODEMAP_PAIR; - bool shift = unicode_saved_mods & MOD_MASK_SHIFT; - bool caps = IS_HOST_LED_ON(USB_LED_CAPS_LOCK); + uint8_t mods = get_mods() | get_weak_mods(); +#ifndef NO_ACTION_ONESHOT + mods |= get_oneshot_mods(); +#endif + + bool shift = mods & MOD_MASK_SHIFT; + bool caps = host_keyboard_led_state().caps_lock; if (shift ^ caps) { index >>= 7; }