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 65bd32d625
commit 3e2baa3f05

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 {