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>
Fri, 27 Jan 2023 05:07:49 +0000 (14:07 +0900)
Change-Id: I56d9cc833acad212e3d8071a79adf27bc29c19ca

src/evdev.c

index 6cf7897..efc48ab 100644 (file)
@@ -2006,6 +2006,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);
 
@@ -2042,10 +2043,22 @@ evdev_configure_device(struct evdev_device *device)
                evdev_disable_accelerometer_axes(device);
        }
 
-       if (evdev_device_is_joystick_or_gamepad(device)) {
-               evdev_log_info(device,
-                              "device is a joystick or a gamepad, ignoring\n");
-               return NULL;
+       if (udev_tags & EVDEV_UDEV_TAG_JOYSTICK) {
+               env = getenv("LIBINPUT_IGNORE_JOYSTICK");
+               if (env && atoi(env) == 1) {
+                       evdev_log_info(device,
+                                "device '%s', %s have joystick, ignoring\n",
+                                device->devname, devnode);
+                       return NULL;
+               }
+               else {
+                       if (evdev_device_is_joystick_or_gamepad(device)) {
+                               evdev_log_info(device,
+                                        "device '%s', %s is a joystick, ignoring\n",
+                                        device->devname, devnode);
+                               return NULL;
+                       }
+               }
        }
 
        if (evdev_reject_device(device)) {