From e65392c2f5c926de748bf66481155baefec30f11 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 26 Jun 2019 11:29:31 +1000 Subject: udev: rename libinput-model-quirks rules to libinput-fuzz-override.rules Because these days, that's all it does Signed-off-by: Peter Hutterer --- udev/90-libinput-fuzz-override.rules.in | 12 ++++ udev/90-libinput-model-quirks.rules.in | 12 ---- udev/libinput-fuzz-override.c | 124 ++++++++++++++++++++++++++++++++ udev/libinput-model-quirks.c | 124 -------------------------------- 4 files changed, 136 insertions(+), 136 deletions(-) create mode 100644 udev/90-libinput-fuzz-override.rules.in delete mode 100644 udev/90-libinput-model-quirks.rules.in create mode 100644 udev/libinput-fuzz-override.c delete mode 100644 udev/libinput-model-quirks.c (limited to 'udev') diff --git a/udev/90-libinput-fuzz-override.rules.in b/udev/90-libinput-fuzz-override.rules.in new file mode 100644 index 00000000..84ad26b8 --- /dev/null +++ b/udev/90-libinput-fuzz-override.rules.in @@ -0,0 +1,12 @@ +# 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" + +ATTRS{capabilities/abs}!="0", IMPORT{program}="@UDEV_TEST_PATH@libinput-fuzz-override %S%p" + +LABEL="libinput_model_quirks_end" + diff --git a/udev/90-libinput-model-quirks.rules.in b/udev/90-libinput-model-quirks.rules.in deleted file mode 100644 index e0e83f81..00000000 --- a/udev/90-libinput-model-quirks.rules.in +++ /dev/null @@ -1,12 +0,0 @@ -# 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_model_quirks_end" -KERNEL!="event*", GOTO="libinput_model_quirks_end" - -ATTRS{capabilities/abs}!="0", IMPORT{program}="@UDEV_TEST_PATH@libinput-model-quirks %S%p" - -LABEL="libinput_model_quirks_end" - diff --git a/udev/libinput-fuzz-override.c b/udev/libinput-fuzz-override.c new file mode 100644 index 00000000..bb05886c --- /dev/null +++ b/udev/libinput-fuzz-override.c @@ -0,0 +1,124 @@ +/* + * Copyright © 2015 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "config.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "libinput-util.h" + +/** + * For a non-zero fuzz on the x/y axes, print that fuzz as property and + * reset the kernel's fuzz to 0. + * https://bugs.freedesktop.org/show_bug.cgi?id=105202 + */ +static void +handle_absfuzz(struct udev_device *device) +{ + const char *devnode; + struct libevdev *evdev = NULL; + int fd = -1; + int rc; + unsigned int *code; + unsigned int axes[] = {ABS_X, + ABS_Y, + ABS_MT_POSITION_X, + ABS_MT_POSITION_Y}; + + devnode = udev_device_get_devnode(device); + if (!devnode) + goto out; + + fd = open(devnode, O_RDWR); + if (fd == -1 && errno == EACCES) + fd = open(devnode, O_RDONLY); + if (fd < 0) + goto out; + + rc = libevdev_new_from_fd(fd, &evdev); + if (rc != 0) + goto out; + + if (!libevdev_has_event_type(evdev, EV_ABS)) + goto out; + + ARRAY_FOR_EACH(axes, code) { + struct input_absinfo abs; + int fuzz; + + fuzz = libevdev_get_abs_fuzz(evdev, *code); + if (!fuzz) + continue; + + abs = *libevdev_get_abs_info(evdev, *code); + abs.fuzz = 0; + libevdev_kernel_set_abs_info(evdev, *code, &abs); + + printf("LIBINPUT_FUZZ_%02x=%d\n", *code, fuzz); + } + +out: + close(fd); + libevdev_free(evdev); +} + +int main(int argc, char **argv) +{ + int rc = 1; + struct udev *udev = NULL; + struct udev_device *device = NULL; + const char *syspath; + + if (argc != 2) + return 1; + + syspath = argv[1]; + + udev = udev_new(); + if (!udev) + goto out; + + device = udev_device_new_from_syspath(udev, syspath); + if (!device) + goto out; + + handle_absfuzz(device); + + rc = 0; + +out: + if (device) + udev_device_unref(device); + if (udev) + udev_unref(udev); + + return rc; +} diff --git a/udev/libinput-model-quirks.c b/udev/libinput-model-quirks.c deleted file mode 100644 index bb05886c..00000000 --- a/udev/libinput-model-quirks.c +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright © 2015 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -#include "config.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "libinput-util.h" - -/** - * For a non-zero fuzz on the x/y axes, print that fuzz as property and - * reset the kernel's fuzz to 0. - * https://bugs.freedesktop.org/show_bug.cgi?id=105202 - */ -static void -handle_absfuzz(struct udev_device *device) -{ - const char *devnode; - struct libevdev *evdev = NULL; - int fd = -1; - int rc; - unsigned int *code; - unsigned int axes[] = {ABS_X, - ABS_Y, - ABS_MT_POSITION_X, - ABS_MT_POSITION_Y}; - - devnode = udev_device_get_devnode(device); - if (!devnode) - goto out; - - fd = open(devnode, O_RDWR); - if (fd == -1 && errno == EACCES) - fd = open(devnode, O_RDONLY); - if (fd < 0) - goto out; - - rc = libevdev_new_from_fd(fd, &evdev); - if (rc != 0) - goto out; - - if (!libevdev_has_event_type(evdev, EV_ABS)) - goto out; - - ARRAY_FOR_EACH(axes, code) { - struct input_absinfo abs; - int fuzz; - - fuzz = libevdev_get_abs_fuzz(evdev, *code); - if (!fuzz) - continue; - - abs = *libevdev_get_abs_info(evdev, *code); - abs.fuzz = 0; - libevdev_kernel_set_abs_info(evdev, *code, &abs); - - printf("LIBINPUT_FUZZ_%02x=%d\n", *code, fuzz); - } - -out: - close(fd); - libevdev_free(evdev); -} - -int main(int argc, char **argv) -{ - int rc = 1; - struct udev *udev = NULL; - struct udev_device *device = NULL; - const char *syspath; - - if (argc != 2) - return 1; - - syspath = argv[1]; - - udev = udev_new(); - if (!udev) - goto out; - - device = udev_device_new_from_syspath(udev, syspath); - if (!device) - goto out; - - handle_absfuzz(device); - - rc = 0; - -out: - if (device) - udev_device_unref(device); - if (udev) - udev_unref(udev); - - return rc; -} -- cgit v1.2.1