37e9aa1136
834 and 897)
103 lines
3.7 KiB
Diff
103 lines
3.7 KiB
Diff
From d61d385951c5678ad18d495358abe952ce359ac9 Mon Sep 17 00:00:00 2001
|
|
From: Hector Martin <marcan@marcan.st>
|
|
Date: Sat, 10 Dec 2022 19:40:07 +0900
|
|
Subject: [PATCH] evdev: Enable natural scrolling by default on Apple
|
|
|
|
As suggested by the comment itself. I think most users expect this.
|
|
|
|
Signed-off-by: Hector Martin <marcan@marcan.st>
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
---
|
|
src/evdev-mt-touchpad.c | 12 ++++++++++++
|
|
src/evdev.c | 3 +--
|
|
test/litest.h | 4 ++++
|
|
test/test-touchpad.c | 6 ++++--
|
|
4 files changed, 21 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c
|
|
index b29a5c56..e2ecdea7 100644
|
|
--- a/src/evdev-mt-touchpad.c
|
|
+++ b/src/evdev-mt-touchpad.c
|
|
@@ -3137,12 +3137,24 @@ tp_scroll_config_scroll_method_get_default_method(struct libinput_device *device
|
|
return tp_scroll_get_default_method(tp);
|
|
}
|
|
|
|
+static int
|
|
+tp_scroll_config_natural_get_default(struct libinput_device *device)
|
|
+{
|
|
+ struct evdev_device *dev = evdev_device(device);
|
|
+
|
|
+ return (evdev_device_has_model_quirk(dev, QUIRK_MODEL_APPLE_TOUCHPAD) ||
|
|
+ evdev_device_has_model_quirk(dev, QUIRK_MODEL_APPLE_TOUCHPAD_ONEBUTTON));
|
|
+}
|
|
+
|
|
static void
|
|
tp_init_scroll(struct tp_dispatch *tp, struct evdev_device *device)
|
|
{
|
|
tp_edge_scroll_init(tp, device);
|
|
|
|
evdev_init_natural_scroll(device);
|
|
+ /* Override natural scroll config for Apple touchpads */
|
|
+ device->scroll.config_natural.get_default_enabled = tp_scroll_config_natural_get_default;
|
|
+ device->scroll.natural_scrolling_enabled = tp_scroll_config_natural_get_default(&device->base);
|
|
|
|
tp->scroll.config_method.get_methods = tp_scroll_config_scroll_method_get_methods;
|
|
tp->scroll.config_method.set_method = tp_scroll_config_scroll_method_set_method;
|
|
diff --git a/src/evdev.c b/src/evdev.c
|
|
index 524ae9a1..33b3f514 100644
|
|
--- a/src/evdev.c
|
|
+++ b/src/evdev.c
|
|
@@ -957,8 +957,7 @@ evdev_scroll_config_natural_get(struct libinput_device *device)
|
|
static int
|
|
evdev_scroll_config_natural_get_default(struct libinput_device *device)
|
|
{
|
|
- /* could enable this on Apple touchpads. could do that, could
|
|
- * very well do that... */
|
|
+ /* Overridden in evdev-mt-touchpad.c for Apple touchpads. */
|
|
return 0;
|
|
}
|
|
|
|
diff --git a/test/litest.h b/test/litest.h
|
|
index baba5cbb..95150831 100644
|
|
--- a/test/litest.h
|
|
+++ b/test/litest.h
|
|
@@ -1064,6 +1064,8 @@ litest_enable_2fg_scroll(struct litest_device *dev)
|
|
|
|
expected = LIBINPUT_CONFIG_STATUS_SUCCESS;
|
|
litest_assert_int_eq(status, expected);
|
|
+
|
|
+ libinput_device_config_scroll_set_natural_scroll_enabled(device, 0);
|
|
}
|
|
|
|
static inline void
|
|
@@ -1077,6 +1079,8 @@ litest_enable_edge_scroll(struct litest_device *dev)
|
|
|
|
expected = LIBINPUT_CONFIG_STATUS_SUCCESS;
|
|
litest_assert_int_eq(status, expected);
|
|
+
|
|
+ libinput_device_config_scroll_set_natural_scroll_enabled(device, 0);
|
|
}
|
|
|
|
static inline bool
|
|
diff --git a/test/test-touchpad.c b/test/test-touchpad.c
|
|
index c02cb01c..d72ae0fa 100644
|
|
--- a/test/test-touchpad.c
|
|
+++ b/test/test-touchpad.c
|
|
@@ -611,9 +611,11 @@ START_TEST(touchpad_scroll_natural_defaults)
|
|
{
|
|
struct litest_device *dev = litest_current_device();
|
|
|
|
+ int enabled = libevdev_get_id_vendor(dev->evdev) == VENDOR_ID_APPLE;
|
|
+
|
|
ck_assert_int_ge(libinput_device_config_scroll_has_natural_scroll(dev->libinput_device), 1);
|
|
- ck_assert_int_eq(libinput_device_config_scroll_get_natural_scroll_enabled(dev->libinput_device), 0);
|
|
- ck_assert_int_eq(libinput_device_config_scroll_get_default_natural_scroll_enabled(dev->libinput_device), 0);
|
|
+ ck_assert_int_eq(libinput_device_config_scroll_get_natural_scroll_enabled(dev->libinput_device), enabled);
|
|
+ ck_assert_int_eq(libinput_device_config_scroll_get_default_natural_scroll_enabled(dev->libinput_device), enabled);
|
|
}
|
|
END_TEST
|
|
|
|
--
|
|
2.40.0
|
|
|