背景

背景

背景

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所有四个按钮189和 的运行详细事件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 会话中使用轨迹球进行垂直滚动?

有关的

相关链接包括:

额外细节

有关解决问题的尝试以及有效但不太理想的方法的一些额外信息。

断开与主机的连接

请注意,可以使用连接选项,然后允许根据需要滚动。缺点是,这使得在客户机和主机系统之间切换有点尴尬,因为在系统之间切换需要几个步骤。理想情况下,客户机操作系统将使用单击鼠标来获得焦点,滚动将“正常工作”,然后Ctrl+Alt将控制权交还给主机操作系统。

断开与主机的连接

更换司机

将驱动程序从 更改libinputevdev不起作用,例如:

  Driver        "evdev"

新输入

尽管 VMWare 列出了 USB 鼠标的两个条目,但id=8似乎没有任何效果;而id=7可以使用以下命令禁用:

xinput set-prop 7 124 0

其中7是鼠标 ID,124Device Enabled设置,0表示false。这将完全禁用指针;更改01可重新启用指针。

替代解决方案

从命令行配置轨迹球是一种可接受的解决方案,但50-trackball.conf最好进行更改。

答案1

首先,当条目重复时,xinput用户似乎对删除重复条目不感兴趣。他们似乎更感兴趣的是xinput使用像这样的脚本。尽管您只更改了设备 ID 7,但对设备 ID 8 进行相同的更改可能会有所帮助。

糟糕的原子错误消息似乎与 SSH 有关:

我找到了以下 VMWare 链接进行研究。没有一个提供明确的答案,但问题和答案可能提供线索:

相关内容