На хосте Windows 10 работает VMWare Workstation Pro 15.1.0. Гостевая ОС работает под управлением X11. Аппаратным указателем является Logitech Marble Mouse , имеющая информацию о конфигурации на сайте сообщества Ubuntu. В Windows прокрутка с помощью маленькой правой кнопки работает с TrackballScroll . На следующем рисунке показано, как 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. Небольшое беспокойство вызывает то, что двум мышам присвоено одно имя , но с разными идентификаторами:
⎜ ↳ 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 Configuration File , чтобы маленькая правая кнопка при удерживании позволяла вертикальную прокрутку с помощью трекбола в сеансе X11, который выполняется внутри VMWare?
Ссылки по теме:
Некоторая дополнительная информация о попытках решить проблему и о способах, которые работают, но они не идеальны.
Обратите внимание, что можно отключить мышь от операционной системы хоста, используя опцию Connect , которая затем разрешает прокрутку по желанию. Недостатком является то, что это делает переключение между гостевой и хост-системами немного неловким, поскольку для переключения между системами требуется несколько шагов. В идеале, гостевая ОС будет использовать один щелчок мыши для фокусировки, прокрутка будет «просто работать», а затем Ctrl + Alt kbd>, чтобы вернуть управление обратно операционной системе хоста.
Изменение драйвера с libinput
на evdev
не работает, например:
Driver "evdev"
Несмотря на то, что VMWare перечисляет две записи для USB-мыши, id=8
, похоже, не имеет никакого эффекта; тогда как id=7
можно отключить, используя:
xinput set-prop 7 124 0
Где 7
- идентификатор мыши, 124
- настройка Device Enabled
, а 0
указывает false
. Это полностью отключает указатель; изменение 0
на 1
повторно включает указатель.
Настройка трекбола из командной строки является приемлемым решением, хотя изменение 50-trackball.conf
является предпочтительным.
Во-первых, когда записи дублированы в xinput
пользователи кажутся незаинтересованными удалением дубликатов. Они кажутся более интересующимися применением изменений конфигурации и к сначала и копируют записи в xinput
со сценарием как это. Хотя Вы только изменяете идентификатор 7 устройства, могло быть выгодно внести те же изменения в идентификатор 8 устройства.
Плохое сообщение об ошибке атома, кажется, связано с SSH:
Я нашел переходящие ссылки VMware к исследованию. Ни один не предоставил категорический ответ, но вопросы, и ответы могли бы дать представления: