diff --git a/0001-evdev-Enable-natural-scrolling-by-default-on-Apple.patch b/0001-evdev-Enable-natural-scrolling-by-default-on-Apple.patch new file mode 100644 index 0000000..b5e8341 --- /dev/null +++ b/0001-evdev-Enable-natural-scrolling-by-default-on-Apple.patch @@ -0,0 +1,102 @@ +From d61d385951c5678ad18d495358abe952ce359ac9 Mon Sep 17 00:00:00 2001 +From: Hector Martin +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 +Signed-off-by: Peter Hutterer +--- + 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 + diff --git a/0001-touchpad-Disable-edge-palm-detection-Apple-touchpads.patch b/0001-touchpad-Disable-edge-palm-detection-Apple-touchpads.patch new file mode 100644 index 0000000..b36c371 --- /dev/null +++ b/0001-touchpad-Disable-edge-palm-detection-Apple-touchpads.patch @@ -0,0 +1,50 @@ +From 4a8b5e6ec445b507fc0b1ef9842a60bf13c58772 Mon Sep 17 00:00:00 2001 +From: Hector Martin +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 +Signed-off-by: Peter Hutterer +--- + 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 + diff --git a/libinput.spec b/libinput.spec index 856e23e..d83d3c3 100644 --- a/libinput.spec +++ b/libinput.spec @@ -4,11 +4,10 @@ %global gitversion 58abea394 Name: libinput -Version: 1.30.1 -Release: 1%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist} +Version: 1.23.0 +Release: 3%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist} Summary: Input device library -# SPDX License: MIT URL: http://www.freedesktop.org/wiki/Software/libinput/ %if 0%{?gitdate} @@ -19,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 @@ -28,8 +30,7 @@ BuildRequires: pkgconfig(libevdev) >= 0.4 BuildRequires: pkgconfig(libwacom) >= 0.20 BuildRequires: pkgconfig(udev) BuildRequires: python3-rpm-macros - -BuildRequires: lua-devel +BuildRequires: check-devel %description libinput is a library that handles input devices for display servers and other @@ -75,7 +76,6 @@ intended to be run by users. -Ddocumentation=false \ -Dtests=true \ -Dinstall-tests=true \ - -Dautoload-plugins=true \ -Dudev-dir=%{udevdir} %meson_build @@ -101,7 +101,6 @@ intended to be run by users. %{_libexecdir}/libinput/libinput-debug-events %{_libexecdir}/libinput/libinput-list-devices %{_mandir}/man1/libinput.1* -%dir %{_datadir}/libinput %{_datadir}/libinput/*.quirks %dir %{_datadir}/zsh %dir %{_datadir}/zsh/site-functions @@ -116,12 +115,10 @@ intended to be run by users. %files utils %{_libexecdir}/libinput/libinput-analyze -%{_libexecdir}/libinput/libinput-analyze-buttons %{_libexecdir}/libinput/libinput-analyze-per-slot-delta %{_libexecdir}/libinput/libinput-analyze-recording %{_libexecdir}/libinput/libinput-analyze-touch-down-state %{_libexecdir}/libinput/libinput-debug-tablet -%{_libexecdir}/libinput/libinput-debug-tablet-pad %{_libexecdir}/libinput/libinput-list-kernel-devices %{_libexecdir}/libinput/libinput-measure %{_libexecdir}/libinput/libinput-measure-fuzz @@ -133,12 +130,10 @@ intended to be run by users. %{_libexecdir}/libinput/libinput-record %{_libexecdir}/libinput/libinput-replay %{_mandir}/man1/libinput-analyze.1* -%{_mandir}/man1/libinput-analyze-buttons.1* %{_mandir}/man1/libinput-analyze-per-slot-delta.1* %{_mandir}/man1/libinput-analyze-recording.1* %{_mandir}/man1/libinput-analyze-touch-down-state.1* %{_mandir}/man1/libinput-debug-tablet.1* -%{_mandir}/man1/libinput-debug-tablet-pad.1* %{_mandir}/man1/libinput-list-kernel-devices.1* %{_mandir}/man1/libinput-measure.1* %{_mandir}/man1/libinput-measure-fuzz.1* @@ -161,106 +156,6 @@ intended to be run by users. %changelog -* Mon Dec 08 2025 Peter Hutterer - 1.30.1-1 -- libinput 1.30.1 - -* Tue Nov 25 2025 Peter Hutterer - 1.30.0-1 -- libinput 1.30.0 - -* Mon Nov 24 2025 Peter Hutterer - 1.29.902-2 -- Re-enable plugins on RHEL - lua 5.4 is available - -* Tue Nov 18 2025 Peter Hutterer - 1.29.902-1 -- libinput 1.29.902 - reenable ppc64le - -* Fri Nov 07 2025 Yaakov Selkowitz - 1.29.901-3 -- Disable plugins on RHEL - -* Tue Nov 04 2025 Peter Hutterer - 1.29.901-2 -- Disable plugins on ppc64le - there's no luajit - -* Tue Nov 04 2025 Peter Hutterer - 1.29.901-1 -- libinput 1.29.901 - with plugin autoload enabled - -* Tue Oct 21 2025 Peter Hutterer - 1.29.2-1 -- libinput 1.29.2 - -* Thu Aug 28 2025 Peter Hutterer - 1.29.1-1 -- libinput 1.29.1 - -* Thu Jul 31 2025 Peter Hutterer - 1.29.0-1 -- libinput 1.29.0 - -* Thu Jul 24 2025 Fedora Release Engineering - 1.28.903-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Mon Jul 21 2025 Peter Hutterer - 1.28.903-1 -- libinput 1.28.903 (#2382208) - -* Thu Jul 17 2025 Peter Hutterer - 1.28.902-1 -- libinput 1.28.902 - -* Wed Jul 16 2025 Peter Hutterer - 1.28.901-3 -- Fix Alt+PrintScreen not working (#2379912) - -* Tue Jul 15 2025 Peter Hutterer - 1.28.901-2 -- Fix broken mouse wheel on non-high-resolution devices (#2379768) - -* Thu Jul 10 2025 Peter Hutterer - 1.28.901-1 -- libinput 1.28.901 - -* Tue Apr 01 2025 Peter Hutterer - 1.28.1-1 -- libinput 1.28.1 - -* Mon Mar 24 2025 Peter Hutterer - 1.28.0-1 -- libinput 1.28.0 - -* Fri Jan 17 2025 Fedora Release Engineering - 1.27.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Mon Jan 06 2025 Peter Hutterer - 1.27.1-1 -- libinput 1.27.1 - -* Fri Nov 22 2024 Peter Hutterer - 1.27.0-2 -- libinput 1.27.0, with sources - -* Tue Nov 19 2024 Peter Hutterer - 1.27.0-1 -- libinput 1.27.0 -- drop the check-devel dependency, no longer needed - -* Mon Aug 19 2024 Peter Hutterer - 1.26.2-1 -- libinput 1.26.2 - -* Thu Jul 18 2024 Fedora Release Engineering - 1.26.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Thu Jun 27 2024 Peter Hutterer - 1.26.1-1 -- libinput 1.26.1 - -* Thu Jun 06 2024 Peter Hutterer 1.26.0-1 -- libinput 1.26.0 - -* Fri May 31 2024 Peter Hutterer - 1.25.0-5 -- Mark datadir/libinput as owned by us (#2283754) - -* Wed Mar 27 2024 Arthur Bols - 1.25.0-4 -- Add quirk for Framework 16 to recognize keyboard as internal - -* Thu Jan 25 2024 Fedora Release Engineering - 1.25.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sun Jan 21 2024 Fedora Release Engineering - 1.25.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Mon Jan 15 2024 Peter Hutterer - 1.25.0-1 -- libinput 1.25 - -* Tue Sep 05 2023 Peter Hutterer -- SPDX migration: license is already SPDX compatible - -* Fri Aug 25 2023 Peter Hutterer - 1.24.0-1 -- libinput 1.24.0 - * Thu Jul 20 2023 Peter Hutterer - 1.23.0-3 - BuildRequires python3-rpm-macros for pathfix.py diff --git a/sources b/sources index b53b11e..49cd3ab 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (libinput-1.30.1.tar.bz2) = 6d9bb5653dfeb0e30c64e92f8146a8908233162ef39f89114f619605b7f0de3f9e0f344412d91c809d3c1dc3d4b836a5709373a80191484db3c6d0a8f69c4f82 +SHA512 (libinput-1.23.0.tar.bz2) = cb752d8611d70d9ea26d875aba9db8d0e319e60697aedef1b16295e8180761ce4c8c9635b1aaeb3cfc32d8c5fbe4abfd9a5a4fd29c4b964b25c853c90e816a43