У меня есть переключатель KVM от моего работодателя (Aten CS782DP), который хорошо работает насколько я могу сказать. Однако это, кажется, вызывает проблему с моим устройством ввода данных (ThinkPad USB Компактная Клавиатура с TrackPoint) на обеих Ubuntu 16.04 и 16.10. Я не могу щелкнуть средней кнопкой больше и, и при этом я не могу прокрутить вертикально (горизонтально хорошо работает).
В частности, это то, как xinput
вывод смотрит, когда клавиатура присоединяется непосредственно:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ TPPS/2 IBM TrackPoint id=14 [slave pointer (2)]
⎜ ↳ Lenovo ThinkPad Compact USB Keyboard with TrackPoint id=10 [slave pointer (2)]
⎜ ↳ ATEN KVM V1.1.104 id=17 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=13 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Sleep Button id=8 [slave keyboard (3)]
↳ Integrated Camera id=11 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=12 [slave keyboard (3)]
↳ ThinkPad Extra Buttons id=15 [slave keyboard (3)]
↳ Lenovo ThinkPad Compact USB Keyboard with TrackPoint id=9 [slave keyboard (3)]
↳ ATEN KVM V1.1.104 id=16 [slave keyboard (3)]
Это то, как xinput
вывод похож при присоединении через KVM:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ TPPS/2 IBM TrackPoint id=14 [slave pointer (2)]
⎜ ↳ Lenovo ThinkPad Compact USB Keyboard with TrackPoint id=9 [slave pointer (2)]
⎜ ↳ Lenovo ThinkPad Compact USB Keyboard with TrackPoint id=16 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=13 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Sleep Button id=8 [slave keyboard (3)]
↳ Integrated Camera id=11 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=12 [slave keyboard (3)]
↳ ThinkPad Extra Buttons id=15 [slave keyboard (3)]
↳ Lenovo ThinkPad Compact USB Keyboard with TrackPoint id=10 [slave keyboard (3)]
Насколько я вижу, это также выглядит хорошо за исключением странного дублирования указывающего устройства (идентификаторы 9 и 16). Я собираюсь предположить, что это имеет отношение к KVM, бывший немного похожий на USB концентрирует и игнорирует это дублирование на данный момент.
Я попытался работать xinput test
для обоих устройств и узнанный, что первое устройство принимает перемещение и левые и правые щелчки (кнопка мыши 1 и 3), в то время как второе устройство только горизонтальная прокрутка (кнопка 6 и 7). Ни один не принимает среднюю кнопку (кнопка 2) или вертикальная прокрутка (кнопки 4 и 5).
Вывод xinput list-props
выглядит идентичным для обоих устройств:
Device 'Lenovo ThinkPad Compact USB Keyboard with TrackPoint':
Device Enabled (152): 1
Coordinate Transformation Matrix (154): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (284): 0
Device Accel Constant Deceleration (285): 1.000000
Device Accel Adaptive Deceleration (286): 1.000000
Device Accel Velocity Scaling (287): 10.000000
Device Product ID (272): 6127, 24647
Device Node (273): "/dev/input/event17"
Evdev Axis Inversion (288): 0, 0
Evdev Axes Swap (290): 0
Axis Labels (291): "Rel X" (162), "Rel Y" (163), "Rel Horiz Wheel" (282), "Rel Vert Wheel" (283)
Button Labels (292): "Button Left" (155), "Button Middle" (156), "Button Right" (157), "Button Wheel Up" (158), "Button Wheel Down" (159), "Button Horiz Wheel Left" (160), "Button Horiz Wheel Right" (161), "Button Side" (280), "Button Extra" (281), "Button Unknown" (275), "Button Unknown" (275), "Button Unknown" (275), "Button Unknown" (275)
Evdev Scrolling Distance (293): 1, 1, 1
Evdev Middle Button Emulation (294): 1
Evdev Middle Button Timeout (295): 50
Evdev Third Button Emulation (296): 0
Evdev Third Button Emulation Timeout (297): 1000
Evdev Third Button Emulation Button (298): 3
Evdev Third Button Emulation Threshold (299): 20
Evdev Wheel Emulation (300): 1
Evdev Wheel Emulation Axes (301): 6, 7, 4, 5
Evdev Wheel Emulation Inertia (302): 10
Evdev Wheel Emulation Timeout (303): 200
Evdev Wheel Emulation Button (304): 2
Evdev Drag Lock Buttons (305): 0
Конфигурация TrackPoint по умолчанию в Ubuntu (/usr/share/X11/xorg.conf.d/11-evdev-trackpoint.conf
) похож на это:
Section "InputClass"
Identifier "trackpoint catchall"
MatchIsPointer "true"
MatchProduct "TrackPoint|DualPoint Stick"
MatchDevicePath "/dev/input/event*"
Option "Emulate3Buttons" "true"
Option "EmulateWheel" "true"
Option "EmulateWheelButton" "2"
Option "XAxisMapping" "6 7"
Option "YAxisMapping" "4 5"
EndSection
Таким образом согласно этому правилу, оба устройства должны получить идентичную конфигурацию, которая должна принять перемещение, все три кнопки и также оба типа прокрутки. Однако дело обстоит не так, как проиллюстрировано выше. Непосредственно приложенная клавиатура работает безупречно.
Таким образом, что я пропускаю, что я должен сделать, чтобы заставить мою внешнюю клавиатуру работать правильно через этот переключатель KVM?
Верьте или нет, я решил это. Решение не является специфичным ни для клавиатуры Aten KVM, ни для клавиатуры Thinkpad Compact, и может помочь в общих чертах «моя клавиатура не работает с переключателем KVM должным образом».
Итак, идея такова: драйвер ядра пытается инициализировать конкретное устройство (например, клавиатуру). Тем не менее, KVM-переключатель обычно обеспечивает удобные сочетания клавиш для переключения и других функций. В случае Aten есть ярлык для двойного щелчка на колесе прокрутки. Коммутатор сам должен фильтровать USB-коммандос, чтобы это работало, что явно связано со способностью ядра устанавливать определенные биты конфигурации на устройстве. В моем случае не удалось настроить функцию прокрутки.
Soluton прост: отключить конфликтный режим. Для Aten это называется «режим эмуляции мыши». Отключив это, все стало работать нормально.