[mutter/gnome-3-32] clutter/evdev: disable mousekeys with Numlock ON
- From: Olivier Fourdan <ofourdan src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/gnome-3-32] clutter/evdev: disable mousekeys with Numlock ON
- Date: Fri, 19 Apr 2019 14:20:24 +0000 (UTC)
commit 4705a3104917c98cb9309fb7e7f74eba41354118
Author: Olivier Fourdan <ofourdan redhat com>
Date: Tue Apr 9 13:39:59 2019 +0200
clutter/evdev: disable mousekeys with Numlock ON
The clutter/evdev implementation of mousekeys is designed after the
current implementation in X11, and works when the setting is enabled
regardless of the status of NumLock.
The GNOME documentation on accessibility features states however that
mousekeys work only when NumLock is OFF:
https://help.gnome.org/users/gnome-help/stable/mouse-mousekeys.html
Change the clutter/evdev implementation to match the documentation, i.e.
disable mousekeys when NumLock in ON so that switching NumLock ON
restores the numeric keypad behaviour.
Closes: https://gitlab.gnome.org/GNOME/mutter/issues/530
(cherry picked from commit 471b61bd1400435b7af977c47c21b8fc747530d9)
clutter/clutter/evdev/clutter-input-device-evdev.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
---
diff --git a/clutter/clutter/evdev/clutter-input-device-evdev.c
b/clutter/clutter/evdev/clutter-input-device-evdev.c
index 2ac2e119d..73072b4c7 100644
--- a/clutter/clutter/evdev/clutter-input-device-evdev.c
+++ b/clutter/clutter/evdev/clutter-input-device-evdev.c
@@ -855,6 +855,14 @@ emulate_pointer_motion (ClutterInputDeviceEvdev *device,
clutter_virtual_input_device_notify_relative_motion (device->mousekeys_virtual_device,
time_us, dx_motion, dy_motion);
}
+static gboolean
+is_numlock_active (ClutterInputDeviceEvdev *device)
+{
+ ClutterSeatEvdev *seat = device->seat;
+ return xkb_state_mod_name_is_active (seat->xkb,
+ "Mod2",
+ XKB_STATE_MODS_LOCKED);
+}
static void
enable_mousekeys (ClutterInputDeviceEvdev *device)
@@ -1013,6 +1021,10 @@ handle_mousekeys_press (ClutterEvent *event,
if (!(event->key.flags & CLUTTER_EVENT_FLAG_SYNTHETIC))
stop_mousekeys_move (device);
+ /* Do not handle mousekeys if NumLock is ON */
+ if (is_numlock_active (device))
+ return FALSE;
+
/* Button selection */
switch (event->key.keyval)
{
@@ -1084,6 +1096,10 @@ static gboolean
handle_mousekeys_release (ClutterEvent *event,
ClutterInputDeviceEvdev *device)
{
+ /* Do not handle mousekeys if NumLock is ON */
+ if (is_numlock_active (device))
+ return FALSE;
+
switch (event->key.keyval)
{
case XKB_KEY_KP_0:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]