From f6caf57b00de0456aeaa40f583d42822a1ba8725 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Mon, 16 Dec 2013 15:07:59 -0800 Subject: [PATCH] evdev: Use a has_keyboard flag instead of EVDEV_KEYBOARD bit --- src/evdev.c | 14 +++++++------- src/evdev.h | 3 +-- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/evdev.c b/src/evdev.c index 6bb69767..5af99aed 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -52,7 +52,7 @@ evdev_device_led_update(struct evdev_device *device, enum libinput_led leds) struct input_event ev[ARRAY_LENGTH(map) + 1]; unsigned int i; - if (!device->caps & EVDEV_KEYBOARD) + if (!(device->seat_caps & EVDEV_DEVICE_KEYBOARD)) return; memset(ev, 0, sizeof(ev)); @@ -473,7 +473,7 @@ evdev_configure_device(struct evdev_device *device) 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; + int has_key, has_abs, has_rel, has_mt, has_button, has_keyboard; unsigned int i; has_key = 0; @@ -481,6 +481,7 @@ evdev_configure_device(struct evdev_device *device) has_abs = 0; has_mt = 0; has_button = 0; + has_keyboard = 0; device->caps = 0; ioctl(device->fd, EVIOCGBIT(0, sizeof(ev_bits)), ev_bits); @@ -559,7 +560,7 @@ evdev_configure_device(struct evdev_device *device) if (i >= BTN_MISC && i < KEY_OK) continue; if (TEST_BIT(key_bits, i)) { - device->caps |= EVDEV_KEYBOARD; + has_keyboard = 1; break; } } @@ -574,9 +575,8 @@ evdev_configure_device(struct evdev_device *device) } } } - if (TEST_BIT(ev_bits, EV_LED)) { - device->caps |= EVDEV_KEYBOARD; - } + if (TEST_BIT(ev_bits, EV_LED)) + has_keyboard = 1; /* This rule tries to catch accelerometer devices and opt out. We may * want to adjust the protocol later adding a proper event for dealing @@ -588,7 +588,7 @@ evdev_configure_device(struct evdev_device *device) if ((has_abs || has_rel) && has_button) device->seat_caps |= EVDEV_DEVICE_POINTER; - if ((device->caps & EVDEV_KEYBOARD)) + if (has_keyboard) device->seat_caps |= EVDEV_DEVICE_KEYBOARD; if ((device->caps & EVDEV_TOUCH)) device->seat_caps |= EVDEV_DEVICE_TOUCH; diff --git a/src/evdev.h b/src/evdev.h index be5520ce..5bd42eb6 100644 --- a/src/evdev.h +++ b/src/evdev.h @@ -44,8 +44,7 @@ enum evdev_event_type { }; enum evdev_device_capability { - EVDEV_KEYBOARD = (1 << 0), - EVDEV_TOUCH = (1 << 1), + EVDEV_TOUCH = (1 << 0), }; enum evdev_device_seat_capability {