Details
-
Bug
-
Resolution: Unresolved
-
P1: Critical
-
None
-
6.2.4
-
None
Description
Since this change it is not possible to distinguish between mice that support pixel scrolling and touch pads.
Our use case is that we support panning with wheel events if it is a touch pad, otherwise wheel events are interpreted as zoom.
Is it really correct to just override the device type for any device here?
As a workaround we tried to look at the capabilities of the device, since touch pads seem to be set up in `QCocoaTouch::getTouchDevice`, unfortunately it is not reliable since depending on if we get a mouse event before the touch device is set up, the primary device assumes the id of the touch pad in `pointingDeviceFor`, causing 2 devices to have the same id, making all input events use the wrong device without the correct capabilities.
The specific issue is with Logitech mice, using the Logi Options+ software, but we assume it is possible for other mice to report pixel scroll as well.
Repro steps for the bug on a mac book:
- Start the app without moving the mouse via the touch pad, either just wait or use an external mouse initially. The touch pad device will now have the correct capabilities for the rest of the session.
- Start the app while continuously moving the mouse with the touch pad. There will be a mouse event before the touch pad device has been created and this will make the primary device adopt the touch pads deviceID.
Attachments
Issue Links
- relates to
-
QTBUG-112432 wayland plugin should distinguish touchpads from mice, etc.
- Reported
- resulted from
-
QTBUG-63363 QPointingDevices for the trackpad and mouse are dynamically instantiated on macOS
- Reported
Gerrit Reviews
For Gerrit Dashboard: QTBUG-130300 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
598693,1 | macOS: Don't create multiple input devices for the same system | dev | qt/qtbase | Status: NEW | 0 | 0 |