wl_fixed_from_int(cy),
&x, &y);
- if (device->caps & EVDEV_TOUCH)
+ if (device->seat_caps & EVDEV_SEAT_TOUCH)
notify_touch(master, time, 0, x, y, WL_TOUCH_MOTION);
else
notify_motion_absolute(master, time, x, y);
unsigned long abs_bits[NBITS(ABS_MAX)];
unsigned long rel_bits[NBITS(REL_MAX)];
unsigned long key_bits[NBITS(KEY_MAX)];
- int has_key, has_abs, has_rel, has_mt, has_button, has_keyboard;
+ int has_key, has_abs, has_rel, has_mt;
+ int has_button, has_keyboard, has_touch;
unsigned int i;
has_key = 0;
has_mt = 0;
has_button = 0;
has_keyboard = 0;
- device->caps = 0;
+ has_touch = 0;
ioctl(device->fd, EVIOCGBIT(0, sizeof(ev_bits)), ev_bits);
if (TEST_BIT(ev_bits, EV_ABS)) {
device->abs.min_y = absinfo.minimum;
device->abs.max_y = absinfo.maximum;
device->is_mt = 1;
- device->caps |= EVDEV_TOUCH;
+ has_touch = 1;
has_mt = 1;
if (!TEST_BIT(abs_bits, ABS_MT_SLOT)) {
device->mtdev = mtdev_new_open(device->fd);
if (!device->mtdev) {
- device->caps = 0;
weston_log("mtdev required but failed to open for %s\n",
device->devnode);
return 0;
break;
}
}
- if (TEST_BIT(key_bits, BTN_TOUCH)) {
- device->caps |= EVDEV_TOUCH;
- }
+ if (TEST_BIT(key_bits, BTN_TOUCH))
+ has_touch = 1;
for (i = BTN_MISC; i < BTN_JOYSTICK; i++) {
if (TEST_BIT(key_bits, i)) {
has_button = 1;
- device->caps &= ~EVDEV_TOUCH;
break;
}
}
weston_log("input device %s, %s "
"ignored: unsupported device type\n",
device->devname, device->devnode);
- device->caps = 0;
return 0;
}
weston_log("input device %s, %s is a keyboard\n",
device->devname, device->devnode);
}
- if ((device->caps & EVDEV_TOUCH)) {
+ if (has_touch && !has_button) {
weston_seat_init_touch(device->seat);
device->seat_caps |= EVDEV_SEAT_TOUCH;
weston_log("input device %s, %s is a touch device\n",
EVDEV_RELATIVE_MOTION,
};
-enum evdev_device_capability {
- EVDEV_TOUCH = (1 << 0),
-};
-
enum evdev_device_seat_capability {
EVDEV_SEAT_POINTER = (1 << 0),
EVDEV_SEAT_KEYBOARD = (1 << 1),
} rel;
enum evdev_event_type pending_event;
- enum evdev_device_capability caps;
enum evdev_device_seat_capability seat_caps;
int is_mt;