Skip to content

USB-passthrough Magic Trackpad moves guest pointer, but visible cursor does not update unless input capture is enabled #7730

@keta1

Description

@keta1

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

  1. Start an Arch Linux ARM KDE Wayland VM in UTM using the QEMU backend.
  2. Enable USB sharing.
  3. Attach an Apple Magic Trackpad from Virtual Machine > USB Devices.
  4. Do not enable "Capture input devices".
  5. Move one finger on the passed-through Magic Trackpad.
  6. Try clicking or two-finger scrolling in the guest.
  7. 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:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions