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>
This commit is contained in:
parent
b66324644c
commit
8ebf4cd972
|
@ -1239,13 +1239,15 @@ _evdev_device_create(Elput_Seat *seat, struct libinput_device *device)
|
||||||
edev->seat = seat;
|
edev->seat = seat;
|
||||||
edev->device = device;
|
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);
|
_keyboard_init(seat, seat->manager->cached.keymap);
|
||||||
edev->caps |= EVDEV_SEAT_KEYBOARD;
|
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);
|
_pointer_init(seat);
|
||||||
edev->caps |= EVDEV_SEAT_POINTER;
|
edev->caps |= EVDEV_SEAT_POINTER;
|
||||||
|
|
Loading…
Reference in New Issue