Incorrectly enabled high-resolution scroll
Some devices might announce support for high-resolution scroll wheel by enabling
REL_WHEEL_HI_RES
and/or REL_HWHEEL_HI_RES
but never send a
high-resolution scroll event.
When the first low-resolution scroll event is received without any previous high-resolution event, libinput prints a bug warning with the text “device supports high-resolution scroll but only low-resolution events have been received” and a link to this page.
Note
This warning will be printed only once
In most cases this is a bug on the device firmware, the kernel driver or in a software used to create user-space devices through uinput.
Once the bug is detected, libinput will start emulating high-resolution scroll events.
Detecting and fixing the issue
Events sent by a buggy device can be shown in the
libinput record output for the device. Notice that
REL_WHEEL_HI_RES
and REL_HWHEEL_HI_RES
are set but only REL_WHEEL
events are sent:
# Supported Events:
# Event type 0 (EV_SYN)
# Event type 1 (EV_KEY)
# Event code 272 (BTN_LEFT)
# Event type 2 (EV_REL)
# Event code 0 (REL_X)
# Event code 1 (REL_Y)
# Event code 6 (REL_HWHEEL)
# Event code 8 (REL_WHEEL)
# Event code 11 (REL_WHEEL_HI_RES)
# Event code 12 (REL_HWHEEL_HI_RES)
[...]
quirks:
events:
- evdev:
- [ 0, 0, 2, 8, 1] # EV_REL / REL_WHEEL 1
- [ 0, 0, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +0ms
- evdev:
- [ 0, 15126, 2, 8, 1] # EV_REL / REL_WHEEL 1
- [ 0, 15126, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +15ms
- evdev:
- [ 0, 30250, 2, 8, 1] # EV_REL / REL_WHEEL 1
- [ 0, 30250, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +15ms
The issue can be fixed by adding a quirk to unset the REL_WHEEL_HI_RES
and
REL_HWHEEL_HI_RES
event codes:
AttrEventCode=-REL_WHEEL_HI_RES;-REL_HWHEEL_HI_RES;
Please see Device quirks for details.