[mutter] clutter/evdev: Don't ignore CAPS lock as modifier



commit 6df2b7af556bf01f8d564b86c66c293678ab6b90
Author: Olivier Fourdan <ofourdan redhat com>
Date:   Tue Apr 17 14:03:12 2018 +0200

    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

 clutter/clutter/evdev/clutter-input-device-evdev.c | 8 ++++++++
 1 file changed, 8 insertions(+)
---
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;
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]