O que preciso configurar se um dispositivo de entrada estiver conectado através de um comutador KVM?

8

Eu tenho um switch KVM do meu empregador (Aten CS782DP), que funciona bem até onde eu sei. No entanto, parece estar causando um problema no meu dispositivo de entrada (Thinkpad USB Compact Keyboard com TrackPoint) no Ubuntu 16.04 e 16.10. Não consigo mais clicar no meio e nem posso rolar verticalmente (funciona horizontalmente bem).

Em particular, é assim que a xinputsaída fica quando o teclado é conectado diretamente:

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

É assim que a xinputsaída se parece quando anexada ao 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)]

Tanto quanto posso ver, isso também parece bom, exceto pela duplicação estranha do dispositivo apontador (IDs 9 e 16). Eu vou assumir que isso tem a ver com o KVM ser um pouco como o hub USB e ignorar essa duplicação por enquanto.

Tentei executar os xinput testdois dispositivos e descobri que o primeiro dispositivo aceita movimento e cliques esquerdo e direito (botões 1 e 3 do mouse), enquanto o segundo dispositivo apenas faz rolagem horizontal (botões 6 e 7). Nem aceita o botão do meio (botão 2) nem a rolagem vertical (botões 4 e 5).

A saída de xinput list-propsparece idêntica para os dois 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

A configuração padrão do TrackPoint no Ubuntu ( /usr/share/X11/xorg.conf.d/11-evdev-trackpoint.conf) é assim:

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

Portanto, de acordo com essa regra, os dois dispositivos devem ter a mesma configuração, que é aceitar movimento, todos os três botões e também os dois tipos de rolagem. No entanto, este não é o caso, como ilustrado acima. Um teclado conectado diretamente funciona perfeitamente.

Então, o que estou perdendo, o que preciso fazer para que meu teclado externo funcione corretamente por esse comutador KVM?

Nikolai Prokoschenko
fonte
Eu tenho um switch Aten KVM, mas um modelo diferente. Eu não tive nenhum problema com isso. Pode ser um problema com o hardware ou com algum firmware, difícil de resolver. Talvez você possa tentar outro teclado (outro nome de marca e modelo).
21416 sudodus

Respostas:

0

Acredite ou não, eu resolvi este. A solução não é específica para o teclado Aten KVM ou Thinkpad Compact e pode ajudar no genérico "meu teclado não funciona corretamente com um comutador KVM".

Então a idéia é a seguinte: o driver do kernel está tentando inicializar o dispositivo específico (por exemplo, um teclado). No entanto, um comutador KVM geralmente fornece atalhos convenientes para comutação e outros recursos. No caso de Aton, existe um atalho para clicar duas vezes na roda de rolagem. O switch em si precisa filtrar os comandos USB para fazer funcionar, o que obviamente interfere na capacidade do kernel de definir certos bits de configuração no dispositivo. No meu caso, ele falhou ao configurar a funcionalidade de rolagem.

A solução é simples: desative o modo conflitante. Para o Aten, é chamado "modo de emulação do mouse". Tendo desativado isso, tudo começou a funcionar corretamente.

Nikolai Prokoschenko
fonte