• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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