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



commit 6aba87a273b532154bc1d14a8622397feed45d13
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.
    
    https://gitlab.gnome.org/GNOME/mutter/merge_requests/952

 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]