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 xinput
saí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 xinput
saí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 test
dois 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-props
parece 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?
fonte
Respostas:
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.
fonte