1.. _incorrectly_enabled_hires: 2 3============================================================================== 4Incorrectly enabled high-resolution scroll 5============================================================================== 6 7Some devices might announce support for high-resolution scroll wheel by enabling 8``REL_WHEEL_HI_RES`` and/or ``REL_HWHEEL_HI_RES`` but never send a 9high-resolution scroll event. 10 11When the first low-resolution scroll event is received without any previous 12high-resolution event, libinput prints a bug warning with the text **"device 13supports high-resolution scroll but only low-resolution events have been 14received"** and a link to this page. 15 16.. note:: This warning will be printed only once 17 18In most cases this is a bug on the device firmware, the kernel driver or in a 19software used to create user-space devices through uinput. 20 21Once the bug is detected, libinput will start emulating high-resolution scroll 22events. 23 24------------------------------------------------------------------------------ 25Detecting and fixing the issue 26------------------------------------------------------------------------------ 27 28Events sent by a buggy device can be shown in the 29:ref:`libinput record <libinput-record>` output for the device. Notice that 30``REL_WHEEL_HI_RES`` and ``REL_HWHEEL_HI_RES`` are set but only ``REL_WHEEL`` 31events are sent: :: 32 33 # Supported Events: 34 # Event type 0 (EV_SYN) 35 # Event type 1 (EV_KEY) 36 # Event code 272 (BTN_LEFT) 37 # Event type 2 (EV_REL) 38 # Event code 0 (REL_X) 39 # Event code 1 (REL_Y) 40 # Event code 6 (REL_HWHEEL) 41 # Event code 8 (REL_WHEEL) 42 # Event code 11 (REL_WHEEL_HI_RES) 43 # Event code 12 (REL_HWHEEL_HI_RES) 44 [...] 45 quirks: 46 events: 47 - evdev: 48 - [ 0, 0, 2, 8, 1] # EV_REL / REL_WHEEL 1 49 - [ 0, 0, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +0ms 50 - evdev: 51 - [ 0, 15126, 2, 8, 1] # EV_REL / REL_WHEEL 1 52 - [ 0, 15126, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +15ms 53 - evdev: 54 - [ 0, 30250, 2, 8, 1] # EV_REL / REL_WHEEL 1 55 - [ 0, 30250, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +15ms 56 57The issue can be fixed by adding a quirk to unset the ``REL_WHEEL_HI_RES`` and 58``REL_HWHEEL_HI_RES`` event codes: :: 59 60 AttrEventCodeDisable=REL_WHEEL_HI_RES;REL_HWHEEL_HI_RES; 61 62Please see :ref:`device-quirks` for details. 63