libinput/test
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
..
50-litest.conf test: rename the identifier in the 50-litest.conf 2020-07-15 09:36:48 +10:00
build-cxx.cc meson.build: drop the separate cpp flags 2020-09-09 13:57:39 +10:00
build-pedantic.c Fix a couple of coding style issues 2015-05-01 12:09:57 +10:00
check-double-macros.h Add the ck_double_eq_tol() macros to the backwards compat headers 2019-08-08 13:58:54 +10:00
check-leftover-udev-rules.sh test: add a script to check for leftover litest rules 2018-03-23 12:41:23 +10:00
generate-gcov-report.sh Hook up gcov for coverage reports 2017-01-20 10:35:37 +10:00
helper-copy-and-exec-from-tmp.sh tools: move the builddir lookup function out to a separate file 2019-03-14 11:28:05 +10:00
libinput-test-suite.man test: rename the identifier in the 50-litest.conf 2020-07-15 09:36:48 +10:00
litest-device-absinfo-override.c test: add a test case for checking EVDEV_ABS overrides 2020-02-12 21:22:01 +10:00
litest-device-acer-hawaii-keyboard.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-device-acer-hawaii-touchpad.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-aiptek-tablet.c test: mark the tablets that require forced prox out as such 2020-02-13 04:53:27 +00:00
litest-device-alps-3fg.c touchpad: correct a wrong slot count by the kernel 2020-01-29 15:58:49 +10:00
litest-device-alps-dualpoint.c test: fix the input_id struct for the ALPS touchpad 2018-06-14 15:22:38 +10:00
litest-device-alps-semi-mt.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-device-anker-mouse-kbd.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-device-apple-appletouch.c test: fix a test device section name 2018-06-14 15:54:02 +10:00
litest-device-apple-internal-keyboard.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-device-apple-magicmouse.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-asus-rog-gladius.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-device-atmel-hover.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-device-bcm5974.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-device-calibrated-touchscreen.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-cyborg-rat-5.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-device-dell-canvas-totem-touch.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-dell-canvas-totem.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-elan-tablet.c test: set the elan test device to always double up on tool bits 2020-09-22 17:35:41 +10:00
litest-device-elantech-touchpad.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-device-generic-pressurepad.c touchpad: disable the pressure axes wherever the resolution is nonzero 2021-02-08 03:38:26 +00:00
litest-device-generic-singletouch.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-device-gpio-keys.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-hp-wmi-hotkeys.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-huion-pentablet.c test: auto-assign the tool type for tablet tests 2020-09-22 17:35:41 +10:00
litest-device-ignored-mouse.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-keyboard-all-codes.c test: let the device custom create method return a bool 2019-03-22 16:23:17 +10:00
litest-device-keyboard-quirked.c quirks: add AttrInputPropEnable and Disable 2020-10-23 13:35:50 +10:00
litest-device-keyboard-razer-blackwidow.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-device-keyboard-razer-blade-stealth-videoswitch.c Merge branch 'wip/litest-use-sections-for-tests-v2' 2017-09-25 14:35:46 +10:00
litest-device-keyboard-razer-blade-stealth.c Merge branch 'wip/litest-use-sections-for-tests-v2' 2017-09-25 14:35:46 +10:00
litest-device-keyboard.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-device-lid-switch-surface3.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-lid-switch.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-logitech-media-keyboard-elite.c test: add two test devices for the false joystick labelling 2020-08-13 11:02:33 +10:00
litest-device-logitech-trackball.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-device-magic-trackpad.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-mouse-low-dpi.c High-resolution scroll wheel support 2021-08-31 08:45:01 +02:00
litest-device-mouse-roccat.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-device-mouse-wheel-click-angle.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-mouse-wheel-click-count.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-mouse-wheel-tilt.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-mouse.c High-resolution scroll wheel support 2021-08-31 08:45:01 +02:00
litest-device-ms-nano-transceiver-mouse.c Remove some duplicate empty lines 2018-04-16 15:14:23 +10:00
litest-device-ms-surface-cover.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-device-nexus4-touch-screen.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-device-protocol-a-touch-screen.c test: fix the ABS_Y handling for the Protocol A test device 2020-07-09 09:50:49 +10:00
litest-device-qemu-usb-tablet.c test: make the custom touch override methods filter-able 2020-01-29 15:58:49 +10:00
litest-device-sony-vaio-keys.c test: add two test devices for the false joystick labelling 2020-08-13 11:02:33 +10:00
litest-device-synaptics-hover.c udev: drop the JUMPING_SEMI_MT quirk, no-one uses it 2018-05-31 13:09:37 +10:00
litest-device-synaptics-i2c.c Switch from udev property parsing to the quirks system 2018-06-08 14:37:22 +10:00
litest-device-synaptics-pressurepad.c touchpad: disable the pressure axes wherever the resolution is nonzero 2021-02-08 03:38:26 +00:00
litest-device-synaptics-rmi4.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-device-synaptics-st.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-device-synaptics-t440.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-device-synaptics-x1-carbon-3rd.c Switch from udev property parsing to the quirks system 2018-06-08 14:37:22 +10:00
litest-device-synaptics-x220.c test: rename the x220 clickpad to something more telling 2018-08-07 10:00:40 +10:00
litest-device-tablet-mode-switch.c evdev: filter unreliable tablet mode switch events 2020-06-03 22:32:56 +00:00
litest-device-thinkpad-extrabuttons.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-touch-screen.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-device-touchscreen-fuzz.c udev: re-instate the model-quirks callout 2018-09-10 15:57:27 +10:00
litest-device-touchscreen-invalid-range.c test: remove unsupported events from the invalid-range touchscreen test device 2018-07-16 10:37:42 +10:00
litest-device-touchscreen-mt-tool.c fallback: add support for ABS_MT_TOOL_TYPE for touch screens 2018-08-03 14:21:18 +10:00
litest-device-trackpoint.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-device-uclogic-tablet.c test: mark the tablets that require forced prox out as such 2020-02-13 04:53:27 +00:00
litest-device-vmware-virtual-usb-mouse.c test: make the custom touch override methods filter-able 2020-01-29 15:58:49 +10:00
litest-device-wacom-bamboo-2fg-finger.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-wacom-bamboo-2fg-pad.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-wacom-bamboo-2fg-pen.c test: auto-assign the tool type for tablet tests 2020-09-22 17:35:41 +10:00
litest-device-wacom-bamboo-16fg-pen.c test: auto-assign the tool type for tablet tests 2020-09-22 17:35:41 +10:00
litest-device-wacom-cintiq-12wx-pen.c test: auto-assign the tool type for tablet tests 2020-09-22 17:35:41 +10:00
litest-device-wacom-cintiq-13hdt-finger.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-wacom-cintiq-13hdt-pad.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-wacom-cintiq-13hdt-pen.c test: auto-assign the tool type for tablet tests 2020-09-22 17:35:41 +10:00
litest-device-wacom-cintiq-24hd-pen.c test: auto-assign the tool type for tablet tests 2020-09-22 17:35:41 +10:00
litest-device-wacom-cintiq-24hdt-pad.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-wacom-cintiq-pro-16-finger.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-wacom-cintiq-pro-16-pad.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-wacom-cintiq-pro-16-pen.c test: auto-assign the tool type for tablet tests 2020-09-22 17:35:41 +10:00
litest-device-wacom-ekr.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-wacom-hid4800-pen.c test: auto-assign the tool type for tablet tests 2020-09-22 17:35:41 +10:00
litest-device-wacom-intuos3-pad.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-wacom-intuos5-finger.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-wacom-intuos5-pad.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-wacom-intuos5-pen.c test: auto-assign the tool type for tablet tests 2020-09-22 17:35:41 +10:00
litest-device-wacom-isdv4-4200-pen.c test: auto-assign the tool type for tablet tests 2020-09-22 17:35:41 +10:00
litest-device-wacom-isdv4-e6-finger.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-device-wacom-isdv4-e6-pen.c test: auto-assign the tool type for tablet tests 2020-09-22 17:35:41 +10:00
litest-device-wacom-mobilestudio-pro-pad.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-waltop-tablet.c test: auto-assign the tool type for tablet tests 2020-09-22 17:35:41 +10:00
litest-device-wheel-only.c test: auto-generate the udev rules 2019-06-14 08:52:58 +10:00
litest-device-xen-virtual-pointer.c test: make the custom touch override methods filter-able 2020-01-29 15:58:49 +10:00
litest-device-yubikey.c test: switch to a TEST_DEVICE macro for all the litest test devices 2017-09-21 15:06:17 +10:00
litest-int.h test: wrap the litest user data into a struct 2021-02-12 11:04:57 +10:00
litest-selftest.c Fix a few coverity complaints 2020-11-10 14:27:22 +10:00
litest.c High-resolution scroll wheel support 2021-08-31 08:45:01 +02:00
litest.h High-resolution scroll wheel support 2021-08-31 08:45:01 +02:00
symbols-leak-test test: tidy up the symbols leak test 2018-07-12 11:09:00 +10:00
test-builddir-lookup.c tools: move the builddir lookup function out to a separate file 2019-03-14 11:28:05 +10:00
test-device.c High-resolution scroll wheel support 2021-08-31 08:45:01 +02:00
test-gestures.c High-resolution scroll wheel support 2021-08-31 08:45:01 +02:00
test-keyboard.c test: drop the custom group names 2021-02-12 15:24:15 +10:00
test-library-version.c test: split the library version test out 2019-03-14 11:28:05 +10:00
test-log.c test: drop the custom group names 2021-02-12 15:24:15 +10:00
test-misc.c test: drop the custom group names 2021-02-12 15:24:15 +10:00
test-pad.c test: drop the custom group names 2021-02-12 15:24:15 +10:00
test-path.c evdev: remove device when it is gone 2021-06-21 10:41:19 +00:00
test-pointer.c High-resolution scroll wheel support 2021-08-31 08:45:01 +02:00
test-quirks.c test: Add test for parsing of boolean quirk attributes. 2021-07-30 06:11:20 -07:00
test-switch.c High-resolution scroll wheel support 2021-08-31 08:45:01 +02:00
test-tablet.c gestures: add hold gesture implementation 2021-06-09 01:18:58 +00:00
test-totem.c test: drop the custom group names 2021-02-12 15:24:15 +10:00
test-touch.c test: drop the custom group names 2021-02-12 15:24:15 +10:00
test-touchpad-buttons.c Replace fallthrough comments with __attribute__((fallthrough)) 2021-07-22 23:14:43 +00:00
test-touchpad-tap.c High-resolution scroll wheel support 2021-08-31 08:45:01 +02:00
test-touchpad.c High-resolution scroll wheel support 2021-08-31 08:45:01 +02:00
test-trackball.c test: drop the custom group names 2021-02-12 15:24:15 +10:00
test-trackpoint.c High-resolution scroll wheel support 2021-08-31 08:45:01 +02:00
test-udev.c test: create devices for our udev seat checks 2021-08-09 10:50:25 +10:00
test-util-includes.c Split utility functions into separate source files 2019-09-11 12:23:04 +10:00
test-utils.c util-list: restore list_for_each_safe() to be a single statement 2021-07-22 12:53:08 +10:00
valgrind.suppressions test: grab the device before any lid or tablet mode switches 2020-07-07 18:51:33 +10:00