return 0;
}
+static inline int
+evdev_need_mtdev(struct evdev_device *device)
+{
+ struct libevdev *evdev = device->evdev;
+
+ return (libevdev_has_event_code(evdev, EV_ABS, ABS_MT_POSITION_X) &&
+ libevdev_has_event_code(evdev, EV_ABS, ABS_MT_POSITION_Y) &&
+ !libevdev_has_event_code(evdev, EV_ABS, ABS_MT_SLOT));
+}
+
static int
evdev_configure_device(struct evdev_device *device)
{
has_touch = 1;
has_mt = 1;
- if (!libevdev_has_event_code(evdev,
- EV_ABS, ABS_MT_SLOT)) {
+ if (evdev_need_mtdev(device)) {
device->mtdev = mtdev_new_open(device->fd);
if (!device->mtdev)
return -1;