J'ai un commutateur KVM de mon employeur (Aten CS782DP) qui fonctionne très bien, pour autant que je sache. Cependant, cela semble poser un problème avec mon périphérique d'entrée (clavier compact USB Thinkpad avec TrackPoint) sous Ubuntu 16.04 et 16.10. Je ne suis plus en mesure de cliquer avec le bouton du milieu et je ne peux pas non plus faire défiler verticalement (horizontalement, cela fonctionne bien).
En particulier, voici à quoi ressemble la sortie de xinput
lorsque le clavier est directement connecté:
⎡ 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)]
Voici à quoi ressemble la sortie xinput
lorsqu’elle est connectée au 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)]
Autant que je sache, cela semble également correct, à l'exception de la duplication étrange du dispositif de pointeur (ID 9 et 16). Je vais supposer que cela a à voir avec le KVM étant un peu comme un concentrateur USB et d'ignorer cette duplication pour l'instant.
J'ai essayé de lancer xinput test
pour les deux appareils et j'ai découvert que le premier appareil acceptait les mouvements et les clics gauche et droit (boutons de la souris 1 et 3), tandis que le deuxième appareil ne faisait que du défilement horizontal (boutons 6 et 7). Le bouton du milieu (bouton 2) et le défilement vertical (boutons 4 et 5) ne sont pas acceptés.
La sortie de xinput list-props
semble identique pour les deux appareils:
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
La configuration TrackPoint par défaut sous Ubuntu (/usr/share/X11/xorg.conf.d/11-evdev-trackpoint.conf
) se présente comme suit:
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
Donc, selon cette règle, les deux appareils devraient avoir la même configuration, à savoir accepter les mouvements, les trois boutons et les deux types de défilement. Cependant, ce n'est pas le cas, comme illustré ci-dessus. Un clavier directement connecté fonctionne parfaitement.
Alors qu'est-ce qui me manque, que dois-je faire pour que mon clavier externe fonctionne correctement avec ce commutateur KVM?
Croyez-le ou non, j'ai résolu celui-ci. La solution n'est pas spécifique au clavier Aten KVM ni au clavier Thinkpad Compact et peut aider à résoudre le problème générique "mon clavier ne fonctionne pas correctement avec un commutateur KVM".
L’idée est donc la suivante: le pilote du noyau essaie d’initialiser le périphérique spécifique (par exemple, un clavier). Cependant, un commutateur KVM fournit généralement des raccourcis pratiques pour le basculement et d'autres fonctionnalités. Dans le cas d'Aten, il existe un raccourci pour double-cliquer sur la molette. Le commutateur lui-même doit filtrer les commandos USB pour que cela fonctionne, ce qui compromet évidemment la capacité du noyau à définir certains bits de configuration sur le périphérique. Dans mon cas, la fonctionnalité de défilement n'a pas été configurée.
La solution est simple: désactivez le mode conflictuel. Pour l'Aten, cela s'appelle le "mode d'émulation de souris". Ayant désactivé cela, tout a commencé à fonctionner correctement.