Ignore joystick devices if LIBINPUT_IGNORE_JOYSTICK env is 1
authorJengHyun Kang <jhyuni.kang@samsung.com>
Fri, 9 Dec 2016 02:51:58 +0000 (11:51 +0900)
committerDuna Oh <duna.oh@samsung.com>
Mon, 7 Feb 2022 11:56:58 +0000 (20:56 +0900)
Change-Id: I56d9cc833acad212e3d8071a79adf27bc29c19ca

src/evdev.c

index b855f0cc32d109b1c3bedb4b05d3913a5cec0ac7..d603f5d753823867b87082aa8403e1cfaafb709d 100644 (file)
@@ -1826,6 +1826,7 @@ evdev_configure_device(struct evdev_device *device)
        enum evdev_device_udev_tags udev_tags;
        unsigned int tablet_tags;
        struct evdev_dispatch *dispatch;
+       char *env;
 
        udev_tags = evdev_device_get_udev_tags(device, device->udev_device);
 
@@ -1862,10 +1863,24 @@ evdev_configure_device(struct evdev_device *device)
                evdev_disable_accelerometer_axes(device);
        }
 
-       if (udev_tags == (EVDEV_UDEV_TAG_INPUT|EVDEV_UDEV_TAG_JOYSTICK)) {
-               evdev_log_info(device,
-                              "device is a joystick, ignoring\n");
-               return NULL;
+       /* libwacom *adds* TABLET, TOUCHPAD but leaves JOYSTICK in place, so
+          make sure we only ignore real joystick devices */
+       if (udev_tags & EVDEV_UDEV_TAG_JOYSTICK) {
+               env = getenv("LIBINPUT_IGNORE_JOYSTICK");
+               if (env && atoi(env) == 1) {
+                       log_info(libinput,
+                                "input device '%s', %s have joystick, ignoring\n",
+                                device->devname, devnode);
+                               return -1;
+               }
+               else {
+                       if ((udev_tags & EVDEV_UDEV_TAG_JOYSTICK) == udev_tags) {
+                               log_info(libinput,
+                                        "input device '%s', %s is a joystick, ignoring\n",
+                                        device->devname, devnode);
+                               return -1;
+                       }
+               }
        }
 
        if (evdev_reject_device(device)) {