Co muszę skonfigurować, jeśli urządzenie wejściowe jest podłączone za pomocą przełącznika KVM?

8

Mam przełącznik KVM od mojego pracodawcy (Aten CS782DP), który działa dobrze, o ile wiem. Wydaje się jednak, że powoduje problem z moim urządzeniem wejściowym (Thinkpad USB Compact Keyboard z TrackPoint) zarówno w Ubuntu 16.04, jak i 16.10. Nie mogę już klikać środkowym przyciskiem i nie mogę też przewijać w pionie (poziomo działa dobrze).

W szczególności tak xinputwygląda wyjście, gdy klawiatura jest podłączona bezpośrednio:

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

Oto jak xinputwygląda wyjście po podłączeniu przez 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)]

O ile widzę, to również wygląda dobrze, z wyjątkiem dziwnego powielania urządzenia wskaźnikowego (identyfikatory 9 i 16). Zakładam, że ma to związek z tym, że KVM jest trochę jak hub USB i na razie zignoruję to powielanie.

Próbowałem uruchomić xinput testoba urządzenia i odkryłem, że pierwsze urządzenie akceptuje ruch oraz kliknięcia lewym i prawym przyciskiem myszy (przyciski myszy 1 i 3), podczas gdy drugie urządzenie tylko przewija w poziomie (przyciski 6 i 7). Ani akceptuje środkowy przycisk (przycisk 2) ani przewijanie w pionie (przyciski 4 i 5).

Wyjście xinput list-propswygląda identycznie dla obu urządzeń:

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

Domyślna konfiguracja TrackPoint w Ubuntu ( /usr/share/X11/xorg.conf.d/11-evdev-trackpoint.conf) wygląda następująco:

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

Zgodnie z tą zasadą oba urządzenia powinny uzyskać identyczną konfigurację, czyli akceptację ruchu, wszystkich trzech przycisków, a także obu rodzajów przewijania. Jednak tak nie jest, jak pokazano powyżej. Bezpośrednio podłączona klawiatura działa bezbłędnie.

Czego mi brakuje, co muszę zrobić, aby klawiatura zewnętrzna działała poprawnie za pomocą tego przełącznika KVM?

Nikołaj Prokoschenko
źródło
Mam przełącznik KVM Aten, ale inny model. Nie miałem z tym żadnych problemów. Może to być problem ze sprzętem lub oprogramowaniem układowym, który jest trudny do rozwiązania. Może możesz wypróbować inną klawiaturę (inną markę i model).
sudodus

Odpowiedzi:

0

Wierzcie lub nie, rozwiązałem ten. Rozwiązanie nie jest specyficzne dla klawiatury Aten KVM ani Thinkpad Compact i może pomóc w ogólnym stwierdzeniu: „moja klawiatura nie działa poprawnie z przełącznikiem KVM”.

Pomysł jest następujący: sterownik jądra próbuje zainicjować określone urządzenie (np. Klawiaturę). Jednak przełącznik KVM zwykle zapewnia wygodne skróty do przełączania i innych funkcji. W przypadku Aten istnieje skrót do dwukrotnego kliknięcia kółka przewijania. Sam przełącznik musi filtrować komanda USB, aby działało, co oczywiście przeszkadza w zdolności jądra do ustawiania pewnych bitów konfiguracji na urządzeniu. W moim przypadku nie udało się skonfigurować funkcji przewijania.

Rozwiązanie jest proste: wyłącz tryb konfliktu. W przypadku Aten nazywa się to „trybem emulacji myszy”. Po wyłączeniu wszystko zaczęło działać poprawnie.

Nikołaj Prokoschenko
źródło