mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-05-03 06:08:00 +02:00
Where a fuzz is defined in the 60-evdev.hwdb, we rely on a udev builtin to
set the kernel device to that fuzz value. Unfortunately that happens after our
program is called with this order of events:
1. 60-evdev.rules calls IMPORT(builtin) for the hwdb which sets the EVDEV_ABS_*
properties. It also sets RUN{builtin}=keyboard but that's not invoked yet.
2. 90-libinput-fuzz-override.rules calls IMPORT{program} for our fuzz override
bits. That sets the kernel fuzz value to 0 and sets the LIBINPUT_FUZZ_*
propertie
3. The keyboard builtin is run once all the rules have been processed.
Our problem is that where the fuzz is set in a hwdb entry, the kernel fuzz is
still unset when we get to look at it, so we always end up with a fuzz of zero
for us and a nonzero kernel fuzz.
Work around this by checking the EVDEV_ABS property, extracting the fuzz from
there and re-printing that property without the fuzz. This way we ensure the
kernel remains at zero fuzz and we use the one from the hwdb instead.
Fixes #346
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
27 lines
1.1 KiB
Text
27 lines
1.1 KiB
Text
# Do not edit this file, it will be overwritten on update
|
|
#
|
|
# This file contains lookup rules for libinput model-specific quirks.
|
|
# IT IS NOT A STABLE API AND SUBJECT TO CHANGE AT ANY TIME
|
|
|
|
ACTION!="add|change", GOTO="libinput_fuzz_override_end"
|
|
KERNEL!="event*", GOTO="libinput_fuzz_override_end"
|
|
|
|
# Two-step process: fuzz-extract sets the LIBINPUT_FUZZ property and
|
|
# fuzz-to-zero sets the kernel fuzz to zero. They must be in IMPORT and RUN,
|
|
# respectively, to correctly interact with the 60-evdev.hwdb
|
|
#
|
|
# Drawback: if this rule is triggered more than once, we'll lose the fuzz
|
|
# information (because the kernel fuzz will then be zero). Nothing we can do
|
|
# about that.
|
|
ATTRS{capabilities/abs}!="0", \
|
|
ENV{ID_INPUT_TOUCHPAD}=="1", \
|
|
IMPORT{program}="@UDEV_TEST_PATH@libinput-fuzz-extract %S%p", \
|
|
RUN{program}="@UDEV_TEST_PATH@libinput-fuzz-to-zero %S%p", \
|
|
GOTO="libinput_fuzz_override_end"
|
|
ATTRS{capabilities/abs}!="0", \
|
|
ENV{ID_INPUT_TOUCHSCREEN}=="1", \
|
|
IMPORT{program}="@UDEV_TEST_PATH@libinput-fuzz-extract %S%p", \
|
|
RUN{program}="@UDEV_TEST_PATH@libinput-fuzz-to-zero %S%p", \
|
|
GOTO="libinput_fuzz_override_end"
|
|
|
|
LABEL="libinput_fuzz_override_end"
|