summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;