Add two patches for better Apple touchpad behavior (see libinput MR
834 and 897)
This commit is contained in:
parent
a6cac42be5
commit
37e9aa1136
102
0001-evdev-Enable-natural-scrolling-by-default-on-Apple.patch
Normal file
102
0001-evdev-Enable-natural-scrolling-by-default-on-Apple.patch
Normal file
@ -0,0 +1,102 @@
|
||||
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
|
||||
|
@ -0,0 +1,50 @@
|
||||
From 4a8b5e6ec445b507fc0b1ef9842a60bf13c58772 Mon Sep 17 00:00:00 2001
|
||||
From: Hector Martin <marcan@marcan.st>
|
||||
Date: Thu, 6 Apr 2023 15:33:42 +0900
|
||||
Subject: [PATCH] touchpad: Disable edge palm detection Apple touchpads
|
||||
|
||||
This hurts more than it helps, and users complain of dead trackpad
|
||||
edges. Apple touchpads have fairly sophisticated internal palm rejection
|
||||
algorithms going back many years, so let's just disable this one on
|
||||
everything Apple.
|
||||
|
||||
Related to: #433 (need to figure out what other hardware may need this)
|
||||
|
||||
Signed-off-by: Hector Martin <marcan@marcan.st>
|
||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
---
|
||||
src/evdev-mt-touchpad.c | 4 ++++
|
||||
test/litest.h | 2 +-
|
||||
2 files changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c
|
||||
index e2ecdea7..5b040ce5 100644
|
||||
--- a/src/evdev-mt-touchpad.c
|
||||
+++ b/src/evdev-mt-touchpad.c
|
||||
@@ -3350,6 +3350,10 @@ tp_init_palmdetect_edge(struct tp_dispatch *tp,
|
||||
!tp_is_tpkb_combo_below(device))
|
||||
return;
|
||||
|
||||
+ /* Edge palm detection hurts more than it helps on Apple touchpads. */
|
||||
+ if (evdev_device_has_model_quirk(device, QUIRK_MODEL_APPLE_TOUCHPAD))
|
||||
+ return;
|
||||
+
|
||||
evdev_device_get_size(device, &width, &height);
|
||||
|
||||
/* Enable edge palm detection on touchpads >= 70 mm. Anything
|
||||
diff --git a/test/litest.h b/test/litest.h
|
||||
index 95150831..457790b3 100644
|
||||
--- a/test/litest.h
|
||||
+++ b/test/litest.h
|
||||
@@ -1287,7 +1287,7 @@ litest_has_palm_detect_size(struct litest_device *dev)
|
||||
if (bustype == BUS_BLUETOOTH)
|
||||
return 0;
|
||||
if (vendor == VENDOR_ID_APPLE)
|
||||
- return 1;
|
||||
+ return 0;
|
||||
|
||||
rc = libinput_device_get_size(dev->libinput_device, &width, &height);
|
||||
|
||||
--
|
||||
2.40.0
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
Name: libinput
|
||||
Version: 1.23.0
|
||||
Release: 1%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist}
|
||||
Release: 2%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist}
|
||||
Summary: Input device library
|
||||
|
||||
License: MIT
|
||||
@ -18,6 +18,9 @@ Source2: commitid
|
||||
Source0: https://gitlab.freedesktop.org/libinput/libinput/-/archive/%{version}/libinput-%{version}.tar.bz2
|
||||
%endif
|
||||
|
||||
Patch0001: 0001-evdev-Enable-natural-scrolling-by-default-on-Apple.patch
|
||||
Patch0002: 0001-touchpad-Disable-edge-palm-detection-Apple-touchpads.patch
|
||||
|
||||
BuildRequires: git-core
|
||||
BuildRequires: gcc
|
||||
BuildRequires: meson
|
||||
@ -153,6 +156,10 @@ intended to be run by users.
|
||||
|
||||
|
||||
%changelog
|
||||
* Tue Apr 11 2023 Peter Hutterer <peter.hutterer@redhat.com> - 1.23.0-2
|
||||
- Add two patches for better Apple touchpad behavior (see libinput MR
|
||||
834 and 897)
|
||||
|
||||
* Mon Mar 27 2023 Peter Hutterer <peter.hutterer@redhat.com> - 1.23.0-1
|
||||
- libinput 1.23.0
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user