diff --git a/libevdev/libevdev.c b/libevdev/libevdev.c index d85580c..d326c8d 100644 --- a/libevdev/libevdev.c +++ b/libevdev/libevdev.c @@ -352,6 +352,9 @@ sync_mt_state(struct libevdev *dev) if (i == ABS_MT_SLOT) continue; + if (!libevdev_has_event_code(dev, EV_ABS, i)) + continue; + idx = i - ABS_MT_MIN; mt_state[idx].code = i; rc = ioctl(dev->fd, EVIOCGMTSLOTS(sizeof(struct mt_state)), &mt_state[idx]); @@ -371,6 +374,9 @@ sync_mt_state(struct libevdev *dev) if (j == ABS_MT_SLOT) continue; + if (!libevdev_has_event_code(dev, EV_ABS, j)) + continue; + if (dev->mt_slot_vals[i][jdx] == mt_state[jdx].val[i]) continue;