summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Michael <cp.michael@samsung.com>2016-12-08 14:30:41 -0500
committerChris Michael <cp.michael@samsung.com>2016-12-08 14:32:22 -0500
commit8ebf4cd972674406b1fbfc497617996f1d7f4462 (patch)
treefedc1642b1c9ec2b1690838a8ad497400c5be631
parentb66324644c3466bfd58df10631fb82f9a1d4815f (diff)
downloadefl-8ebf4cd972674406b1fbfc497617996f1d7f4462.tar.gz
elput: Improve checks for keyboard & pointer devices
Some devices reported by libinput show up as both keyboard and mouse, even tho they are physically only just a keyboard or just a mouse. When a device gets added, we can verify if it is actually a mouse by checking if the device has BTN_LEFT (and for keyboards, check KEY_ENTER). This stops us from getting multiple mouse pointers reported when we really only have one. @fix Signed-off-by: Chris Michael <cp.michael@samsung.com>
-rw-r--r--src/lib/elput/elput_evdev.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/lib/elput/elput_evdev.c b/src/lib/elput/elput_evdev.c
index 1b0ca1b183..d191f49110 100644
--- a/src/lib/elput/elput_evdev.c
+++ b/src/lib/elput/elput_evdev.c
@@ -1239,13 +1239,15 @@ _evdev_device_create(Elput_Seat *seat, struct libinput_device *device)
edev->seat = seat;
edev->device = device;
- if (libinput_device_has_capability(device, LIBINPUT_DEVICE_CAP_KEYBOARD))
+ if ((libinput_device_has_capability(device, LIBINPUT_DEVICE_CAP_KEYBOARD)) &&
+ (libinput_device_keyboard_has_key(device, KEY_ENTER)))
{
_keyboard_init(seat, seat->manager->cached.keymap);
edev->caps |= EVDEV_SEAT_KEYBOARD;
}
- if (libinput_device_has_capability(device, LIBINPUT_DEVICE_CAP_POINTER))
+ if ((libinput_device_has_capability(device, LIBINPUT_DEVICE_CAP_POINTER) &&
+ (libinput_device_pointer_has_button(device, BTN_LEFT))))
{
_pointer_init(seat);
edev->caps |= EVDEV_SEAT_POINTER;