diff --git a/src/backends/native/meta-seat-impl.c b/src/backends/native/meta-seat-impl.c index 0c26647b4..77eb4faac 100644 --- a/src/backends/native/meta-seat-impl.c +++ b/src/backends/native/meta-seat-impl.c @@ -415,16 +415,6 @@ meta_seat_impl_notify_key_in_impl (MetaSeatImpl *seat_impl, return; } } - - keycode = meta_xkb_evdev_to_keycode (key); - - /* We must be careful and not pass multiple releases to xkb, otherwise it gets - confused and locks the modifiers */ - if (state != AUTOREPEAT_VALUE) - { - changed_state = xkb_state_update_key (seat_impl->xkb, keycode, - state ? XKB_KEY_DOWN : XKB_KEY_UP); - } else { changed_state = 0; @@ -438,6 +428,16 @@ meta_seat_impl_notify_key_in_impl (MetaSeatImpl *seat_impl, seat_impl->button_state, time_us, key, state); + keycode = meta_xkb_evdev_to_keycode (key); + + /* We must be careful and not pass multiple releases to xkb, otherwise it gets + confused and locks the modifiers */ + if (state != AUTOREPEAT_VALUE) + { + changed_state = xkb_state_update_key (seat_impl->xkb, keycode, + state ? XKB_KEY_DOWN : XKB_KEY_UP); + } + if (!meta_input_device_native_process_kbd_a11y_event_in_impl (seat_impl->core_keyboard, event)) queue_event (seat_impl, event);