libinput/test
Peter Hutterer 48cd4c7287 tablet: track pressure ranges per tablet
Tablets may have different ABS_PRESSURE ranges with the oldest tablets
having 1k pressure range, then 2k, and the newer ones 8k.

If the same tool is used across two tablets with different ABS_PRESSURE
ranges, the first tablet in proximity calculated the range on where to
normalize to. As a result the other tablet either couldn't reach the
full pressure (2k pressure first, then 8k) or the full pressure range
was reached at a fraction of the full range (8k pressure first, then
2k).

Fix this by moving the threshold handling into a separate struct and
hardcoding up to 4 of those per tool. That is 2 more than the more
complicated setups I've heard of (and this only applies to tracking the
same stylus across those tablets anyway).

This duplicates the pressure offset heuristics but that's easier than
figuring out how to handle heuristics across potentially two tablets.

The range configuration is left as-is on the assumption that this one is
per tool, not per tablet.

Closes #1089

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1143>
2025-02-25 05:18:58 +00: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-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: fix a wrong value for the auto-assigned BTN_TOOL 2024-01-22 01:21:29 +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: fix uinput creation for the slotted devices with too many slots 2024-10-15 09:56:19 +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: force the apple magicmouse to 1000dpi 2024-03-18 23:02:05 +00: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: add a pre-calibrated flag and exclude the tests as necessary 2023-06-07 09:23:05 +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: change tablet coords to doubles and pass the pointer through 2023-06-07 09:23:05 +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-format-string.c evdev: strip the device name of format directives 2022-04-20 13:32:31 +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: set pressure to zero on proxout for the tablets with forced prox out 2024-01-22 01:21:29 +00:00
litest-device-huion-q620m-dial.c tablet: add API for relative dials 2024-02-20 02:49:05 +00: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 Replace strneq() with hardcoded lengths with strstartswith() 2025-01-20 10:29:47 +00:00
litest-device-keyboard-quirked.c quirks: allow overriding of AttrEventCode and AttrInputProp 2022-11-28 08:25:41 +10:00
litest-device-keyboard-razer-blackwidow.c test: fix uinput creation for the slotted devices with too many slots 2024-10-15 09:56:19 +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 test: fix uinput creation for the slotted devices with too many slots 2024-10-15 09:56:19 +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-lenovo-scrollpoint.c wheel: fix Lenovo Scrollpoint quirk 2022-06-07 19:55:42 +02: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: fix uinput creation for the slotted devices with too many slots 2024-10-15 09:56:19 +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-phantomclicks.c Disregard touchless clicks on flaky devices 2023-04-11 02:00:52 +00: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 sparse: make some variables static 2024-03-18 23:35:34 +00: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-doubledial.c tablet: add API for relative dials 2024-02-20 02:49:05 +00:00
litest-device-tablet-mode-switch.c Fix pre-commit errors 2024-09-03 09:51:41 +02:00
litest-device-tablet-rel-dial.c tablet: add API for relative dials 2024-02-20 02:49:05 +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: give the generic MT touchscreen realistic ranges 2023-03-17 14:04:58 +10:00
litest-device-touchpad-palm-threshold-zero.c touchpad: allow a palm pressure threshold of 0 to disable 2023-10-09 07:03:47 +00: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: set pressure to zero on proxout for the tablets with forced prox out 2024-01-22 01:21:29 +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-calibrated-tablet.c test: add a calibrated (swapped) tablet device 2023-06-07 09:23:05 +10:00
litest-device-wacom-cintiq-12wx-pen.c test: rename the 12WX test device short name and enum 2025-02-25 05:18:53 +00: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-524c-pen.c test: change tablet coords to doubles and pass the pointer through 2023-06-07 09:23:05 +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 tablet: add API for relative dials 2024-02-20 02:49:05 +00:00
litest-runner.c test: add optional value names to parametrized tests 2025-02-20 08:18:48 +01:00
litest-runner.h test: fix litest_test_param_get_double 2025-02-18 14:58:28 +10:00
litest-selftest.c test: a boolean parameter is always true/false 2025-01-20 12:08:46 +00:00
litest.c test: add optional value names to parametrized tests 2025-02-20 08:18:48 +01:00
litest.h test: rename the 12WX test device short name and enum 2025-02-25 05:18:53 +00:00
symbols-leak-test test: print the usage from the symbols-leak-test 2022-11-22 19:02:03 +00: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 test: fix off-by-ones in two ranges, prevent the same in remaining ranged tests 2025-02-20 09:34:20 +01:00
test-gestures.c test: convert most ranged tests to parametrized ones 2025-02-20 09:34:14 +01:00
test-keyboard.c Replace strneq() with hardcoded lengths with strstartswith() 2025-01-20 10:29:47 +00:00
test-library-version.c test: split the library version test out 2019-03-14 11:28:05 +10:00
test-log.c test: add optional value names to parametrized tests 2025-02-20 08:18:48 +01:00
test-misc.c test: rename the 12WX test device short name and enum 2025-02-25 05:18:53 +00:00
test-pad.c pad: rework the tablet pad mode setup 2024-10-31 11:04:45 +10:00
test-path.c Replace strneq() with hardcoded lengths with strstartswith() 2025-01-20 10:29:47 +00:00
test-pointer.c test: convert most ranged tests to parametrized ones 2025-02-20 09:34:14 +01:00
test-quirks.c test: convert most ranged tests to parametrized ones 2025-02-20 09:34:14 +01:00
test-switch.c test: add optional value names to parametrized tests 2025-02-20 08:18:48 +01:00
test-tablet.c tablet: track pressure ranges per tablet 2025-02-25 05:18:58 +00:00
test-totem.c test: add litest-runner as test suite runner 2024-10-30 23:20:42 +00:00
test-touch.c test: add optional value names to parametrized tests 2025-02-20 08:18:48 +01:00
test-touchpad-buttons.c test: convert most ranged tests to parametrized ones 2025-02-20 09:34:14 +01:00
test-touchpad-tap.c test: fix off-by-ones in two ranges, prevent the same in remaining ranged tests 2025-02-20 09:34:20 +01:00
test-touchpad.c test: convert most ranged tests to parametrized ones 2025-02-20 09:34:14 +01:00
test-trackball.c test: add litest-runner as test suite runner 2024-10-30 23:20:42 +00:00
test-trackpoint.c test: add litest-runner as test suite runner 2024-10-30 23:20:42 +00:00
test-udev.c Replace strneq() with hardcoded lengths with strstartswith() 2025-01-20 10:29:47 +00:00
test-util-includes.c Split utility functions into separate source files 2019-09-11 12:23:04 +10:00
test-utils.c test: implement support for parametrizing tests 2025-01-07 02:02:37 +00:00
test_quirks_files.py test: add a test to make sure we don't accidentally add Logitech receivers 2023-03-23 12:13:23 +10:00
valgrind.suppressions test: grab the device before any lid or tablet mode switches 2020-07-07 18:51:33 +10:00