diff --git a/.gitignore b/.gitignore index edf6ae0..21589a0 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -/libinput-*.tar.bz2 +/libinput-1.6.2.tar.xz +/libinput-1.6.3.tar.xz diff --git a/0001-evdev-add-quirk-for-Logitech-Marble-Mouse.patch b/0001-evdev-add-quirk-for-Logitech-Marble-Mouse.patch new file mode 100644 index 0000000..5db250c --- /dev/null +++ b/0001-evdev-add-quirk-for-Logitech-Marble-Mouse.patch @@ -0,0 +1,70 @@ +From 153269d2f5c28f5af51b5e4019f621162508299a Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Fri, 17 Feb 2017 08:39:51 +1000 +Subject: [PATCH libinput] evdev: add quirk for Logitech Marble Mouse + +Device needs BTN_MIDDLE disabled, this way middle button emulation is present +by default. + +Signed-off-by: Peter Hutterer +Reviewed-by: Hans de Goede +(cherry picked from commit f7f849e576a5481751a8c3d086fc1b1b752fecc4) +--- + src/evdev.c | 5 +++++ + src/evdev.h | 1 + + udev/90-libinput-model-quirks.hwdb | 4 ++++ + 3 files changed, 10 insertions(+) + +diff --git a/src/evdev.c b/src/evdev.c +index 17b28ec..73df74f 100644 +--- a/src/evdev.c ++++ b/src/evdev.c +@@ -2225,6 +2225,7 @@ evdev_read_model_flags(struct evdev_device *device) + MODEL(HP_ZBOOK_STUDIO_G3), + MODEL(HP_PAVILION_DM4_TOUCHPAD), + MODEL(APPLE_TOUCHPAD_ONEBUTTON), ++ MODEL(LOGITECH_MARBLE_MOUSE), + #undef MODEL + { "ID_INPUT_TRACKBALL", EVDEV_MODEL_TRACKBALL }, + { NULL, EVDEV_MODEL_DEFAULT }, +@@ -2810,6 +2811,10 @@ evdev_pre_configure_model_quirks(struct evdev_device *device) + * https://bugs.freedesktop.org/show_bug.cgi?id=98100 */ + if (device->model_flags & EVDEV_MODEL_HP_ZBOOK_STUDIO_G3) + libevdev_set_abs_maximum(device->evdev, ABS_MT_SLOT, 1); ++ ++ /* Logitech Marble Mouse claims to have a middle button */ ++ if (device->model_flags & EVDEV_MODEL_LOGITECH_MARBLE_MOUSE) ++ libevdev_disable_event_code(device->evdev, EV_KEY, BTN_MIDDLE); + } + + struct evdev_device * +diff --git a/src/evdev.h b/src/evdev.h +index 5ae250f..1c25dc5 100644 +--- a/src/evdev.h ++++ b/src/evdev.h +@@ -124,6 +124,7 @@ enum evdev_device_model { + EVDEV_MODEL_HP_ZBOOK_STUDIO_G3 = (1 << 23), + EVDEV_MODEL_HP_PAVILION_DM4_TOUCHPAD = (1 << 24), + EVDEV_MODEL_APPLE_TOUCHPAD_ONEBUTTON = (1 << 25), ++ EVDEV_MODEL_LOGITECH_MARBLE_MOUSE = (1 << 26), + }; + + struct mt_slot { +diff --git a/udev/90-libinput-model-quirks.hwdb b/udev/90-libinput-model-quirks.hwdb +index 10cb8ce..fafacb5 100644 +--- a/udev/90-libinput-model-quirks.hwdb ++++ b/udev/90-libinput-model-quirks.hwdb +@@ -153,6 +153,10 @@ libinput:name:SynPS/2 Synaptics TouchPad:dmi:*svnLENOVO:*:pvrThinkPadX1Carbon3rd + libinput:name:*Logitech M570*:dmi:* + LIBINPUT_MODEL_TRACKBALL=1 + ++# Logitech Marble Mouse trackball ++libinput:mouse:input:b0003v046DpC408* ++ LIBINPUT_MODEL_LOGITECH_MARBLE_MOUSE=1 ++ + ########################################## + # Synaptics + ########################################## +-- +2.9.3 + diff --git a/0001-evdev-allow-button-scrolling-on-the-L-R-button-with-.patch b/0001-evdev-allow-button-scrolling-on-the-L-R-button-with-.patch new file mode 100644 index 0000000..cf2a5f2 --- /dev/null +++ b/0001-evdev-allow-button-scrolling-on-the-L-R-button-with-.patch @@ -0,0 +1,135 @@ +From e238154dd36255d33b56fd6aebc1f591e40d84dd Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Mon, 20 Feb 2017 09:14:42 +1000 +Subject: [PATCH libinput] evdev: allow button scrolling on the L/R button with + middle emulation active + +This worked before, but triggered a negative timer bug. When one of the +physical L/R buttons is pressed with middle button emulation enabled, the +flow is: +1) phys left button down +2) middle button state machine discards events, sets timer +3) timer expires or button is released +4) middle button state machine sends button press with time from 1) +5) emulation code sees button press, sets timer for scroll emulation +6) timer logs bug because (original-button-time + timeout) is less than now() + +That log_bug_libinput() warning fails the tests but works otherwise. + +Allow this situation explicitly, on some devices we only have left and right +buttons and no scroll wheel, so having middle button emulation *and* +button-scroll working is useful. + +https://bugs.freedesktop.org/show_bug.cgi?id=99845 + +Signed-off-by: Peter Hutterer +Reviewed-by: Hans de Goede +(cherry picked from commit e43f9da9ecea6d17100c0012a89f5d162b2d7d7b) +--- + src/evdev.c | 20 ++++++++++++++++++-- + src/timer.c | 22 ++++++++++++++++------ + src/timer.h | 10 ++++++++++ + 3 files changed, 44 insertions(+), 8 deletions(-) + +diff --git a/src/evdev.c b/src/evdev.c +index 29ebadd..17b28ec 100644 +--- a/src/evdev.c ++++ b/src/evdev.c +@@ -229,8 +229,24 @@ evdev_button_scroll_button(struct evdev_device *device, + device->scroll.button_scroll_btn_pressed = is_press; + + if (is_press) { +- libinput_timer_set(&device->scroll.timer, +- time + DEFAULT_MIDDLE_BUTTON_SCROLL_TIMEOUT); ++ enum timer_flags flags = TIMER_FLAG_NONE; ++ ++ /* Special case: if middle button emulation is enabled and ++ * our scroll button is the left or right button, we only ++ * get here *after* the middle button timeout has expired ++ * for that button press. The time passed is the button-down ++ * time though (which is in the past), so we have to allow ++ * for a negative timer to be set. ++ */ ++ if (device->middlebutton.enabled && ++ (device->scroll.button == BTN_LEFT || ++ device->scroll.button == BTN_RIGHT)) { ++ flags = TIMER_FLAG_ALLOW_NEGATIVE; ++ } ++ ++ libinput_timer_set_flags(&device->scroll.timer, ++ time + DEFAULT_MIDDLE_BUTTON_SCROLL_TIMEOUT, ++ flags); + device->scroll.button_down_time = time; + } else { + libinput_timer_cancel(&device->scroll.timer); +diff --git a/src/timer.c b/src/timer.c +index c924794..362d81d 100644 +--- a/src/timer.c ++++ b/src/timer.c +@@ -67,19 +67,23 @@ libinput_timer_arm_timer_fd(struct libinput *libinput) + } + + void +-libinput_timer_set(struct libinput_timer *timer, uint64_t expire) ++libinput_timer_set_flags(struct libinput_timer *timer, ++ uint64_t expire, ++ uint32_t flags) + { + #ifndef NDEBUG + uint64_t now = libinput_now(timer->libinput); +- if (expire < now) +- log_bug_libinput(timer->libinput, +- "timer offset negative (-%" PRIu64 ")\n", +- now - expire); +- else if ((expire - now) > ms2us(5000)) ++ if (expire < now) { ++ if ((flags & TIMER_FLAG_ALLOW_NEGATIVE) == 0) ++ log_bug_libinput(timer->libinput, ++ "timer offset negative (-%" PRIu64 ")\n", ++ now - expire); ++ } else if ((expire - now) > ms2us(5000)) { + log_bug_libinput(timer->libinput, + "timer offset more than 5s, now %" + PRIu64 " expire %" PRIu64 "\n", + now, expire); ++ } + #endif + + assert(expire); +@@ -92,6 +96,12 @@ libinput_timer_set(struct libinput_timer *timer, uint64_t expire) + } + + void ++libinput_timer_set(struct libinput_timer *timer, uint64_t expire) ++{ ++ libinput_timer_set_flags(timer, expire, TIMER_FLAG_NONE); ++} ++ ++void + libinput_timer_cancel(struct libinput_timer *timer) + { + if (!timer->expire) +diff --git a/src/timer.h b/src/timer.h +index f8315cf..93d684a 100644 +--- a/src/timer.h ++++ b/src/timer.h +@@ -47,6 +47,16 @@ libinput_timer_init(struct libinput_timer *timer, struct libinput *libinput, + void + libinput_timer_set(struct libinput_timer *timer, uint64_t expire); + ++enum timer_flags { ++ TIMER_FLAG_NONE = 0, ++ TIMER_FLAG_ALLOW_NEGATIVE = (1 << 0), ++}; ++ ++void ++libinput_timer_set_flags(struct libinput_timer *timer, ++ uint64_t expire, ++ uint32_t flags); ++ + void + libinput_timer_cancel(struct libinput_timer *timer); + +-- +2.9.3 + diff --git a/0001-touchpad-ignore-the-tap-motion-threshold-if-fingers-.patch b/0001-touchpad-ignore-the-tap-motion-threshold-if-fingers-.patch new file mode 100644 index 0000000..93d115f --- /dev/null +++ b/0001-touchpad-ignore-the-tap-motion-threshold-if-fingers-.patch @@ -0,0 +1,119 @@ +From 2f81e554e94c6b560ac2432a2f3e2db0f09364be Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Thu, 15 Jun 2017 14:13:26 +1000 +Subject: [PATCH libinput] touchpad: ignore the tap motion threshold if fingers + > slots + +Do so on the synaptics serial touchpads at least, they're known to cause +cursor jumps when the third finger is down. Not detecting a tap move means +three-finger taps get more reliable on these touchpads. + +This change affects gestures who now effectively have to wait for the tap +timeout to happen. It's a trade-off. + +https://bugs.freedesktop.org/show_bug.cgi?id=101435 + +Signed-off-by: Peter Hutterer +--- + src/evdev-mt-touchpad-tap.c | 12 ++++++++++ + test/test-touchpad-tap.c | 54 +++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 66 insertions(+) + +diff --git a/src/evdev-mt-touchpad-tap.c b/src/evdev-mt-touchpad-tap.c +index 03d4c701..bc1b41e9 100644 +--- a/src/evdev-mt-touchpad-tap.c ++++ b/src/evdev-mt-touchpad-tap.c +@@ -730,6 +730,18 @@ tp_tap_exceeds_motion_threshold(struct tp_dispatch *tp, + tp_normalize_delta(tp, device_delta(t->point, + t->tap.initial)); + ++ /* if we have more fingers down than slots, we know that synaptics ++ * touchpads are likely to give us pointer jumps. ++ * This triggers the movement threshold, making three-finger taps ++ * less reliable (#101435) ++ */ ++ if (tp->device->model_flags & EVDEV_MODEL_SYNAPTICS_SERIAL_TOUCHPAD && ++ (tp->nfingers_down > 2 || tp->old_nfingers_down > 2) && ++ (tp->nfingers_down > tp->num_slots || ++ tp->old_nfingers_down > tp->num_slots)) { ++ return false; ++ } ++ + return normalized_length(norm) > DEFAULT_TAP_MOVE_THRESHOLD; + } + +diff --git a/test/test-touchpad-tap.c b/test/test-touchpad-tap.c +index 7acd0bad..3777eda2 100644 +--- a/test/test-touchpad-tap.c ++++ b/test/test-touchpad-tap.c +@@ -1542,6 +1542,59 @@ START_TEST(touchpad_3fg_tap_btntool_inverted) + } + END_TEST + ++START_TEST(touchpad_3fg_tap_btntool_pointerjump) ++{ ++ struct litest_device *dev = litest_current_device(); ++ struct libinput *li = dev->libinput; ++ enum libinput_config_tap_button_map map = _i; /* ranged test */ ++ unsigned int button = 0; ++ ++ if (libevdev_get_abs_maximum(dev->evdev, ++ ABS_MT_SLOT) > 2) ++ return; ++ ++ litest_enable_tap(dev->libinput_device); ++ litest_set_tap_map(dev->libinput_device, map); ++ ++ switch (map) { ++ case LIBINPUT_CONFIG_TAP_MAP_LRM: ++ button = BTN_MIDDLE; ++ break; ++ case LIBINPUT_CONFIG_TAP_MAP_LMR: ++ button = BTN_RIGHT; ++ break; ++ default: ++ litest_abort_msg("Invalid map range %d", map); ++ } ++ ++ litest_drain_events(li); ++ ++ litest_touch_down(dev, 0, 50, 50); ++ litest_touch_down(dev, 1, 70, 50); ++ litest_event(dev, EV_KEY, BTN_TOOL_TRIPLETAP, 1); ++ litest_event(dev, EV_KEY, BTN_TOOL_DOUBLETAP, 0); ++ litest_event(dev, EV_SYN, SYN_REPORT, 0); ++ /* Pointer jump should be ignored */ ++ litest_touch_move_to(dev, 0, 50, 50, 20, 20, 0, 0); ++ libinput_dispatch(li); ++ litest_event(dev, EV_KEY, BTN_TOOL_TRIPLETAP, 0); ++ litest_event(dev, EV_KEY, BTN_TOOL_DOUBLETAP, 1); ++ litest_event(dev, EV_SYN, SYN_REPORT, 0); ++ litest_touch_up(dev, 1); ++ litest_touch_up(dev, 0); ++ ++ libinput_dispatch(li); ++ ++ litest_assert_button_event(li, button, ++ LIBINPUT_BUTTON_STATE_PRESSED); ++ litest_timeout_tap(); ++ litest_assert_button_event(li, button, ++ LIBINPUT_BUTTON_STATE_RELEASED); ++ ++ litest_assert_empty_queue(li); ++} ++END_TEST ++ + START_TEST(touchpad_4fg_tap) + { + struct litest_device *dev = litest_current_device(); +@@ -2152,6 +2205,7 @@ litest_setup_tests_touchpad_tap(void) + litest_add_ranged("tap-3fg:3fg", touchpad_3fg_tap_btntool_inverted, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &tap_map_range); + litest_add_ranged("tap-3fg:3fg", touchpad_3fg_tap, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &tap_map_range); + litest_add("tap-3fg:3fg", touchpad_3fg_tap_quickrelease, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH); ++ litest_add_for_device("tap-3fg:3fg", touchpad_3fg_tap_btntool_pointerjump, LITEST_SYNAPTICS_TOPBUTTONPAD); + litest_add("tap-4fg:4fg", touchpad_4fg_tap, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT); + litest_add("tap-4fg:4fg", touchpad_4fg_tap_quickrelease, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT); + litest_add("tap-5fg:5fg", touchpad_5fg_tap, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT); +-- +2.13.0 + diff --git a/0001-touchpad-pull-the-tap-exclusion-zone-down-to-the-ful.patch b/0001-touchpad-pull-the-tap-exclusion-zone-down-to-the-ful.patch new file mode 100644 index 0000000..7dde217 --- /dev/null +++ b/0001-touchpad-pull-the-tap-exclusion-zone-down-to-the-ful.patch @@ -0,0 +1,45 @@ +From 81fe0347c92c67fb687c3d7cbd4c0eef0a33d90a Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Tue, 9 May 2017 15:07:20 +1000 +Subject: [PATCH libinput] touchpad: pull the tap exclusion zone down to the + full edge zone + +This was originally left outside of the button areas in case users tap in +those zones, but we're getting false tap events in that zone. + +On a 100mm touchpad, the edge zone is merely 5mm, it's acceptable to ignore +taps in that area even in the software button. We can revisit this if we see +tap detection failures in the future. + +https://bugzilla.redhat.com/show_bug.cgi?id=1415796 + +Signed-off-by: Peter Hutterer +--- + src/evdev-mt-touchpad.c | 10 ++-------- + 1 file changed, 2 insertions(+), 8 deletions(-) + +diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c +index 116d1ba6..4c81da3b 100644 +--- a/src/evdev-mt-touchpad.c ++++ b/src/evdev-mt-touchpad.c +@@ -540,15 +540,9 @@ tp_palm_tap_is_palm(const struct tp_dispatch *tp, const struct tp_touch *t) + t->point.x < tp->palm.right_edge) + return false; + +- /* We're inside the left/right palm edge and not in one of the +- * software button areas */ +- if (t->point.y < tp->buttons.bottom_area.top_edge) { +- log_debug(tp_libinput_context(tp), +- "palm: palm-tap detected\n"); +- return true; +- } ++ log_debug(tp_libinput_context(tp), "palm: palm-tap detected\n"); + +- return false; ++ return true; + } + + static bool +-- +2.12.2 + diff --git a/90-switch.hwdb b/90-switch.hwdb new file mode 100644 index 0000000..35543e9 --- /dev/null +++ b/90-switch.hwdb @@ -0,0 +1,4 @@ +# Simple entry for ID_INPUT_SWITCH +# Upstream in systemd 233 but not in F25 +libinput:name:*Lid Switch*:dmi:* + ID_INPUT_SWITCH=1 diff --git a/libinput.spec b/libinput.spec index 856e23e..18aac0d 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.6.3 +Release: 6%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist} Summary: Input device library -# SPDX License: MIT URL: http://www.freedesktop.org/wiki/Software/libinput/ %if 0%{?gitdate} @@ -16,20 +15,22 @@ Source0: %{name}-%{gitdate}.tar.xz Source1: make-git-snapshot.sh Source2: commitid %else -Source0: https://gitlab.freedesktop.org/libinput/libinput/-/archive/%{version}/libinput-%{version}.tar.bz2 +Source0: http://www.freedesktop.org/software/libinput/libinput-%{version}.tar.xz %endif -BuildRequires: git-core -BuildRequires: gcc -BuildRequires: meson -BuildRequires: pkgconfig(libudev) -BuildRequires: pkgconfig(mtdev) >= 1.1.0 -BuildRequires: pkgconfig(libevdev) >= 0.4 -BuildRequires: pkgconfig(libwacom) >= 0.20 -BuildRequires: pkgconfig(udev) -BuildRequires: python3-rpm-macros +Source1: 90-switch.hwdb -BuildRequires: lua-devel +Patch01: 0001-evdev-allow-button-scrolling-on-the-L-R-button-with-.patch +Patch02: 0001-evdev-add-quirk-for-Logitech-Marble-Mouse.patch +Patch03: 0001-touchpad-pull-the-tap-exclusion-zone-down-to-the-ful.patch +Patch04: 0001-touchpad-ignore-the-tap-motion-threshold-if-fingers-.patch + +BuildRequires: git +BuildRequires: autoconf automake libtool pkgconfig +BuildRequires: libevdev-devel +BuildRequires: libudev-devel +BuildRequires: mtdev-devel libwacom-devel +BuildRequires: pkgconfig(udev) %description libinput is a library that handles input devices for display servers and other @@ -48,64 +49,51 @@ Requires: %{name}%{?_isa} = %{version}-%{release} The %{name}-devel package contains libraries and header files for developing applications that use %{name}. -%package utils -Summary: Utilities and tools for debugging %{name} -Requires: %{name}%{?_isa} = %{version}-%{release} -Requires: python3-pyudev python3-libevdev - -%description utils -The %{name}-utils package contains tools to debug hardware and analyze -%{name}. - -%package test -Summary: libinput integration test suite -Requires: %{name}%{?_isa} = %{version}-%{release} - -%description test -The %{name}-test package contains the libinput test suite. It is not -intended to be run by users. %prep -%autosetup -S git -p1 -# Replace whatever the source uses with the approved call -%py3_shebang_fix $(git grep -l '#!/usr/bin/.*python3') +%setup -q -n %{name}-%{?gitdate:%{gitdate}}%{!?gitdate:%{version}} +git init +if [ -z "$GIT_COMMITTER_NAME" ]; then + git config user.email "x@fedoraproject.org" + git config user.name "Fedora X Ninjas" +fi +git add . +git commit --allow-empty -a -q -m "%{version} baseline." + +# Apply all the patches. +git am -p1 %{patches} < /dev/null %build -%meson -Ddebug-gui=false \ - -Ddocumentation=false \ - -Dtests=true \ - -Dinstall-tests=true \ - -Dautoload-plugins=true \ - -Dudev-dir=%{udevdir} -%meson_build +autoreconf -v --install --force || exit 1 +%configure --disable-static --disable-silent-rules --with-udev-dir=%{udevdir} +make %{?_smp_mflags} + %install -%meson_install +%make_install +find $RPM_BUILD_ROOT -name '*.la' -delete + +mkdir -p ${RPM_BUILD_ROOT}%{udevdir}/hwdb.d/ +install -m 644 %{SOURCE1} ${RPM_BUILD_ROOT}%{udevdir}/hwdb.d/ %post -%{?ldconfig} +/sbin/ldconfig +/usr/bin/udevadm hwdb --update >/dev/null 2>&1 || : -%ldconfig_postun +%postun -p /sbin/ldconfig %files %doc COPYING %{_libdir}/libinput.so.* %{udevdir}/libinput-device-group -%{udevdir}/libinput-fuzz-to-zero -%{udevdir}/libinput-fuzz-extract +%{udevdir}/libinput-model-quirks %{udevdir}/rules.d/80-libinput-device-groups.rules -%{udevdir}/rules.d/90-libinput-fuzz-override.rules -%{_bindir}/libinput -%dir %{_libexecdir}/libinput/ -%{_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 -%{_datadir}/zsh/site-functions/* +%{udevdir}/rules.d/90-libinput-model-quirks.rules +%{udevdir}/hwdb.d/90-libinput-model-quirks.hwdb +%{udevdir}/hwdb.d/90-switch.hwdb +%{_bindir}/libinput-list-devices +%{_bindir}/libinput-debug-events %{_mandir}/man1/libinput-list-devices.1* %{_mandir}/man1/libinput-debug-events.1* @@ -114,587 +102,23 @@ intended to be run by users. %{_libdir}/libinput.so %{_libdir}/pkgconfig/libinput.pc -%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 -%{_libexecdir}/libinput/libinput-measure-touchpad-tap -%{_libexecdir}/libinput/libinput-measure-touchpad-pressure -%{_libexecdir}/libinput/libinput-measure-touchpad-size -%{_libexecdir}/libinput/libinput-measure-touch-size -%{_libexecdir}/libinput/libinput-quirks -%{_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* -%{_mandir}/man1/libinput-measure-touchpad-tap.1* -%{_mandir}/man1/libinput-measure-touch-size.1* -%{_mandir}/man1/libinput-measure-touchpad-pressure.1* -%{_mandir}/man1/libinput-measure-touchpad-size.1* -%{_mandir}/man1/libinput-quirks.1* -%{_mandir}/man1/libinput-quirks-list.1* -%{_mandir}/man1/libinput-quirks-validate.1* -%{_mandir}/man1/libinput-record.1* -%{_mandir}/man1/libinput-replay.1* - -%files test -%{_libexecdir}/libinput/libinput-test -%{_libexecdir}/libinput/libinput-test-suite -%{_libexecdir}/libinput/libinput-test-utils -%{_mandir}/man1/libinput-test.1* -%{_mandir}/man1/libinput-test-suite.1* - %changelog -* Mon Dec 08 2025 Peter Hutterer - 1.30.1-1 -- libinput 1.30.1 +* Mon Jun 26 2017 Peter Hutterer 1.6.3-6 +- Ignore tap motion for 3fg taps when we only have 2 slots (#1455443) -* Tue Nov 25 2025 Peter Hutterer - 1.30.0-1 -- libinput 1.30.0 +* Mon May 22 2017 Peter Hutterer 1.6.3-5 +- Install a hwdb file to tag lid switches as such, this is missing from F25 + systemd. -* 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 - -* Tue Apr 11 2023 Peter Hutterer - 1.23.0-2 -- Add two patches for better Apple touchpad behavior (see libinput MR - 834 and 897) - -* Mon Mar 27 2023 Peter Hutterer - 1.23.0-1 -- libinput 1.23.0 - -* Thu Jan 19 2023 Fedora Release Engineering - 1.22.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Mon Jan 16 2023 Peter Hutterer - 1.22.1-1 -- libinput 1.22.1 - -* Sat Nov 26 2022 Davide Cavalca 1.22.0-2 -- Backport upstream patch to add Apple MTP touchpad quirk for Apple M2 laptops - -* Mon Nov 21 2022 Peter Hutterer - 1.22.0-1git58abea394} -- libinput 1.22.0 - -* Wed Aug 31 2022 Peter Hutterer - 1.21.0-3 -- Add udev to BuildRequires for udevdir to resolve againt - -* Thu Jul 21 2022 Fedora Release Engineering - 1.21.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Mon Jun 13 2022 Peter Hutterer - 1.21.0-1 -- libinput 1.21.0 - -* Wed Apr 20 2022 Peter Hutterer - 1.20.1-1 -- libinput 1.20.1 - -* Mon Feb 21 2022 Peter Hutterer - 1.20.0-1 -- libinput 1.20 - -* Mon Feb 07 2022 Peter Hutterer - 1.19.901-1 -- libinput 1.20rc1 - -* Thu Jan 20 2022 Fedora Release Engineering - 1.19.3-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Mon Dec 13 2021 Peter Hutterer - 1.19.3-2 -- Rebuild for libwacom soname bump - -* Mon Dec 13 2021 Peter Hutterer - 1.19.3-1 -- libinput 1.19.3 - -* Thu Oct 21 2021 Peter Hutterer - 1.19.2-1 -- libinput 1.19.2 - -* Wed Sep 29 2021 Peter Hutterer - 1.19.1-1 -- libinput 1.19.1 - -* Wed Sep 15 2021 Peter Hutterer - 1.19.0-1 -- libinput 1.19.0 - -* Wed Sep 01 2021 Peter Hutterer - 1.18.901-1 -- libinput 1.18.901 - -* Tue Aug 03 2021 Peter Hutterer - 1.18.1-1 -- libinput 1.18.1 - -* Thu Jul 22 2021 Fedora Release Engineering - 1.18.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Mon Jun 21 2021 Peter Hutterer 1.18.0-2 -- Add quirk for the Huawai Matebook 2020 (#1972370) - -* Wed Jun 02 2021 Peter Hutterer 1.18.0-1 -- libinput 1.18.0 - -* Wed May 26 2021 Peter Hutterer 1.17.901-1 -- libinput 1.17.901 - -* Wed May 26 2021 Peter Hutterer 1.17.3-1 -- libinput 1.17.3 - -* Fri Apr 30 2021 Peter Hutterer 1.17.2-1 -- libinput 1.17.2 - -* Wed Mar 24 2021 Peter Hutterer 1.17.1-1 -- libinput 1.17.1 - -* Tue Feb 23 2021 Peter Hutterer 1.17.0-1 -- libinput 1.17.0 - -* Tue Feb 16 2021 Peter Hutterer 1.16.902-1 -- libinput 1.16.902 - -* Tue Jan 26 2021 Fedora Release Engineering - 1.16.4-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Fri Nov 27 2020 Peter Hutterer 1.16.4-1 -- libinput 1.16.4 - -* Tue Nov 03 2020 Peter Hutterer 1.16.3-1 -- libinput 1.16.3 - -* Tue Sep 22 2020 Peter Hutterer -- Drop gcc-c++ from the BuildRequires, it's no longer needed - -* Thu Aug 13 2020 Peter Hutterer 1.16.1-1 -- libinput 1.16.1 - -* Mon Aug 03 2020 Peter Hutterer 1.16.0-1 -- libinput 1.16.0 - -* Tue Jul 28 2020 Fedora Release Engineering - 1.15.902-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Mon Jul 27 2020 Peter Hutterer 1.15.902-1 -- libinput 1.16rc2 - -* Wed Jul 15 2020 Peter Hutterer 1.15.901-1 -- libinput 1.16rc1 - -* Fri Jun 19 2020 Peter Hutterer 1.15.6-1 -- libinput 1.15.6 - -* Sat Apr 11 2020 Peter Hutterer 1.15.5-1 -- libinput 1.15.5 - -* Wed Mar 18 2020 Peter Hutterer 1.15.4-1 -- libinput 1.15.4 - -* Mon Mar 09 2020 Peter Hutterer 1.15.3-2 -- fix libinput record's dmi modalias recording - -* Fri Mar 06 2020 Peter Hutterer 1.15.3-1 -- libinput 1.15.3 - -* Thu Feb 20 2020 Peter Hutterer 1.15.2-1 -- libinput 1.15.2 - -* Mon Feb 03 2020 Peter Hutterer 1.15.1-1 -- libinput 1.15.1 - -* Wed Jan 29 2020 Fedora Release Engineering - 1.15.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Fri Jan 03 2020 Peter Hutterer 1.15.0-1 -- libinput 1.15 - -* Thu Dec 05 2019 Peter Hutterer 1.14.901-1 -- libinput 1.15rc1 - -* Tue Nov 19 2019 Peter Hutterer 1.14.3-2 -- Point users to the libinput-utils package for missing tools. - -* Mon Oct 28 2019 Peter Hutterer 1.14.3-1 -- libinput 1.14.3 - -* Thu Oct 17 2019 Peter Hutterer 1.14.2-1 -- libinput 1.14.2 - -* Mon Aug 26 2019 Peter Hutterer 1.14.1-1 -- libinput 1.14.1 - -* Tue Aug 20 2019 Peter Hutterer 1.14.0-2 -- Fix click+drag on clickpads - -* Thu Aug 08 2019 Peter Hutterer 1.14.0-1 -- libinput 1.14 - -* Wed Jul 31 2019 Peter Hutterer 1.13.902-1 -- libinput 1.14rc2 - -* Thu Jul 25 2019 Fedora Release Engineering - 1.13.4-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Fri Jun 28 2019 Peter Hutterer 1.13.4-1 -- libinput 1.13.4 - -* Mon Jun 24 2019 Peter Hutterer 1.13.3-1 -- libinput 1.13.3 - -* Thu May 09 2019 Peter Hutterer 1.13.2-1 -- libinput 1.13.2 - -* Tue Apr 16 2019 Adam Williamson - 1.13.1-2 -- Rebuild with Meson fix for #1699099 - -* Tue Apr 09 2019 Peter Hutterer 1.13.1-1 -- libinput 1.13.1 - -* Fri Mar 29 2019 Peter Hutterer 1.13.0-1 -- libinput 1.13.0 - -* Thu Mar 21 2019 Peter Hutterer 1.12.902-1 -- libinput 1.12.902 - -* Thu Mar 21 2019 Peter Hutterer 1.12.901-3 -- Package the tests suite as subpackage - -* Fri Mar 15 2019 Peter Hutterer 1.12.901-2 -- Require python3-libevdev for the utils subpackage - -* Thu Mar 14 2019 Peter Hutterer 1.12.901-1 -- libinput 1.12.901 - -* Thu Feb 14 2019 Peter Hutterer 1.12.6-3 -- Don't update the hwdb on install, we don't have any hwdb files anymore - -* Fri Feb 01 2019 Fedora Release Engineering - 1.12.6-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Mon Jan 21 2019 Peter Hutterer 1.12.6-1 -- libinput 1.12.6 - -* Mon Jan 07 2019 Peter Hutterer 1.12.5-1 -- libinput 1.12.5 - -* Tue Dec 18 2018 Peter Hutterer 1.12.4-1 -- libinput 1.12.4 - -* Wed Nov 07 2018 Peter Hutterer 1.12.3-1 -- libinput 1.12.3 - -* Wed Oct 24 2018 Peter Hutterer 1.12.2-1 -- libinput 1.12.2 - -* Wed Oct 03 2018 Peter Hutterer 1.12.1-1 -- libinput 1.12.1 - -* Tue Sep 11 2018 Peter Hutterer 1.12.0-1 -- libinput 1.12 - -* Tue Sep 04 2018 Peter Hutterer 1.11.903-1 -- libinput 1.12rc3 - -* Tue Aug 14 2018 Peter Hutterer 1.11.902-1 -- libinput 1.12rc2 - -* Tue Jul 31 2018 Peter Hutterer 1.11.901-1 -- libinput 1.12rc1 - -* Wed Jul 25 2018 Peter Hutterer 1.11.3-1 -- libinput 1.11.3 - -* Fri Jul 13 2018 Fedora Release Engineering - 1.11.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Fri Jul 06 2018 Peter Hutterer 1.11.2-2 -- Replace all python3 calls with the rpm macro - -* Tue Jul 03 2018 Peter Hutterer 1.11.2-1 -- libinput 1.11.2 - -* Wed Jun 20 2018 Peter Hutterer 1.11.1-2 -- Fix segfault in libinput list-devices - -* Tue Jun 19 2018 Peter Hutterer 1.11.1-1 -- libinput 1.11.1 - -* Tue Jun 05 2018 Peter Hutterer 1.11.0-1 -- libinput 1.11.0 - -* Fri Jun 01 2018 Peter Hutterer 1.10.902-2 -- Revert direct sensitivity attribute reading (#1583324) - -* Wed May 30 2018 Peter Hutterer 1.10.902-1 -- libinput 1.11 rc2 - -* Tue May 22 2018 Peter Hutterer 1.10.901-1 -- libinput 1.11 rc1 - -* Thu May 17 2018 Peter Hutterer 1.10.7-2 -- libinput 1.10.7 - -* Mon May 14 2018 Peter Hutterer 1.10.6-2 -- Fix palm threshold on MacBookPro5,5 (#1575260) - -* Tue May 01 2018 Peter Hutterer 1.10.6-1 -- libinput 1.10.6 - -* Fri Apr 27 2018 Peter Hutterer 1.10.5-3 -- Fix the T460s halting cursor problem harder (#1572394) - -* Fri Apr 27 2018 Peter Hutterer 1.10.5-2 -- Fix the T460s halting cursor problem (#1572394) - -* Thu Apr 19 2018 Peter Hutterer 1.10.5-1 -- libinput 1.10.5 - -* Thu Apr 19 2018 Peter Hutterer 1.10.4-2 -- Disable ABS_MT_TOOL_PALM on the Lenovo Carbon X1 6th (#1565692) - -* Mon Apr 09 2018 Peter Hutterer 1.10.4-1 -- libinput 1.10.4 - -* Wed Mar 14 2018 Peter Hutterer 1.10.3-1 -- libinput 1.10.3 - -* Mon Mar 12 2018 Peter Hutterer 1.10.2-4 -- Fix occasional crashes on gestures when libinput loses track of hovering - fake fingers - -* Thu Mar 08 2018 Peter Hutterer 1.10.2-3 -- Add BuildRequires gcc-c++, needed for a test build - -* Wed Mar 07 2018 Peter Hutterer 1.10.2-2 -- libinput 1.10.2 - -* Fri Mar 02 2018 Peter Hutterer 1.10.1-2 -- Fix touchpad jitter by changing from "disable if no jitter" to "enable if - jitter" (#1548550) - -* Wed Feb 28 2018 Peter Hutterer 1.10.1-1 -- libinput 1.10.1 - -* Tue Feb 13 2018 Peter Hutterer 1.10.0-2 -- Fix crasher due to missing devnode after resume (#1536633) - -* Tue Feb 13 2018 Peter Hutterer 1.10.0-1 -- libinput 1.10 - -* Tue Feb 06 2018 Peter Hutterer 1.9.902-1 -- libinput 1.10rc2 - -* Mon Feb 05 2018 Peter Hutterer 1.9.901-3 -- Fix crasher on first event from tablets not supported by libwacom - (#1535755) - -* Fri Feb 02 2018 Peter Hutterer 1.9.901-2 -- Use autosetup instead of the manual git magic - -* Mon Jan 22 2018 Peter Hutterer 1.9.901-1 -- libinput 1.10rc1 - -* Thu Dec 14 2017 Peter Hutterer 1.9.4-1 -- libinput 1.9.4 - -* Fri Dec 08 2017 Peter Hutterer 1.9.3-2 -- Immediately post key events, don't wait for EV_SYN - -* Tue Nov 28 2017 Peter Hutterer 1.9.3-1 -- libinput 1.9.3 - -* Wed Nov 15 2017 Peter Hutterer 1.9.2-1 -- libinput 1.9.2 - -* Wed Nov 15 2017 Peter Hutterer 1.9.1-4 -- Mark the Lenovo Compact Keyboard as external (#1510814) - -* Tue Nov 14 2017 Peter Hutterer 1.9.1-3 -- Handle printing of tablet mode switches (#1510814) - -* Thu Nov 09 2017 Peter Hutterer 1.9.1-2 -- Split some of the tools into a libinput-utils package so we can require - the various bits easier (#1509298) - -* Mon Oct 30 2017 Peter Hutterer 1.9.1-1 -- libinput 1.9.1 - -* Thu Oct 26 2017 Peter Hutterer 1.9.0-2 -- Drop explicit .gz from the man pages - -* Thu Oct 19 2017 Peter Hutterer 1.9.0-1 -- libinput 1.9.0 - -* Tue Oct 10 2017 Peter Hutterer 1.8.902-1 -- libinput 1.9rc2 - -* Thu Sep 28 2017 Peter Hutterer 1.8.901-1 -- libinput 1.9rc1 - -* Thu Sep 07 2017 Peter Hutterer 1.8.2-1 -- libinput 1.8.2 - -* Tue Sep 05 2017 Peter Hutterer 1.8.1-4 -- Don't try pinching when the finger number exceeds available slots -- Don't resume a disabled touchpad after a lid switch open (#1448962) - -* Thu Aug 03 2017 Fedora Release Engineering - 1.8.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Wed Jul 26 2017 Fedora Release Engineering - 1.8.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Wed Jul 19 2017 Peter Hutterer 1.8.1-1 -- libinput 1.8.1 - -* Thu Jul 13 2017 Igor Gnatenko - 1.8.0-2 -- Add missing BuildRequires: gcc -- Fixup other BuildRequires -- Rebuild for pkg-config fix from meson - -* Mon Jul 03 2017 Peter Hutterer 1.8.0-1 -- libinput 1.8 - -* Tue Jun 27 2017 Peter Hutterer 1.7.902-2 -- Switch to meson as build system - -* Mon Jun 26 2017 Peter Hutterer 1.7.902-1 -- libinput 1.8rc2 - -* Mon Jun 19 2017 Peter Hutterer 1.7.901-2 -- libinput 1.8rc1 with source files this time - -* Mon Jun 19 2017 Peter Hutterer 1.7.901-1 -- libinput 1.8rc1 - -* Mon Jun 12 2017 Peter Hutterer 1.7.3-1 -- libinput 1.7.3 - -* Tue May 09 2017 Peter Hutterer 1.7.2-2 +* Tue May 09 2017 Peter Hutterer 1.6.3-4 - Ignore taps in the palm detection area even in software buttons (#1415796) -* Tue May 09 2017 Peter Hutterer 1.7.2-1 -- libinput 1.7.2 +* Thu Mar 09 2017 Peter Hutterer 1.6.3-1 +- libinput 1.6.3 -* Thu May 04 2017 Peter Hutterer 1.7.1-4 -- Fix a crash when shutting down a touchpad lid listener (#1440927) - -* Thu May 04 2017 Peter Hutterer 1.7.1-3 -- Fix crash when we have multiple keyboard event listeners for the lid - switch (#1440927) - -* Tue May 02 2017 Peter Hutterer 1.7.1-2 -- Add patches to fix elantech pressure detection - -* Tue Apr 25 2017 Peter Hutterer 1.7.1-1 -- libinput 1.7.1 - -* Thu Mar 23 2017 Peter Hutterer 1.7.0-1 -- libinput 1.7 - -* Fri Mar 10 2017 Peter Hutterer 1.6.902-1 -- libinput 1.7rc2 - -* Thu Feb 23 2017 Peter Hutterer 1.6.901-1 -- libinput 1.7rc1 +* Tue Mar 07 2017 Peter Hutterer 1.6.2-3 +- Allow horiz. scrolling on smaller touchpads (#1422221) * Wed Feb 22 2017 Peter Hutterer 1.6.2-2 - Fix middle button emulation for Logitech Marble Mouse (#1421439) @@ -976,7 +400,7 @@ intended to be run by users. * Fri May 29 2015 Peter Hutterer 0.15.0-4 - Add tap-to-end-drag patch (#1225998) - + * Wed May 27 2015 Peter Hutterer 0.15.0-3 - Refine disable-while-typing (#1209753) diff --git a/sources b/sources index b53b11e..b5de686 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (libinput-1.30.1.tar.bz2) = 6d9bb5653dfeb0e30c64e92f8146a8908233162ef39f89114f619605b7f0de3f9e0f344412d91c809d3c1dc3d4b836a5709373a80191484db3c6d0a8f69c4f82 +SHA512 (libinput-1.6.3.tar.xz) = be1ab191b5605943d6f46a5fee7af9ecba83ab30ba3d38b6ec136980f2183f6dcb5aaf048aa81a096c4f51b6de05bebc83b4ffa29a0574752062a994f377aa5f