Describe
When passing an Apple Magic Trackpad through to a Linux guest using UTM USB sharing, the guest receives the touchpad input correctly. Clicks, two-finger scrolling, and libinput pointer motion events all work inside the guest.
However, when UTM is not in "Capture input devices" mode, the visible cursor in the UTM window does not move when using the passed-through Magic Trackpad. The guest pointer position appears to change internally, because clicking at the invisible/current guest pointer location works and two-finger scrolling works, but the visible cursor remains controlled/synchronized only by the host-side SPICE/QEMU pointer path.
Enabling "Capture input devices" makes the passed-through Magic Trackpad move the visible cursor correctly.
Configuration
- UTM Version: 4.7.5 (118)
- macOS Version: macOS 26.5, build 25F71
- Mac Chip: Apple M5 Pro
- Guest OS: Arch Linux ARM
- Guest kernel: Linux 7.0.9-1-aarch64-ARCH
- Guest desktop: KDE Plasma Wayland
- Plasma Workspace: 6.6.5-2
- KWin: 6.6.5-3
- libinput: 1.31.2-1
- Device: Apple Magic Trackpad over USB passthrough
- Vendor ID: 05ac
- Product ID: 0265
Steps to reproduce
- Start an Arch Linux ARM KDE Wayland VM in UTM using the QEMU backend.
- Enable USB sharing.
- Attach an Apple Magic Trackpad from
Virtual Machine > USB Devices.
- Do not enable "Capture input devices".
- Move one finger on the passed-through Magic Trackpad.
- Try clicking or two-finger scrolling in the guest.
- Enable "Capture input devices" and repeat the same test.
Expected behavior
The visible cursor in the UTM window should follow the guest pointer when the passed-through USB touchpad generates pointer motion events, or UTM should otherwise keep the visible cursor synchronized with the guest pointer.
Actual behavior
Without "Capture input devices":
- The visible cursor does not move when using the passed-through Magic Trackpad.
- Clicks still work at the guest pointer location.
- Two-finger scrolling works.
- Host trackpad / normal mouse input moves the visible cursor through the SPICE/QEMU pointer path.
With "Capture input devices" enabled:
- The passed-through Magic Trackpad moves the visible cursor correctly.
- Clicks and scrolling continue to work.
Diagnostics
The guest sees the Magic Trackpad as a real touchpad:
/dev/input/event5 Apple Inc. Magic Trackpad
ID_INPUT_TOUCHPAD=1
ID_INPUT_TOUCHPAD_INTEGRATION=external
/dev/input/event6 Apple Inc. Magic Trackpad
ID_INPUT_TOUCHPAD=1
ID_INPUT_TOUCHPAD_INTEGRATION=external
KWin also sees it as an enabled touchpad/pointer device:
name: Apple Inc. Magic Trackpad
enabled: true
isVirtual: false
pointer: true
touchpad: true
gestureSupport: true
scrollTwoFinger: true
libinput debug-events shows that input events are delivered correctly:
event6 POINTER_MOTION
event6 POINTER_SCROLL_FINGER
event6 GESTURE_SWIPE_BEGIN
event6 GESTURE_SWIPE_UPDATE
The VM also has a virtual SPICE pointer device:
event4 spice vdagent tablet
isVirtual: true
pointer: true
This makes it look like the host/SPICE-visible cursor is not synchronized with pointer motion coming from the USB-passthrough touchpad unless input capture is enabled.
Related issues
This may be related to cursor synchronization / host cursor overlay issues such as:
Describe
When passing an Apple Magic Trackpad through to a Linux guest using UTM USB sharing, the guest receives the touchpad input correctly. Clicks, two-finger scrolling, and libinput pointer motion events all work inside the guest.
However, when UTM is not in "Capture input devices" mode, the visible cursor in the UTM window does not move when using the passed-through Magic Trackpad. The guest pointer position appears to change internally, because clicking at the invisible/current guest pointer location works and two-finger scrolling works, but the visible cursor remains controlled/synchronized only by the host-side SPICE/QEMU pointer path.
Enabling "Capture input devices" makes the passed-through Magic Trackpad move the visible cursor correctly.
Configuration
Steps to reproduce
Virtual Machine > USB Devices.Expected behavior
The visible cursor in the UTM window should follow the guest pointer when the passed-through USB touchpad generates pointer motion events, or UTM should otherwise keep the visible cursor synchronized with the guest pointer.
Actual behavior
Without "Capture input devices":
With "Capture input devices" enabled:
Diagnostics
The guest sees the Magic Trackpad as a real touchpad:
KWin also sees it as an enabled touchpad/pointer device:
libinput debug-eventsshows that input events are delivered correctly:The VM also has a virtual SPICE pointer device:
This makes it look like the host/SPICE-visible cursor is not synchronized with pointer motion coming from the USB-passthrough touchpad unless input capture is enabled.
Related issues
This may be related to cursor synchronization / host cursor overlay issues such as: