[mutter/wip/carlosg/wacom-x11-mode-switch] x11: Check wacom button flags to determine whether button is mode switch



commit 11c6a43d61e75e8558db8c26c7405f967d5a01ef
Author: Carlos Garnacho <carlosg gnome org>
Date:   Thu Nov 28 22:50:36 2019 +0100

    x11: Check wacom button flags to determine whether button is mode switch
    
    Checking the leds is not really accurate, since some devices have mode
    switch buttons without leds. Check in the button flags whether they are
    mode switch buttons for any of ring/ring2/strip/strip2, and return the
    appropriate group.

 src/backends/x11/meta-input-device-x11.c | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)
---
diff --git a/src/backends/x11/meta-input-device-x11.c b/src/backends/x11/meta-input-device-x11.c
index 4b1eeddf9..26a40620f 100644
--- a/src/backends/x11/meta-input-device-x11.c
+++ b/src/backends/x11/meta-input-device-x11.c
@@ -151,14 +151,25 @@ meta_input_device_x11_get_button_group (ClutterInputDevice *device,
 
   if (device_xi2->wacom_device)
     {
+      WacomButtonFlags flags;
+
       if (button >= libwacom_get_num_buttons (device_xi2->wacom_device))
         return -1;
 
-      return libwacom_get_button_led_group (device_xi2->wacom_device,
-                                            'A' + button);
+      flags = libwacom_get_button_flag (device_xi2->wacom_device,
+                                        'A' + button);
+
+      if (flags &
+          (WACOM_BUTTON_RING_MODESWITCH |
+           WACOM_BUTTON_TOUCHSTRIP_MODESWITCH))
+        return 0;
+      if (flags &
+          (WACOM_BUTTON_RING2_MODESWITCH |
+           WACOM_BUTTON_TOUCHSTRIP2_MODESWITCH))
+        return 1;
     }
-  else
-    return -1;
+
+  return -1;
 }
 #endif
 


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