Skip to content

winit-x11: don't classify VM tablet pointers as pens - #4657

Open
maurerdietmar wants to merge 1 commit into
rust-windowing:masterfrom
maurerdietmar:x11-vm-tablet-pointer
Open

winit-x11: don't classify VM tablet pointers as pens#4657
maurerdietmar wants to merge 1 commit into
rust-windowing:masterfrom
maurerdietmar:x11-vm-tablet-pointer

Conversation

@maurerdietmar

Copy link
Copy Markdown

Device::new marks any pointer whose valuator class carries Abs X/Y labels as DeviceType::Pen, and the XI_Motion/XI_ButtonPress/scroll handlers drop events from every non-mouse source device. Emulated pointing devices in virtual machines (the QEMU/VMware/VirtualBox USB tablets, and any desktop accessed through SPICE or similar VDI viewers) expose absolute X/Y axes without pressure or tilt, so all their motion and button input silently disappears: a winit 0.31 application inside a VM console has a dead mouse. winit 0.30, which had no device classification, handles these devices fine.

Classify a device as pen or eraser only when it has pressure or tilt axes, which identify actual stylus hardware; bare absolute X/Y is how every emulated tablet reports and behaves like a mouse.

Device::new marks any pointer whose valuator class carries Abs X/Y
labels as DeviceType::Pen, and the XI_Motion/XI_ButtonPress/scroll
handlers drop events from every non-mouse source device. Emulated
pointing devices in virtual machines (the QEMU/VMware/VirtualBox USB
tablets, and any desktop accessed through SPICE or similar VDI
viewers) expose absolute X/Y axes without pressure or tilt, so all
their motion and button input silently disappears: a winit 0.31
application inside a VM console has a dead mouse. winit 0.30, which
had no device classification, handles these devices fine.

Classify a device as pen or eraser only when it has pressure or tilt
axes, which identify actual stylus hardware; bare absolute X/Y is how
every emulated tablet reports and behaves like a mouse.

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant