From 57b3a2ea620f754cfd38f1ed4851dd8223efbcab Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Thu, 28 Nov 2019 22:50:36 +0100 Subject: [PATCH] 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 --- .../clutter/x11/clutter-input-device-xi2.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/clutter/clutter/x11/clutter-input-device-xi2.c b/clutter/clutter/x11/clutter-input-device-xi2.c index 1254aca3ae..4e5e2fd12c 100644 --- a/clutter/clutter/x11/clutter-input-device-xi2.c +++ b/clutter/clutter/x11/clutter-input-device-xi2.c @@ -155,14 +155,25 @@ clutter_input_device_xi2_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 -- 2.24.0