mirror of
https://github.com/systemd/systemd.git
synced 2025-08-27 21:49:55 +03:00
udev: don't assign INPUT_ID_MOUSE to a touchpad/joystick/touchscreen (#8259)
If a touchpad has MT axes only but not ABS_X/ABS_Y (DualShock 4 controller), then we hit both the conditions is_touchpad and the later check for !has_abs_axes here, assigning is_mouse and ID_INPUT_MOUSE later. This is a bug, we historically only assigned either of of the pointing device tags ID_INPUT_MOUSE/TOUCHPAD/JOYSTICK/TOUCHSCREEN, never multiple of them. Note that we cannot just check for has_abs_axes and has_mt_coordinates because the apple touch mouse has both. We really need to check if the device has already been assigned something else. https://bugs.freedesktop.org/show_bug.cgi?id=105050
This commit is contained in:
committed by
Zbigniew Jędrzejewski-Szmek
parent
6719ca7211
commit
774ff9ba69
@ -233,7 +233,8 @@ static bool test_pointers(struct udev_device *dev,
|
|||||||
is_touchscreen = true;
|
is_touchscreen = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (has_mouse_button &&
|
if (!is_tablet && !is_touchpad && !is_joystick &&
|
||||||
|
has_mouse_button &&
|
||||||
(has_rel_coordinates ||
|
(has_rel_coordinates ||
|
||||||
!has_abs_coordinates)) /* mouse buttons and no axis */
|
!has_abs_coordinates)) /* mouse buttons and no axis */
|
||||||
is_mouse = true;
|
is_mouse = true;
|
||||||
|
Reference in New Issue
Block a user