diff options
author | Andrew Gaul <andrew@gaul.org> | 2018-10-05 17:06:58 -0700 |
---|---|---|
committer | Andrew Gaul <andrew@gaul.org> | 2020-03-15 13:04:32 +0900 |
commit | 0487e6f11fc9231214c03bd8eb5050a7e04a621d (patch) | |
tree | 80d138ebb1d5db236a741fadf5e4819cea505bff /src/backends/x11/meta-input-settings-x11.c | |
parent | 23da6c2426932dcb2057849eec9e1d79c34fc405 (diff) | |
download | mutter-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.c | 53 |
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; } |