Fix Issue #9533 - Delayed shift state handling (#11220) Co-authored-by: Ryan <fauxpark@gmail.com>
2 files changed, 7 insertions(+), 3 deletions(-) M quantum/process_keycode/process_unicode_common.h M quantum/process_keycode/process_unicodemap.c
M quantum/process_keycode/process_unicode_common.h => quantum/process_keycode/process_unicode_common.h +0 -1
@@ 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);
M quantum/process_keycode/process_unicodemap.c => quantum/process_keycode/process_unicodemap.c +7 -2
@@ 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; }