keyboard: prevent storing synthetic layout change key event

Before this patch, we were storing the key in our pressed set
and didn't remove it which in turn caused all further keybinds
to fail. The behavior was dependent on the exact flow of press
and release events and was most obvious when using
XKB_DEFAULT_OPTIONS=grp:alt_shift_toggle

We now simply treat it as a modifier and thus do not store it
in the pressed set.

Fixes: #1129
This commit is contained in:
Consolatis 2023-10-08 19:26:16 +02:00
parent 6cf3a0603f
commit 43cc6632b5

View file

@ -133,7 +133,9 @@ static bool is_modifier_key(xkb_keysym_t sym)
|| sym == XKB_KEY_Super_R
/* Right hand Alt key for Mod5 */
|| sym == XKB_KEY_Mode_switch
|| sym == XKB_KEY_ISO_Level3_Shift;
|| sym == XKB_KEY_ISO_Level3_Shift
/* Prevents storing layout change notifier in pressed */
|| sym == XKB_KEY_ISO_Next_Group;
}
struct keysyms {