libinput/src
Ilya Kamenko 8dd25ece10 Fold hold-to-scroll into existing scroll button lock mode
Instead of adding a new ENABLED_HOLD enum value, modify the existing
ENABLED lock mode so that hold+scroll+release doesn't engage the lock.

Add a 500ms grace period: if the button was held and used to scroll for
longer than 500ms, releasing the button does not engage the lock
(temporary scroll). If released within 500ms (e.g. shaky hands
triggering accidental motion), the lock still engages as before.

This fixes the unintuitive behavior where the lock engages even after
actively scrolling, without requiring new API surface.

Closes: https://gitlab.freedesktop.org/libinput/libinput/-/issues/1259

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1435>
2026-03-10 23:12:25 +00:00
..
builddir.h meson: revamp the debug build detection for the builddir lookup 2026-01-10 10:39:21 +00:00
evdev-fallback.c evdev: rename evdev_paired_keyboard to evdev_paired_device 2026-01-28 00:43:36 +00:00
evdev-fallback.h Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
evdev-frame.h Fix the evdev_usage_is_button check for the BTN_STYLUS group 2026-03-09 01:14:21 +00:00
evdev-middle-button.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
evdev-mt-touchpad-buttons.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
evdev-mt-touchpad-edge-scroll.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
evdev-mt-touchpad-gestures.c touchpad: add support for fast swipe when 3fg drag is enabled 2026-02-02 06:44:48 +00:00
evdev-mt-touchpad-tap.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
evdev-mt-touchpad-thumb.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
evdev-mt-touchpad.c evdev: use udev's ID_INTEGRATION 2026-03-10 02:27:36 +00:00
evdev-mt-touchpad.h touchpad: add support for fast swipe when 3fg drag is enabled 2026-02-02 06:44:48 +00:00
evdev-plugin.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
evdev-plugin.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
evdev-tablet-pad-leds.c meson.build: change from config.set10() and #if to config.set() and #ifdef 2025-07-28 12:04:09 +10:00
evdev-tablet-pad.c pad: fix missing newline for mode group error messages 2025-12-17 14:37:59 +10:00
evdev-tablet-pad.h pad: don't assert when unable to find the mode group, just discard 2025-08-04 12:53:10 +10:00
evdev-tablet.c tablet: allow for the eraser button to be any button 2026-03-09 01:14:21 +00:00
evdev-tablet.h meson.build: change from config.set10() and #if to config.set() and #ifdef 2025-07-28 12:04:09 +10:00
evdev-totem.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
evdev.c Fold hold-to-scroll into existing scroll button lock mode 2026-03-10 23:12:25 +00:00
evdev.h touchpad: don't disable on external mice until we see an event 2026-01-28 00:43:37 +00:00
filter-custom.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
filter-flat.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
filter-low-dpi.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
filter-mouse.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
filter-private.h Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
filter-tablet.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
filter-touchpad-flat.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
filter-touchpad-x230.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
filter-touchpad.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
filter-trackpoint-flat.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
filter-trackpoint.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
filter.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
filter.h Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
libinput-feature.h touchpad: allow disabling palm detection altogether 2025-08-07 10:23:30 +10:00
libinput-git-version.h.in tools: add the git version in the libinput-record output 2018-03-06 14:22:30 +10:00
libinput-log.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
libinput-plugin-button-debounce.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
libinput-plugin-button-debounce.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
libinput-plugin-lua.c lua: install a timeout hook before any pcalls to prevent infinite loops 2026-01-27 00:02:15 +00:00
libinput-plugin-lua.h plugins: add support for lua plugins to change evdev event streams 2025-08-01 16:04:09 +10:00
libinput-plugin-mouse-wheel-lowres.c plugin: register plugins for the plugin-specific usages 2025-08-01 14:29:44 +10:00
libinput-plugin-mouse-wheel-lowres.h plugins: add a plugin to emulate high-resolution wheel events 2025-07-14 11:14:15 +10:00
libinput-plugin-mouse-wheel.c plugin: always disable wheel debouncing on request 2026-01-13 21:52:52 +00:00
libinput-plugin-mouse-wheel.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
libinput-plugin-mtdev.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
libinput-plugin-mtdev.h Move mtdev into a plugin 2025-07-02 06:53:05 +00:00
libinput-plugin-private.h plugin: remove a leftover function 2025-07-15 10:51:42 +10:00
libinput-plugin-system.h plugins: add meson option to autoload plugins 2025-10-31 05:25:29 +00:00
libinput-plugin-tablet-double-tool.c plugin: remove the event frame callbacks when disabling a plugin 2025-08-19 15:22:49 +10:00
libinput-plugin-tablet-double-tool.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
libinput-plugin-tablet-eraser-button.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
libinput-plugin-tablet-eraser-button.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
libinput-plugin-tablet-forced-tool.c tablet: after three valid prox out events, unload the forced prox plugin 2025-11-26 10:55:03 +10:00
libinput-plugin-tablet-forced-tool.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
libinput-plugin-tablet-proximity-timer.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
libinput-plugin-tablet-proximity-timer.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
libinput-plugin.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
libinput-plugin.h Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
libinput-private-config.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
libinput-private-config.h gesutures: allow to configure hold gestures 2021-06-09 01:18:58 +00:00
libinput-private.h touchpad: add get_default_timeout for dwt and dwtp 2026-02-03 13:01:59 +10:00
libinput-restore-selinux-context.sh meson: Fix absolute libdir case in install script 2018-02-16 16:57:30 +10:00
libinput-util.h util: add guards for the etrace/trace defines 2026-02-04 11:18:54 +10:00
libinput-version.h.in COPYING: Update boilerplate from MIT X11 to MIT Expat license 2015-06-16 14:36:04 +10:00
libinput-versionsort.h Fix clang-tidy false positives 2025-11-06 23:31:27 +00:00
libinput.c tablet: allow for the eraser button to be any button 2026-03-09 01:14:21 +00:00
libinput.h Fold hold-to-scroll into existing scroll button lock mode 2026-03-10 23:12:25 +00:00
libinput.sym touchpad: add get_default_timeout for dwt and dwtp 2026-02-03 13:01:59 +10:00
path-seat.c plugins: add meson option to autoload plugins 2025-10-31 05:25:29 +00:00
quirks.c doc: list-quirks should be quirks list 2026-02-20 19:56:46 +01:00
quirks.h quirks: replace ModelPressurepad with setting INPUT_PROP_PRESSUREPAD 2025-12-09 06:07:01 +00:00
timer.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
timer.h Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
udev-seat.c plugins: add meson option to autoload plugins 2025-10-31 05:25:29 +00:00
udev-seat.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-backtrace.h meson.build: change from config.set10() and #if to config.set() and #ifdef 2025-07-28 12:04:09 +10:00
util-bits.h util: silence two clang-tidy false positives 2025-08-06 07:34:55 +00:00
util-files.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-files.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-input-event.h Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
util-libinput.c Add libinput_tablet_tool_get_name() for the tool's specific name 2026-01-14 16:44:01 +10:00
util-libinput.h Move the event printing out into a utility 2025-03-13 06:13:38 +00:00
util-list.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-list.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-macros.h util: mark the various bitmask functions as nonnull 2025-08-06 07:34:54 +00:00
util-matrix.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-mem.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-multivalue.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-newtype.h util: fix documentation issues for newtypes 2025-12-12 04:15:15 +00:00
util-prop-parsers.c quirks: replace ModelPressurepad with setting INPUT_PROP_PRESSUREPAD 2025-12-09 06:07:01 +00:00
util-prop-parsers.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-range.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-ratelimit.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
util-ratelimit.h Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
util-stringbuf.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
util-strings.c Fix clang-tidy false positives 2025-11-06 23:31:27 +00:00
util-strings.h Fix clang-tidy false positives 2025-11-06 23:31:27 +00:00
util-time.h Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
util-udev.h Run clang-format over the code 2025-07-01 16:42:44 +10:00