From a36f211a234d7f3a65bd4196a49d3197a0b52e57 Mon Sep 17 00:00:00 2001 From: Evan Goode Date: Mon, 23 May 2022 13:01:49 -0400 Subject: [PATCH] Support selecting an accel profile for touchpad devices Signed-off-by: Evan Goode --- src/backends/meta-input-settings-dummy.c | 9 +++++++++ src/backends/meta-input-settings-private.h | 3 +++ src/backends/meta-input-settings.c | 6 ++++++ src/backends/native/meta-input-settings-native.c | 12 ++++++++++++ src/backends/x11/meta-input-settings-x11.c | 12 ++++++++++++ 5 files changed, 42 insertions(+) diff --git a/src/backends/meta-input-settings-dummy.c b/src/backends/meta-input-settings-dummy.c index 74e6f429ca..9e4314d727 100644 --- a/src/backends/meta-input-settings-dummy.c +++ b/src/backends/meta-input-settings-dummy.c @@ -167,6 +167,13 @@ meta_input_settings_dummy_set_mouse_accel_profile (MetaInputSettings * { } +static void +meta_input_settings_dummy_set_touchpad_accel_profile (MetaInputSettings *settings, + ClutterInputDevice *device, + GDesktopPointerAccelProfile profile) +{ +} + static void meta_input_settings_dummy_set_trackball_accel_profile (MetaInputSettings *settings, ClutterInputDevice *device, @@ -276,6 +283,8 @@ meta_input_settings_dummy_class_init (MetaInputSettingsDummyClass *klass) meta_input_settings_dummy_set_tablet_area; input_settings_class->set_mouse_accel_profile = meta_input_settings_dummy_set_mouse_accel_profile; + input_settings_class->set_touchpad_accel_profile = + meta_input_settings_dummy_set_touchpad_accel_profile; input_settings_class->set_trackball_accel_profile = meta_input_settings_dummy_set_trackball_accel_profile; input_settings_class->set_stylus_pressure = diff --git a/src/backends/meta-input-settings-private.h b/src/backends/meta-input-settings-private.h index 42ee0e0e6e..6e8bbbeb9c 100644 --- a/src/backends/meta-input-settings-private.h +++ b/src/backends/meta-input-settings-private.h @@ -142,6 +142,9 @@ struct _MetaInputSettingsClass void (* set_mouse_accel_profile) (MetaInputSettings *settings, ClutterInputDevice *device, GDesktopPointerAccelProfile profile); + void (* set_touchpad_accel_profile) (MetaInputSettings *settings, + ClutterInputDevice *device, + GDesktopPointerAccelProfile profile); void (* set_trackball_accel_profile) (MetaInputSettings *settings, ClutterInputDevice *device, GDesktopPointerAccelProfile profile); diff --git a/src/backends/meta-input-settings.c b/src/backends/meta-input-settings.c index 7d03d7182c..f26fdda1d3 100644 --- a/src/backends/meta-input-settings.c +++ b/src/backends/meta-input-settings.c @@ -375,6 +375,10 @@ do_update_pointer_accel_profile (MetaInputSettings *input_settings, input_settings_class->set_mouse_accel_profile (input_settings, device, profile); + else if (settings == priv->touchpad_settings) + input_settings_class->set_touchpad_accel_profile (input_settings, + device, + profile); else if (settings == priv->trackball_settings) input_settings_class->set_trackball_accel_profile (input_settings, device, @@ -1164,6 +1168,8 @@ meta_input_settings_changed_cb (GSettings *settings, update_device_speed (input_settings, NULL); else if (strcmp (key, "natural-scroll") == 0) update_device_natural_scroll (input_settings, NULL); + else if (strcmp (key, "accel-profile") == 0) + update_pointer_accel_profile (input_settings, settings, NULL); else if (strcmp (key, "tap-to-click") == 0) update_touchpad_tap_enabled (input_settings, NULL); else if (strcmp (key, "tap-button-map") == 0) diff --git a/src/backends/native/meta-input-settings-native.c b/src/backends/native/meta-input-settings-native.c index b3fc8df8a8..e6dc0f2a56 100644 --- a/src/backends/native/meta-input-settings-native.c +++ b/src/backends/native/meta-input-settings-native.c @@ -610,6 +610,17 @@ meta_input_settings_native_set_mouse_accel_profile (MetaInputSettings * set_device_accel_profile (device, profile); } +static void +meta_input_settings_native_set_touchpad_accel_profile (MetaInputSettings *settings, + ClutterInputDevice *device, + GDesktopPointerAccelProfile profile) +{ + if (!meta_input_settings_native_is_touchpad_device (settings, device)) + return; + + set_device_accel_profile (device, profile); +} + static void meta_input_settings_native_set_trackball_accel_profile (MetaInputSettings *settings, ClutterInputDevice *device, @@ -840,6 +851,7 @@ meta_input_settings_native_class_init (MetaInputSettingsNativeClass *klass) input_settings_class->set_tablet_area = meta_input_settings_native_set_tablet_area; input_settings_class->set_mouse_accel_profile = meta_input_settings_native_set_mouse_accel_profile; + input_settings_class->set_touchpad_accel_profile = meta_input_settings_native_set_touchpad_accel_profile; input_settings_class->set_trackball_accel_profile = meta_input_settings_native_set_trackball_accel_profile; input_settings_class->set_stylus_pressure = meta_input_settings_native_set_stylus_pressure; diff --git a/src/backends/x11/meta-input-settings-x11.c b/src/backends/x11/meta-input-settings-x11.c index 0cfbb0aff3..6fa76cc434 100644 --- a/src/backends/x11/meta-input-settings-x11.c +++ b/src/backends/x11/meta-input-settings-x11.c @@ -620,6 +620,17 @@ meta_input_settings_x11_set_mouse_accel_profile (MetaInputSettings *set set_device_accel_profile (device, profile); } +static void +meta_input_settings_x11_set_touchpad_accel_profile (MetaInputSettings *settings, + ClutterInputDevice *device, + GDesktopPointerAccelProfile profile) +{ + if (!meta_input_settings_x11_is_touchpad_device (settings, device)) + return; + + set_device_accel_profile (device, profile); +} + static void meta_input_settings_x11_set_trackball_accel_profile (MetaInputSettings *settings, ClutterInputDevice *device, @@ -923,6 +934,7 @@ meta_input_settings_x11_class_init (MetaInputSettingsX11Class *klass) input_settings_class->set_tablet_area = meta_input_settings_x11_set_tablet_area; input_settings_class->set_mouse_accel_profile = meta_input_settings_x11_set_mouse_accel_profile; + input_settings_class->set_touchpad_accel_profile = meta_input_settings_x11_set_touchpad_accel_profile; input_settings_class->set_trackball_accel_profile = meta_input_settings_x11_set_trackball_accel_profile; input_settings_class->set_stylus_pressure = meta_input_settings_x11_set_stylus_pressure; -- GitLab