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

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

当我跑步时微型核心Linux在 Qemu 虚拟机中,来宾鼠标指针与主机鼠标指针严重错位。在下面的屏幕截图中,访客鼠标指针就是图像中的指针。红点标记主机鼠标指针的位置。

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

qemu-img create disk.img 500M -f qcow2

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

qemu-system-x86_64 -m 1024 -boot d -enable-kvm -smp 3 -net nic -net user -hda disk.img -cdrom TinyCore-current.iso

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

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

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

主机鼠标指针与来宾鼠标指针未对齐

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

答案1

这是因为通用鼠标硬件仅发送移动事件,即。相对定位装置。因此,当 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

答案2

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

相关内容