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
This commit is contained in:
@ -400,6 +400,13 @@ is_mouse_device (ClutterInputDevice *device)
|
||||
!has_udev_property (device, "ID_INPUT_POINTINGSTICK"));
|
||||
}
|
||||
|
||||
static gboolean
|
||||
meta_input_settings_native_is_touchpad_device (MetaInputSettings *settings,
|
||||
ClutterInputDevice *device)
|
||||
{
|
||||
return has_udev_property (device, "ID_INPUT_TOUCHPAD");
|
||||
}
|
||||
|
||||
static gboolean
|
||||
meta_input_settings_native_is_trackball_device (MetaInputSettings *settings,
|
||||
ClutterInputDevice *device)
|
||||
@ -562,6 +569,60 @@ meta_input_settings_native_set_stylus_button_map (MetaInputSettings *se
|
||||
action_to_evcode (tertiary));
|
||||
}
|
||||
|
||||
static void
|
||||
meta_input_settings_native_set_mouse_middle_click_emulation (MetaInputSettings *settings,
|
||||
ClutterInputDevice *device,
|
||||
gboolean enabled)
|
||||
{
|
||||
struct libinput_device *libinput_device;
|
||||
|
||||
if (!is_mouse_device (device))
|
||||
return;
|
||||
|
||||
libinput_device = meta_input_device_native_get_libinput_device (device);
|
||||
if (!libinput_device)
|
||||
return;
|
||||
|
||||
if (libinput_device_config_middle_emulation_is_available (libinput_device))
|
||||
libinput_device_config_middle_emulation_set_enabled (libinput_device, enabled);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_input_settings_native_set_touchpad_middle_click_emulation (MetaInputSettings *settings,
|
||||
ClutterInputDevice *device,
|
||||
gboolean enabled)
|
||||
{
|
||||
struct libinput_device *libinput_device;
|
||||
|
||||
if (!meta_input_settings_native_is_touchpad_device (settings, device))
|
||||
return;
|
||||
|
||||
libinput_device = meta_input_device_native_get_libinput_device (device);
|
||||
if (!libinput_device)
|
||||
return;
|
||||
|
||||
if (libinput_device_config_middle_emulation_is_available (libinput_device))
|
||||
libinput_device_config_middle_emulation_set_enabled (libinput_device, enabled);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_input_settings_native_set_trackball_middle_click_emulation (MetaInputSettings *settings,
|
||||
ClutterInputDevice *device,
|
||||
gboolean enabled)
|
||||
{
|
||||
struct libinput_device *libinput_device;
|
||||
|
||||
if (!meta_input_settings_native_is_trackball_device (settings, device))
|
||||
return;
|
||||
|
||||
libinput_device = meta_input_device_native_get_libinput_device (device);
|
||||
if (!libinput_device)
|
||||
return;
|
||||
|
||||
if (libinput_device_config_middle_emulation_is_available (libinput_device))
|
||||
libinput_device_config_middle_emulation_set_enabled (libinput_device, enabled);
|
||||
}
|
||||
|
||||
static void
|
||||
meta_input_settings_native_class_init (MetaInputSettingsNativeClass *klass)
|
||||
{
|
||||
@ -591,6 +652,10 @@ meta_input_settings_native_class_init (MetaInputSettingsNativeClass *klass)
|
||||
input_settings_class->set_stylus_pressure = meta_input_settings_native_set_stylus_pressure;
|
||||
input_settings_class->set_stylus_button_map = meta_input_settings_native_set_stylus_button_map;
|
||||
|
||||
input_settings_class->set_mouse_middle_click_emulation = meta_input_settings_native_set_mouse_middle_click_emulation;
|
||||
input_settings_class->set_touchpad_middle_click_emulation = meta_input_settings_native_set_touchpad_middle_click_emulation;
|
||||
input_settings_class->set_trackball_middle_click_emulation = meta_input_settings_native_set_trackball_middle_click_emulation;
|
||||
|
||||
input_settings_class->has_two_finger_scroll = meta_input_settings_native_has_two_finger_scroll;
|
||||
input_settings_class->is_trackball_device = meta_input_settings_native_is_trackball_device;
|
||||
}
|
||||
|
Reference in New Issue
Block a user