summaryrefslogtreecommitdiff
path: root/src/backends/x11/meta-input-settings-x11.c
diff options
context:
space:
mode:
authorAndrew Gaul <andrew@gaul.org>2018-10-05 17:06:58 -0700
committerAndrew Gaul <andrew@gaul.org>2020-03-15 13:04:32 +0900
commit0487e6f11fc9231214c03bd8eb5050a7e04a621d (patch)
tree80d138ebb1d5db236a741fadf5e4819cea505bff /src/backends/x11/meta-input-settings-x11.c
parent23da6c2426932dcb2057849eec9e1d79c34fc405 (diff)
downloadmutter-0487e6f11fc9231214c03bd8eb5050a7e04a621d.tar.gz
input-settings: Wire up middle-emulation
This allows emulating middle click via simultaneous left and right click. Fixes #238. https://gitlab.gnome.org/GNOME/mutter/merge_requests/256
Diffstat (limited to 'src/backends/x11/meta-input-settings-x11.c')
-rw-r--r--src/backends/x11/meta-input-settings-x11.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/backends/x11/meta-input-settings-x11.c b/src/backends/x11/meta-input-settings-x11.c
index 05f932420..a9658e702 100644
--- a/src/backends/x11/meta-input-settings-x11.c
+++ b/src/backends/x11/meta-input-settings-x11.c
@@ -513,6 +513,13 @@ is_mouse (MetaInputSettings *settings,
}
static gboolean
+meta_input_settings_x11_is_touchpad_device (MetaInputSettings *settings,
+ ClutterInputDevice *device)
+{
+ return has_udev_property (settings, device, "ID_INPUT_TOUCHPAD");
+}
+
+static gboolean
meta_input_settings_x11_is_trackball_device (MetaInputSettings *settings,
ClutterInputDevice *device)
{
@@ -821,6 +828,48 @@ meta_input_settings_x11_set_stylus_button_map (MetaInputSettings *setti
}
static void
+meta_input_settings_x11_set_mouse_middle_click_emulation (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ gboolean enabled)
+{
+ guchar value = enabled ? 1 : 0;
+
+ if (!is_mouse (settings, device))
+ return;
+
+ change_property (device, "libinput Middle Click Emulation Enabled",
+ XA_INTEGER, 8, &value, 1);
+}
+
+static void
+meta_input_settings_x11_set_touchpad_middle_click_emulation (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ gboolean enabled)
+{
+ guchar value = enabled ? 1 : 0;
+
+ if (!meta_input_settings_x11_is_touchpad_device (settings, device))
+ return;
+
+ change_property (device, "libinput Middle Click Emulation Enabled",
+ XA_INTEGER, 8, &value, 1);
+}
+
+static void
+meta_input_settings_x11_set_trackball_middle_click_emulation (MetaInputSettings *settings,
+ ClutterInputDevice *device,
+ gboolean enabled)
+{
+ guchar value = enabled ? 1 : 0;
+
+ if (!meta_input_settings_x11_is_trackball_device (settings, device))
+ return;
+
+ change_property (device, "libinput Middle Click Emulation Enabled",
+ XA_INTEGER, 8, &value, 1);
+}
+
+static void
meta_input_settings_x11_set_stylus_pressure (MetaInputSettings *settings,
ClutterInputDevice *device,
ClutterInputDeviceTool *tool,
@@ -864,6 +913,10 @@ meta_input_settings_x11_class_init (MetaInputSettingsX11Class *klass)
input_settings_class->set_stylus_pressure = meta_input_settings_x11_set_stylus_pressure;
input_settings_class->set_stylus_button_map = meta_input_settings_x11_set_stylus_button_map;
+ input_settings_class->set_mouse_middle_click_emulation = meta_input_settings_x11_set_mouse_middle_click_emulation;
+ input_settings_class->set_touchpad_middle_click_emulation = meta_input_settings_x11_set_touchpad_middle_click_emulation;
+ input_settings_class->set_trackball_middle_click_emulation = meta_input_settings_x11_set_trackball_middle_click_emulation;
+
input_settings_class->has_two_finger_scroll = meta_input_settings_x11_has_two_finger_scroll;
input_settings_class->is_trackball_device = meta_input_settings_x11_is_trackball_device;
}