diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2019-09-04 15:09:13 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2019-09-11 12:24:02 +1000 |
commit | e7a9c07ffe9009c370ba73494729713ee9a7a279 (patch) | |
tree | 766711e7dd53599b02e9002448892dd390dfac10 /meson.build | |
parent | 1e6802b91b0c6ed377b21f553c3c842a95068df9 (diff) | |
download | libinput-e7a9c07ffe9009c370ba73494729713ee9a7a279.tar.gz |
udev: parse the EVDEV_ABS properties for a potential fuzz setting
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>
Diffstat (limited to 'meson.build')
-rw-r--r-- | meson.build | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/meson.build b/meson.build index 6dda1926..9f800daa 100644 --- a/meson.build +++ b/meson.build @@ -149,8 +149,16 @@ executable('libinput-device-group', include_directories : [includes_src, includes_include], install : true, install_dir : dir_udev_callouts) -executable('libinput-fuzz-override', - 'udev/libinput-fuzz-override.c', +executable('libinput-fuzz-extract', + 'udev/libinput-fuzz-extract.c', + 'src/util-strings.c', + 'src/util-prop-parsers.c', + dependencies : [dep_udev, dep_libevdev, dep_lm], + include_directories : [includes_src, includes_include], + install : true, + install_dir : dir_udev_callouts) +executable('libinput-fuzz-to-zero', + 'udev/libinput-fuzz-to-zero.c', dependencies : [dep_udev, dep_libevdev], include_directories : [includes_src, includes_include], install : true, |