¿Qué necesito configurar si un dispositivo de entrada está conectado a través de un conmutador KVM?

8

Tengo un conmutador KVM de mi empleador (Aten CS782DP) que funciona bien hasta donde puedo decir. Sin embargo, parece estar causando un problema con mi dispositivo de entrada (Thinkpad USB Compact Keyboard con TrackPoint) en Ubuntu 16.04 y 16.10. Ya no puedo hacer clic con el botón central y tampoco puedo desplazarme verticalmente (horizontalmente funciona bien).

En particular, así es como xinputse ve la salida cuando el teclado está conectado directamente:

⎡ 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)]

Así es como xinputse ve la salida cuando se conecta a través del 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)]

Por lo que puedo ver, esto también se ve bien, excepto por la extraña duplicación del dispositivo puntero (ID 9 y 16). Asumiré que esto tiene que ver con que el KVM sea un poco como un concentrador USB e ignoraré esta duplicación por ahora.

Intenté ejecutar xinput testpara ambos dispositivos y descubrí que el primer dispositivo acepta movimientos y clics izquierdo y derecho (botones del mouse 1 y 3), mientras que el segundo dispositivo solo desplaza horizontalmente (botones 6 y 7). Ninguno acepta el botón central (botón 2) ni el desplazamiento vertical (botones 4 y 5).

La salida de se xinput list-propsve idéntica para ambos dispositivos:

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 configuración predeterminada de TrackPoint en Ubuntu ( /usr/share/X11/xorg.conf.d/11-evdev-trackpoint.conf) se ve así:

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

Entonces, de acuerdo con esta regla, ambos dispositivos deben tener la configuración idéntica, que es aceptar el movimiento, los tres botones y también ambos tipos de desplazamiento. Sin embargo, este no es el caso, como se ilustra arriba. Un teclado conectado directamente funciona a la perfección.

Entonces, ¿qué me estoy perdiendo, qué debo hacer para que mi teclado externo funcione correctamente a través de este conmutador KVM?

Nikolai Prokoschenko
fuente
Tengo un conmutador Aten KVM, pero un modelo diferente. No he tenido ningún problema con eso. Puede ser un problema con el hardware o algún firmware, que es difícil de resolver. Tal vez pueda probar con otro teclado (otra marca y modelo).
sudodus

Respuestas:

0

Lo creas o no, he resuelto este. La solución no es específica ni para el teclado Aten KVM ni para el teclado Thinkpad Compact y podría ayudar en el genérico "mi teclado no funciona con un interruptor KVM correctamente".

Entonces, la idea es esta: el controlador del núcleo está intentando inicializar el dispositivo específico (por ejemplo, un teclado). Sin embargo, un conmutador KVM generalmente proporciona accesos directos convenientes para el cambio y otras funciones. En el caso de Aten, hay un atajo para hacer doble clic en la rueda de desplazamiento. El conmutador en sí mismo necesita filtrar comandos USB para que esto funcione, lo que obviamente interfiere con la capacidad del núcleo para establecer ciertos bits de configuración en el dispositivo. En mi caso, no se pudo configurar la funcionalidad de desplazamiento.

La solución es simple: deshabilite el modo conflictivo. Para Aten, se llama "modo de emulación del mouse". Habiendo deshabilitado eso, todo comenzó a funcionar correctamente.

Nikolai Prokoschenko
fuente