web-dev-qa-db-fra.com

Que dois-je configurer si un périphérique d'entrée est connecté via un commutateur KVM?

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?

8

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.

0