背景
Windows 10 主机正在运行 VMWare Workstation Pro 15.1.0。客户操作系统正在运行 X11。指针硬件是罗技大理石鼠标具有配置Ubuntu 社区网站上的信息。在 Windows 上,按住小右键滚动可与轨迹球滚动下图展示了 xorg 如何引用 Logitech 的按钮:
VMWare.vmx
文件具有以下配置设置,允许 3 个以上不同的按钮在客户机操作系统中触发鼠标事件:
usb.generic.allowHID = "TRUE"
mouse.vusb.enable = "TRUE"
mouse.vusb.useBasicMouse = "FALSE"
有了这些线条全部鼠标按钮事件被发送到客户操作系统。
xinput list
客户操作系统的输出是:
xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ VMware VMware Virtual USB Mouse id=7 [slave pointer (2)]
⎜ ↳ VMware VMware Virtual USB Mouse id=8 [slave pointer (2)]
⎜ ↳ VirtualPS/2 VMware VMMouse id=10 [slave pointer (2)]
⎜ ↳ VirtualPS/2 VMware VMMouse id=11 [slave pointer (2)]
xinput test-xi2 --root
所有四个按钮1
、8
、9
和 的运行详细事件3
(来自上图):
EVENT type 5 (ButtonRelease)
device: 8 (8)
detail: 1
EVENT type 5 (ButtonRelease)
device: 8 (8)
detail: 8
EVENT type 5 (ButtonRelease)
device: 8 (8)
detail: 9
EVENT type 5 (ButtonRelease)
device: 8 (8)
detail: 3
这表明按钮单击事件已使用设备 8 从主机成功传递到客户机。稍微令人担心的是,有两个鼠标分配了相同的名称,但具有不同的 ID:
⎜ ↳ VMware VMware Virtual USB Mouse id=7 [slave pointer (2)]
⎜ ↳ VMware VMware Virtual USB Mouse id=8 [slave pointer (2)]
问题
按住小右键(9
)并移动轨迹球进行滚动失败。运行xinput test-xi2 --root
显示失败:
EVENT type 4 (ButtonPress)
device: 8 (8)
detail: 9
EVENT type 1 (DeviceChanged)
device: 2 (7)
reason: SlaveSwitch
Reporting 7 classes:
Class originated from: 7. Type: XIButtonClass
Buttons supported: 11
X Error of failed request: BadAtom (invalid Atom parameter)
Major opcode of failed request: 17 (X_GetAtomName)
Atom id in failed request: 0x282
Serial number of failed request: 34
Current serial number in output stream: 34
Button labels: "Button Left" "Button Middle" "Button Right"
该文件.../xorg.conf.d/50-trackball.conf
对X11的配置如下:
Section "InputClass"
Identifier "Logitech Marble Mouse"
MatchIsPointer "true"
#MatchProduct "Mouse"
#MatchVendor "VMWare"
Driver "libinput"
Option "ScrollMethod" "button"
Option "ScrollButton" "9"
Option "MiddleEmulation" "true"
Option "HorizontalScrolling" "false"
Option "ButtonMapping" "1 2 3 4 5 6 7 9 8"
EndSection
输出xinput list-props 7
显示:
Device 'VMware VMware Virtual USB Mouse':
Device Enabled (124): 1
Coordinate Transformation Matrix (126): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Calibration Matrix (261): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Calibration Matrix Default (262): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Natural Scrolling Enabled (263): 0
libinput Natural Scrolling Enabled Default (264): 0
libinput Send Events Modes Available (244): 1, 0
libinput Send Events Mode Enabled (245): 0, 0
libinput Send Events Mode Enabled Default (246): 0, 0
libinput Left Handed Enabled (265): 0
libinput Left Handed Enabled Default (266): 0
libinput Scroll Methods Available (267): 0, 0, 1
libinput Scroll Method Enabled (268): 0, 0, 1
libinput Scroll Method Enabled Default (269): 0, 0, 1
libinput Button Scrolling Button (270): 9
libinput Button Scrolling Button Default (271): 2
libinput Middle Emulation Enabled (272): 0
libinput Middle Emulation Enabled Default (273): 0
Device Node (247): "/dev/input/event5"
Device Product ID (248): 3599, 3
libinput Drag Lock Buttons (274): <no items>
libinput Horizontal Scroll Enabled (275): 1
问题
需要改变什么X配置文件这样,按住右小按钮是否可以在 VMWare 中运行的 X11 会话中使用轨迹球进行垂直滚动?
有关的
相关链接包括:
- https://wiki.archlinux.org/index.php/Logitech_Marble_Mouse
- https://help.ubuntu.com/community/Logitech_Marblemouse_USB
- https://unix.stackexchange.com/questions/58117/determine-xinput-device-manufacturer-and-model
- https://www.x.org/releases/current/doc/man/man5/xorg.conf.5.xhtml
- https://www.mankier.com/4/libinput
- http://www.russet.org.uk/blog/3156
额外细节
有关解决问题的尝试以及有效但不太理想的方法的一些额外信息。
断开与主机的连接
请注意,可以使用连接选项,然后允许根据需要滚动。缺点是,这使得在客户机和主机系统之间切换有点尴尬,因为在系统之间切换需要几个步骤。理想情况下,客户机操作系统将使用单击鼠标来获得焦点,滚动将“正常工作”,然后Ctrl+Alt将控制权交还给主机操作系统。
更换司机
将驱动程序从 更改libinput
为evdev
不起作用,例如:
Driver "evdev"
新输入
尽管 VMWare 列出了 USB 鼠标的两个条目,但id=8
似乎没有任何效果;而id=7
可以使用以下命令禁用:
xinput set-prop 7 124 0
其中7
是鼠标 ID,124
是Device Enabled
设置,0
表示false
。这将完全禁用指针;更改0
为1
可重新启用指针。
替代解决方案
从命令行配置轨迹球是一种可接受的解决方案,但50-trackball.conf
最好进行更改。
答案1
首先,当条目重复时,xinput
用户似乎对删除重复条目不感兴趣。他们似乎更感兴趣的是xinput
使用像这样的脚本。尽管您只更改了设备 ID 7,但对设备 ID 8 进行相同的更改可能会有所帮助。
糟糕的原子错误消息似乎与 SSH 有关:
- 为什么远程程序会崩溃并出现请求失败的 X 错误:BadAtom?。VMware 确实有一个针对 X11Forwarding 的配置选项可以解决这个问题:已解决:无法通过 ssh 执行 vmrun
我找到了以下 VMWare 链接进行研究。没有一个提供明确的答案,但问题和答案可能提供线索:
- 工作站 14 - 访客端无 Logitech 鼠标滚轮- 解决方案是禁用 Logitech 平滑滚动
- 无法使用触控板在虚拟机中滚动- 没有解决,但可以阅读帮助文章受到推崇的
- 使用轨迹球鼠标进行水平滚动?- 无解答
- 鼠标点击部分有效!!!- 无解答
- 鼠标单击释放- 一位用户发现删除 Kensington 驱动程序并使用通用驱动程序可以解决问题。