libinput/doc/user
Peter Hutterer 6bb02aaf30 High-resolution scroll wheel support
Starting with kernel v5.0 two new axes are available for high-resolution wheel
scrolling: REL_WHEEL_HI_RES and REL_HWHEEL_HI_RES. 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.

This commit adds a new API for scroll events. Three new event types that encode
the axis source in the event type name and a new API to get a normalized-to-120
value that also used by Windows and the kernel (each multiple of 120 represents
a logical scroll click).

This addresses a main shortcoming with the existing API - it was unreliable to
calculate the click angle based on the axis value+discrete events and thus any
caller using the axis value alone would be left with some ambiguity. With the
v120 API it's now possible to (usually) calculate the click angle, but more
importantly it provides the simplest hw-independent way of scrolling by a
click or a fraction of a click.

A new event type is required, the only way to integrate the v120 value
otherwise was to start sending events with a discrete value of 0. This
would break existing xf86-input-libinput (divide by zero, fixed in 0.28.2) and
weston (general confusion). mutter, kwin are unaffected.

With the new API, the old POINTER_AXIS event are deprecated - callers should use
the new API where available and discard any POINTER_AXIS events.

Notable: REL_WHEEL/REL_HWHEEL are emulated by the kernel but there's no
guarantee that they'll come every accumulated 120 values, e.g. Logitech mice
often send events that don't add up to 120 per detent.

We use the kernel's wheel click emulation instead of doing our own.

libinput guarantees high-resolution events even on pre-5.0 kernels.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
2021-08-31 08:45:01 +02:00
..
dot doc/user: some rewording and improvements 2018-07-31 16:16:16 +10:00
svg doc/user: update the trackpoint pointer acceleration graph 2018-09-04 14:58:18 +10:00
404.rst doc/user: add custom 404 pages for the old links 2018-08-03 11:18:14 +10:00
absolute-axes.rst doc/user: correct some small typos 2018-08-19 11:54:52 -05:00
absolute-coordinate-ranges.rst doc/user: fix a link to the system hwdb file 2021-04-29 10:30:49 +10:00
architecture.rst dox: switch to sphinx for the user-visible documentation 2018-07-30 12:24:04 +10:00
building.rst doc/user: make "verifying install" command portable 2021-07-26 12:35:33 +02:00
button-debouncing.rst doc/user: rename filenames with underscores to dashes 2018-08-02 11:22:11 +10:00
clickpad-softbuttons.rst doc/user: more documentation cleanups and fixes 2018-08-01 10:07:28 +10:00
conf.py.in doc/user: drop markdown source parsers 2019-09-25 15:49:58 +10:00
configuration.rst doc/user: document that we're only using internal devices for DWT 2020-12-15 15:49:17 +10:00
contributing.rst doc: add common failed pipeline errors 2021-07-30 05:21:59 +00:00
dependencies.rst doc/user: generate the required package list for the CI distributions 2021-02-15 15:22:42 +10:00
development.rst High-resolution scroll wheel support 2021-08-31 08:45:01 +02:00
device-configuration-via-udev.rst treewide: fix typos 2020-12-16 22:08:23 +01:00
device-quirks.rst quirks: Add tablet smoothing attribute. 2021-07-28 23:53:36 +00:00
faqs.rst treewide: fix typos 2020-12-16 22:08:23 +01:00
features.rst treewide: fix typos 2020-12-16 22:08:23 +01:00
gestures.rst doc/user: move the hold gesture section up to the others 2021-07-27 05:20:45 +00:00
git_version.py.in doc/user: add a hack to get to the git version 2018-08-02 11:22:11 +10:00
index.rst doc/user: expand the contributing document and make it top-level 2020-01-20 09:14:44 +10:00
meson.build High-resolution scroll wheel support 2021-08-31 08:45:01 +02:00
middle-button-emulation.rst dox: switch to sphinx for the user-visible documentation 2018-07-30 12:24:04 +10:00
normalization-of-relative-motion.rst doc/user: explain why we are doing motion normalization 2021-03-16 21:29:56 +00:00
palm-detection.rst doc/user: document that we're only using internal devices for DWT 2020-12-15 15:49:17 +10:00
pointer-acceleration.rst doc/user: more fixes including adding a device-types section 2018-08-02 11:22:11 +10:00
reporting-bugs.rst treewide: fix typos 2020-12-16 22:08:23 +01:00
scrolling.rst High-resolution scroll wheel support 2021-08-31 08:45:01 +02:00
seats.rst dox: switch to sphinx for the user-visible documentation 2018-07-30 12:24:04 +10:00
switches.rst treewide: fix typos 2020-12-16 22:08:23 +01:00
t440-support.rst doc/user: more fixes including adding a device-types section 2018-08-02 11:22:11 +10:00
tablet-debugging.rst doc/user: move the tablet capabilities debugging to a separate page 2018-08-20 10:06:42 +10:00
tablet-support.rst doc/user: move the tablet capabilities debugging to a separate page 2018-08-20 10:06:42 +10:00
tapping.rst doc: update the docs with a note regarding multifinger dragging 2021-02-15 17:13:46 +10:00
test-suite.rst meson: group all tests under suite names 2019-05-07 04:48:00 +00:00
timestamps.rst dox: switch to sphinx for the user-visible documentation 2018-07-30 12:24:04 +10:00
tools.rst doc/user: add a mini-blurb for the new libinput analyze tool 2020-03-25 05:52:56 +00:00
touchpad-jitter.rst doc/user: fix typo 2018-10-03 11:13:58 +10:00
touchpad-jumping-cursors.rst touchpad: ignore the ALPS jump to 4095/0 2020-09-07 02:13:40 +00:00
touchpad-pressure-debugging.rst tools: revamp the touchpad-pressure measuring tool 2020-03-30 14:44:47 +10:00
touchpad-pressure.rst doc/user: correct some small typos 2018-08-19 11:54:52 -05:00
touchpad-thumb-detection.rst doc/user: add documentation for the new thumb detection 2019-07-17 09:33:14 +10:00
touchpads.rst doc/user: mark the touchpads page as orphan 2018-08-03 11:18:14 +10:00
trackpoint-configuration.rst treewide: fix typos 2020-12-16 22:08:23 +01:00
trackpoints.rst treewide: fix typos 2020-12-16 22:08:23 +01:00
troubleshooting.rst doc/user: move the tablet capabilities debugging to a separate page 2018-08-20 10:06:42 +10:00
what-is-libinput.rst doc/user: more fixes including adding a device-types section 2018-08-02 11:22:11 +10:00
wheel-api.rst High-resolution scroll wheel support 2021-08-31 08:45:01 +02:00