~ruther/qmk_firmware

54e2bf3edefb670ede2c2c3934dc732264ac6381 — Joshua Diamond 4 years ago 9453573
Fix Issue #9533 - Delayed shift state handling (#11220)

Co-authored-by: Ryan <fauxpark@gmail.com>
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;
        }