The first revision of this MR was opened on GitHub. Since the project was migrated to GitLab I can not edit it anymore.
This is the second revision adding the changes suggested by Simon here: !3082 (closed)
Starting with Linux Kernel v5.0 two new axes are available for high-resolution wheel scrolling:
Both axes send data in fractions of 120 where each multiple of 120 amounts to one logical scroll event. Fractions of 120 indicate a wheel movement less than one detent. A "detent" is the named used in the Kernel for a mouse wheel click:
Three new events are now available on libinput:
LIBINPUT_EVENT_POINTER_SCROLL_CONTINUOUS. These events replace the
LIBINPUT_EVENT_POINTER_AXIS event, so new clients should simply ignore that event.
LIBINPUT_EVENT_POINTER_SCROLL_WHEEL event adds a new API
libinput_pointer_scroll_get_value_v120() is a mirror from the kernel API (itself a copy of the Windows API). The new event is sent for all wheel events, even those that don't technically support high-resolution scrolling and even on older kernels that don't have this feature. So callers can simply ignore any
LIBINPUT_EVENT_POINTER_AXIS event and use the new event types only.
LIBINPUT_EVENT_POINTER_SCROLL_CONTINUOUS, as well as
LIBINPUT_EVENT_POINTER_SCROLL_WHEEL, a new API is available:
libinput_pointer_scroll_get_value(). This API is similar to
- libinput: Merged
- Wayland: It was open about a year ago by Peter Hutterer, it'd be nice to get some feedback.
- wlroots: This PR
- GTK: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/3839 - ACKed
How to test it:
Install libinput >= 1.19.
Clone and install Peter's Wayland protocol: wayland/wayland!72 (merged)
To test with a client that supports high-resolution scroll, clone my GTK branch: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/3839
And run it:
$ meson build --prefix=`pwd`/build/install --buildtype=debug # Installing here to not replace your stable GTK $ ninja -C build && \ ninja -C build install && \ GDK_BACKEND=wayland WAYLAND_DEBUG=1 XDG_DATA_DIRS=`pwd`/build/install/share:$XDG_DATA_DIRS LD_LIBRARY_PATH=`pwd`/build/install/lib64:$LD_LIBRARY_PATH ./build/install/bin/gtk4-demo
Of course, you'll need hardware to test it.
Logitech mice are supported, otherwise any mouse that shows a
ResolutionMultiplier in the hid-recorder output (most Microsoft-branded mice of the last decade).
Fix #1627 (closed)