Mark CAPS lock as a modifier (as it should) so that when using XKB
options to change the default behaviour of CAPS lock, the new assigned
key can by used as a sticky key as well.
(cherry picked from commit
6df2b7af556bf01f8d564b86c66c293678ab6b90)
Bug: https://gitlab.gnome.org/GNOME/mutter/issues/112
Origin: upstream, 3.28.3, commit:
2dd9fc17c17cbc9b09f8a364682c5759d6539a8d
Gbp-Pq: Name clutter-evdev-Don-t-ignore-CAPS-lock-as-modifier.patch
case XKB_KEY_Super_R:
case XKB_KEY_Hyper_L:
case XKB_KEY_Hyper_R:
+ case XKB_KEY_Caps_Lock:
+ case XKB_KEY_Shift_Lock:
return TRUE;
default:
return FALSE;
}
depressed_mods = xkb_state_serialize_mods (seat->xkb, XKB_STATE_MODS_DEPRESSED);
+ /* Ignore the lock modifier mask, that one cannot be sticky, yet the
+ * CAPS_LOCK key itself counts as a modifier as it might be remapped
+ * to some other modifier which can be sticky.
+ */
+ depressed_mods &= ~CLUTTER_LOCK_MASK;
+
new_latched_mask = device->stickykeys_latched_mask;
new_locked_mask = device->stickykeys_locked_mask;