Настройте прокрутку с помощью Logitech Trackball на VMWare

Предпосылки

На хосте Windows 10 работает VMWare Workstation Pro 15.1.0. Гостевая ОС работает под управлением X11. Аппаратным указателем является Logitech Marble Mouse , имеющая информацию о конфигурации на сайте сообщества Ubuntu. В Windows прокрутка с помощью маленькой правой кнопки работает с TrackballScroll . На следующем рисунке показано, как xorg ссылается на кнопки Logitech:

Logitech Marble Mouse Trackball

Файл 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 , чтобы вернуть управление обратно операционной системе хоста.

Disconnect from Host

Изменение драйвера

Изменение драйвера с libinput на evdev не работает, например:

  Driver        "evdev"

xinput

Несмотря на то, что VMWare перечисляет две записи для USB-мыши, id=8, похоже, не имеет никакого эффекта; тогда как id=7 можно отключить, используя:

xinput set-prop 7 124 0

Где 7 - идентификатор мыши, 124 - настройка Device Enabled, а 0 указывает false. Это полностью отключает указатель; изменение 0 на 1 повторно включает указатель.

Альтернативные решения

Настройка трекбола из командной строки является приемлемым решением, хотя изменение 50-trackball.conf является предпочтительным.

2
задан 19 August 2019 в 18:15

1 ответ

Во-первых, когда записи дублированы в xinput пользователи кажутся незаинтересованными удалением дубликатов. Они кажутся более интересующимися применением изменений конфигурации и к сначала и копируют записи в xinput со сценарием как это. Хотя Вы только изменяете идентификатор 7 устройства, могло быть выгодно внести те же изменения в идентификатор 8 устройства.

Плохое сообщение об ошибке атома, кажется, связано с SSH:

Я нашел переходящие ссылки VMware к исследованию. Ни один не предоставил категорический ответ, но вопросы, и ответы могли бы дать представления:

0
ответ дан 2 December 2019 в 06:05

Другие вопросы по тегам:

Похожие вопросы: