[mutter] backends: Add support for Wacom stylus tertiary-button-action



commit f8f1bcfa9e6a02c621a194182dd7f8c3abe4331c
Author: Jason Gerecke <killertofu gmail com>
Date:   Tue Oct 10 08:55:41 2017 -0700

    backends: Add support for Wacom stylus tertiary-button-action
    
    The tertiary-button-action (see bug 790028) is a place for g-c-c to store
    the action which should be performed when a stylus' third button is pressed.
    Pressing this button is signaled as a BTN_STYLUS3 event from the kernel or
    X11 button 8.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=790033

 src/backends/meta-input-settings-private.h       |  3 ++-
 src/backends/meta-input-settings.c               |  5 +++--
 src/backends/native/meta-input-settings-native.c |  5 ++++-
 src/backends/x11/meta-input-settings-x11.c       | 10 ++++++++--
 4 files changed, 17 insertions(+), 6 deletions(-)
---
diff --git a/src/backends/meta-input-settings-private.h b/src/backends/meta-input-settings-private.h
index 605690eb6..893d4ec23 100644
--- a/src/backends/meta-input-settings-private.h
+++ b/src/backends/meta-input-settings-private.h
@@ -111,7 +111,8 @@ struct _MetaInputSettingsClass
                                   ClutterInputDevice         *device,
                                   ClutterInputDeviceTool     *tool,
                                   GDesktopStylusButtonAction  primary,
-                                  GDesktopStylusButtonAction  secondary);
+                                  GDesktopStylusButtonAction  secondary,
+                                  GDesktopStylusButtonAction  tertiary);
   gboolean (* has_two_finger_scroll) (MetaInputSettings  *settings,
                                       ClutterInputDevice *device);
 };
diff --git a/src/backends/meta-input-settings.c b/src/backends/meta-input-settings.c
index 2dd757bce..93f8ec051 100644
--- a/src/backends/meta-input-settings.c
+++ b/src/backends/meta-input-settings.c
@@ -1525,7 +1525,7 @@ update_stylus_buttonmap (MetaInputSettings      *input_settings,
                          ClutterInputDeviceTool *tool)
 {
   MetaInputSettingsClass *input_settings_class;
-  GDesktopStylusButtonAction primary, secondary;
+  GDesktopStylusButtonAction primary, secondary, tertiary;
   GSettings *tool_settings;
 
   if (clutter_input_device_get_device_type (device) != CLUTTER_TABLET_DEVICE &&
@@ -1540,10 +1540,11 @@ update_stylus_buttonmap (MetaInputSettings      *input_settings,
 
   primary = g_settings_get_enum (tool_settings, "button-action");
   secondary = g_settings_get_enum (tool_settings, "secondary-button-action");
+  tertiary = g_settings_get_enum (tool_settings, "tertiary-button-action");
 
   input_settings_class = META_INPUT_SETTINGS_GET_CLASS (input_settings);
   input_settings_class->set_stylus_button_map (input_settings, device, tool,
-                                               primary, secondary);
+                                               primary, secondary, tertiary);
 }
 
 static void
diff --git a/src/backends/native/meta-input-settings-native.c 
b/src/backends/native/meta-input-settings-native.c
index beb721774..7450725f1 100644
--- a/src/backends/native/meta-input-settings-native.c
+++ b/src/backends/native/meta-input-settings-native.c
@@ -547,12 +547,15 @@ meta_input_settings_native_set_stylus_button_map (MetaInputSettings          *se
                                                   ClutterInputDevice         *device,
                                                   ClutterInputDeviceTool     *tool,
                                                   GDesktopStylusButtonAction  primary,
-                                                  GDesktopStylusButtonAction  secondary)
+                                                  GDesktopStylusButtonAction  secondary,
+                                                  GDesktopStylusButtonAction  tertiary)
 {
   clutter_evdev_input_device_tool_set_button_code (tool, CLUTTER_BUTTON_MIDDLE,
                                                    action_to_evcode (primary));
   clutter_evdev_input_device_tool_set_button_code (tool, CLUTTER_BUTTON_SECONDARY,
                                                    action_to_evcode (secondary));
+  clutter_evdev_input_device_tool_set_button_code (tool, 8, /* Back */
+                                                   action_to_evcode (tertiary));
 }
 
 static void
diff --git a/src/backends/x11/meta-input-settings-x11.c b/src/backends/x11/meta-input-settings-x11.c
index d1ee37ac2..01b02a379 100644
--- a/src/backends/x11/meta-input-settings-x11.c
+++ b/src/backends/x11/meta-input-settings-x11.c
@@ -732,7 +732,8 @@ meta_input_settings_x11_set_stylus_button_map (MetaInputSettings          *setti
                                                ClutterInputDevice         *device,
                                                ClutterInputDeviceTool     *tool,
                                                GDesktopStylusButtonAction  primary,
-                                               GDesktopStylusButtonAction  secondary)
+                                               GDesktopStylusButtonAction  secondary,
+                                               GDesktopStylusButtonAction  tertiary)
 {
   MetaDisplay *display = meta_get_display ();
   MetaBackend *backend = meta_get_backend ();
@@ -748,10 +749,15 @@ meta_input_settings_x11_set_stylus_button_map (MetaInputSettings          *setti
   xdev = XOpenDevice (xdisplay, device_id);
   if (xdev)
     {
-      guchar map[3] = {
+      guchar map[8] = {
         CLUTTER_BUTTON_PRIMARY,
         action_to_button (primary, CLUTTER_BUTTON_MIDDLE),
         action_to_button (secondary, CLUTTER_BUTTON_SECONDARY),
+        4,
+        5,
+        6,
+        7,
+        action_to_button (tertiary, 8), /* "Back" */
       };
 
       XSetDeviceButtonMapping (xdisplay, xdev, map, G_N_ELEMENTS (map));


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