diff options
author | Chris Michael <cp.michael@samsung.com> | 2016-12-08 14:30:41 -0500 |
---|---|---|
committer | Chris Michael <cp.michael@samsung.com> | 2016-12-08 14:32:22 -0500 |
commit | 8ebf4cd972674406b1fbfc497617996f1d7f4462 (patch) | |
tree | fedc1642b1c9ec2b1690838a8ad497400c5be631 | |
parent | b66324644c3466bfd58df10631fb82f9a1d4815f (diff) | |
download | efl-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.c | 6 |
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; |