mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-02-04 11:40:30 +01:00
evdev: fix android MT devices
These devices don't provide ABS_X/Y, but do have proper multitouch. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
9761db6720
commit
dc1d946170
1 changed files with 20 additions and 0 deletions
20
src/evdev.c
20
src/evdev.c
|
|
@ -1396,6 +1396,25 @@ evdev_device_get_udev_tags(struct evdev_device *device,
|
|||
return tags;
|
||||
}
|
||||
|
||||
static inline void
|
||||
evdev_fix_android_mt(struct evdev_device *device)
|
||||
{
|
||||
struct libevdev *evdev = device->evdev;
|
||||
|
||||
if (libevdev_has_event_code(evdev, EV_ABS, ABS_X) ||
|
||||
libevdev_has_event_code(evdev, EV_ABS, ABS_Y))
|
||||
return;
|
||||
|
||||
if (!libevdev_has_event_code(evdev, EV_ABS, ABS_MT_POSITION_X) ||
|
||||
!libevdev_has_event_code(evdev, EV_ABS, ABS_MT_POSITION_Y))
|
||||
return;
|
||||
|
||||
libevdev_set_abs_info(evdev, ABS_X,
|
||||
libevdev_get_abs_info(evdev, ABS_MT_POSITION_X));
|
||||
libevdev_set_abs_info(evdev, ABS_Y,
|
||||
libevdev_get_abs_info(evdev, ABS_MT_POSITION_Y));
|
||||
}
|
||||
|
||||
static int
|
||||
evdev_configure_device(struct evdev_device *device)
|
||||
{
|
||||
|
|
@ -1449,6 +1468,7 @@ evdev_configure_device(struct evdev_device *device)
|
|||
}
|
||||
|
||||
if (libevdev_has_event_type(evdev, EV_ABS)) {
|
||||
evdev_fix_android_mt(device);
|
||||
|
||||
if ((absinfo = libevdev_get_abs_info(evdev, ABS_X))) {
|
||||
if (evdev_fix_abs_resolution(evdev,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue