summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Fourdan <ofourdan@redhat.com>2018-04-17 14:03:12 +0200
committerOlivier Fourdan <ofourdan@redhat.com>2018-05-15 10:26:29 +0200
commit2dd9fc17c17cbc9b09f8a364682c5759d6539a8d (patch)
tree0ae709b1924444f9f3d06fa79dd62999ff8917c2
parentc7a38c31398871d2461b66963756816d268f524e (diff)
downloadmutter-2dd9fc17c17cbc9b09f8a364682c5759d6539a8d.tar.gz
clutter/evdev: Don't ignore CAPS lock as modifier
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. Closes: https://gitlab.gnome.org/GNOME/mutter/issues/112 (cherry picked from commit 6df2b7af556bf01f8d564b86c66c293678ab6b90)
-rw-r--r--clutter/clutter/evdev/clutter-input-device-evdev.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/clutter/clutter/evdev/clutter-input-device-evdev.c b/clutter/clutter/evdev/clutter-input-device-evdev.c
index e5dee650f..51c7e942c 100644
--- a/clutter/clutter/evdev/clutter-input-device-evdev.c
+++ b/clutter/clutter/evdev/clutter-input-device-evdev.c
@@ -433,6 +433,8 @@ key_event_is_modifier (ClutterEvent *event)
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;
@@ -584,6 +586,12 @@ handle_stickykeys_press (ClutterEvent *event,
}
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;