keybindings: Mask out the reserved modifiers mask

When switching layouts, special modifiers bits may be be set for
internal use by Xkb.

As we now ignore a set of modifiers when processing the special
modifiers keys, we ought to also mask out those reserved modifiers
otherwise we would discard the [Super] key after switching layouts
in X11.

Closes: https://gitlab.gnome.org/GNOME/mutter/issues/1144
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1219

(cherry picked from commit 61356caa06)
This commit is contained in:
Olivier Fourdan 2020-04-27 17:01:22 +02:00 committed by Robert Mader
parent dbecb93233
commit 2cc8061f35

View File

@ -2129,7 +2129,7 @@ process_special_modifier_key (MetaDisplay *display,
return TRUE; return TRUE;
} }
else if (event->type == CLUTTER_KEY_PRESS && else if (event->type == CLUTTER_KEY_PRESS &&
(event->modifier_state & ~(IGNORED_MODIFIERS)) == 0 && ((event->modifier_state & ~(IGNORED_MODIFIERS)) & CLUTTER_MODIFIER_MASK) == 0 &&
resolved_key_combo_has_keycode (resolved_key_combo, resolved_key_combo_has_keycode (resolved_key_combo,
event->hardware_keycode)) event->hardware_keycode))
{ {