主机鼠标指针与 Qemu VNC 中的来宾鼠标指针不对齐

Mic*_*l A 5 virtual-machine vnc mouse qemu

当我在 Qemu 虚拟机中运行Tiny Core Linux时,访客鼠标指针与主机鼠标指针严重错位。在下面的屏幕截图中,访客鼠标指针是图像中的指针。红点标记主机鼠标指针的位置。

我使用以下命令创建 Qemu 磁盘映像:

qemu-img create disk.img 500M -f qcow2
Run Code Online (Sandbox Code Playgroud)

并使用以下命令启动虚拟机:

qemu-system-x86_64 -m 1024 -boot d -enable-kvm -smp 3 -net nic -net user -hda disk.img -cdrom TinyCore-current.iso
Run Code Online (Sandbox Code Playgroud)

这将启动在 上运行的 VNC 会话::1:5900,我通过将其指定localhost:5900为服务器来使用 Remmina 访问该会话。

我使用的是 Remmina 1.3.3、Qemu 1.3.1 和 Debian 10(“Buster”)。如何正确对齐这些鼠标指针?客机未对齐时很难使用。

编辑:这个问题也出现在 TigerVNC Viewer 64 位 v1.9.0 中,所以看起来它不是 Remmina 问题,而是 Qemu 问题。

主机鼠标指针与访客鼠标指针未对齐

编辑:澄清一下,在我的 qemu 版本中,我收到了 error qemu-system-x86_64: -usbdevice tablet: '-usbdevice' is deprecated, please use '-device usb-...' instead,但是当我使用该-device usb-tablet选项时,我收到了 error qemu-system-x86_64: -device usb-tablet: No 'usb-bus' bus found for device 'usb-tablet'。我在这个网站和其他地方看到过这个建议,但它似乎不是我的问题的合适的、兼容的解决方案。

ban*_*die 8

这是因为通用鼠标硬件仅发送移动事件,即。相对定位装置。因此,当 qemu 获取其 vnc 接口上的绝对鼠标位置时,它无法通过模拟鼠标执行相同操作,它仅发送相对移动,因为这是通用硬件鼠标所做的事情。

但是您可以通过选项模拟绝对定位设备-usbdevice tablet。如果幸运的话,来宾操作系统也支持它。

'-usbdevice' 大约自 2018 年起已被弃用。请改用“-device usb-tablet”。基于 文章的示例。使用 QEMU 模拟器版本 8.0.50 (v8.0.0-918-g6972ef1440) 进行测试。

qemu/build/qemu-system-aarch64 \
-m 1024 \
-M raspi3b \
-kernel $TMP/boot/kernel8.img \
-dtb "$TMP/boot/bcm2710-rpi-3-b-plus.dtb" \
-drive file="$IMAGE_FILE",if=sd,format=raw \
-append "console=ttyAMA0 root=/dev/mmcblk0p2 rw rootwait rootfstype=ext4" \
-device usb-net,netdev=net0 \
-netdev user,id=net0,hostfwd=tcp::5555-:22 \
-device usb-mouse -device usb-tablet -device usb-kbd
Run Code Online (Sandbox Code Playgroud)

  • 你能添加更多细节吗?在我的 qemu 版本中(在问题中),我收到错误`qemu-system-x86_64: -usbdevice Tablet: '-usbdevice' is deprecated, please use '-device usb-...' 相反`,但是当我使用“-device usb-tablet”选项我收到错误“qemu-system-x86_64:-device usb-tablet:找不到设备“usb-tablet”的“usb-bus”总线。 (2认同)

小智 5

Michael A,您必须先添加一个 USB 设备。

  • -device nec-usb-xhci,id=usb,bus=pci.0,addr=0x4对于 USB 3.0 或
  • -device usb-ehci,id=usb,bus=pci.0,addr=0x4对于 USB 2。

然后就可以通过了-device usb-tablet