From 3e2baa3f05ac963fbefe96132d7033ad6ce593a2 Mon Sep 17 00:00:00 2001 From: Consolatis <35009135+Consolatis@users.noreply.github.com> Date: Sun, 8 Oct 2023 19:26:16 +0200 Subject: [PATCH] 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 --- src/keyboard.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/keyboard.c b/src/keyboard.c index 2b705140..a589ee8f 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -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 {