Określić producenta i model urządzenia xinput?

15

Próbuję znaleźć producenta urządzenia i model mojej klawiatury i tabliczki dotykowej, aby móc napisać plik konfiguracyjny XOrg, celując w niego za pomocą:

Section "InputClass"
    Identifier "touchpad"
    MatchIsTouchpad "on"
    Driver "synaptics"
    MatchProduct "Product Name"
    MatchVendor "Vendor Name"
EndSection

Jak mogę znaleźć nazwę produktu i dostawcę urządzenia za pomocą narzędzia CLI? Chciałbym przybić mój touchpad i klawiaturę Bluetooth, aby móc dostosować konfigurację Xorg.

Naftuli Kay
źródło

Odpowiedzi:

6

W przypadku urządzeń USB w systemie Linux możesz użyć:

lsusb -v | grep -e idProduct -e idVendor

Tylko dla identyfikatorów:

grep . /sys/bus/usb/devices/*/id*

lsusbużywa /var/lib/usbutils/usb.idsdo tłumaczenia identyfikatorów na nazwy , nie wiem, czy Xorg użyłby tego samego źródła.

Stéphane Chazelas
źródło
Świetnie, widzę teraz moje urządzenia USB, ale tak naprawdę muszę znaleźć informacje o Bluetooth. Ta informacja jest dokładnie tym, czego szukam, po prostu potrzebuję jej dla moich urządzeń Bluetooth. Mogę znaleźć identyfikatory dostawców hex w urządzeniach Bluetooth, ale nie mogę znaleźć rzeczywistych nazw dostawców ani produktów.
Naftuli Kay,
-1, ponieważ to nie działa na urządzeniach innych niż usb. I nawet nie działa na wszystkich urządzeniach USB, ponieważ lsusbczęsto nie wyświetla nazwy produktu. Odpowiedź ManuelSchneid3r pracował dla mnie najlepsze, czyli: xinput list.
erik
17

Nazwa produktu urządzenia (model)

Uzyskaj nazwę produktu (lub model ) urządzenia xinput za pomocą xinput list. Przykładowe dane wyjściowe mogą wyglądać mniej więcej tak:

# xinput list
⎡ Virtual core pointer                      id=2  [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4  [slave  pointer  (2)]
⎜   ↳ ELAN Touchscreen                          id=10 [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=13 [slave  pointer  (2)]
⎜   ↳ Logitech Unifying Device. Wireless        id=16 [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)]
    ↳ AT Translated Set 2 keyboard              id=12 [slave  keyboard (3)]

W powyższym wyniku nazwa modelu lub produktu urządzenia z ekranem dotykowym to „ELAN Touchscreen”.

Ścieżka urządzenia (węzeł)

Aby uzyskać nazwę dostawcy (lub producenta ) urządzenia xinput , musimy znać ścieżkę urządzenia (zwaną również węzłem urządzenia ) do zapytania, a następnie zapytać udevadm info. Ścieżkę można uzyskać, wyświetlając właściwości xinput urządzenia i znajdując wartość „Device Node”.

W naszym poprzednim przykładzie wartość węzła urządzenia dla ekranu dotykowego, która mówi, że tak id=10, można znaleźć w następujący sposób:

# xinput list-props 10 | grep 'Device Node'
    Device Node (253):    "/dev/input/event9"

Nazwa dostawcy urządzenia (producent)

Teraz możemy uzyskać nazwę dostawcy (lub producenta ) urządzenia xinput, patrząc na wartość VENDORwłaściwości zwróconej przez udevadm infourządzenie z naszą nazwą ścieżki znalezioną powyżej:

# udevadm info --query=property --name=/dev/input/event9 | grep 'VENDOR='
ID_VENDOR=ELAN

Na powyższym wyjściu nazwa producenta lub dostawcy dla ekranu dotykowego to „ELAN”.

Konfiguracja XOrg

Wprowadzenie go wszyscy razem możemy stworzyć nową konfiguracji Xorg InputClassrozdział pasujące do konkretnego urządzenia dostawców, produktów lub ścieżki. Korzystając z naszych poprzednich przykładów, ta sekcja pasuje do dowolnego produktu z ekranem dotykowym wyprodukowanego przez dostawcę ELAN:

Section "InputClass"
    Identifier "elan touchscreen catchall"
    MatchDevicePath "/dev/input/event*"
    MatchProduct "Touchscreen"
    MatchVendor "ELAN"
EndSection

Dzięki @ Stéphane , @Daniel i @ ManuelSchneid3r

Krzysztof
źródło
1
xinput listwyświetla nazwę dostawcy i produktu w jednym wierszu, oddzielone tylko znakiem spacji. W moim przypadku była to TrulyErgonomic.com Naprawdę ergonomiczna klawiatura komputerowa zamiast prawdziwie ergonomicznej klawiatury komputerowej . MatchProductWygląda jednak na to, że działa z oboma łańcuchami: nazwa dostawcy i produktu (wymienione przez xinput list) lub tylko nazwa produktu (wymienione przez udevadm).
erik
1

MatchProduct "Product Name"nie działa z wynikiem sugestii Stephane'a lsusb -v | grep -e idProduct -e idVendor. Właśnie to przetestowałem.

xinput list wyświetla poprawny ciąg znaków, który działa MatchProduct

ManuelSchneid3r
źródło
Czy xinput listlista zarówno dostawcy, jak i produktu razem? Czy wiesz, jak się dowiedzieć, który jest który?
Sparhawk
2
@Sparhawk xinput listpokazuje nazwę produktu, ale nie nazwę dostawcy. udevadm infopokazuje nazwę dostawcy, ale nie nazwę produktu.
Christopher
@Christopher Nie pamiętam, dlaczego chciałem te informacje, ale dziękuję za odpowiedź i mam nadzieję, że może pomóc komuś innemu.
Sparhawk
@Christopher: Nie, xinput listwyświetl zarówno nazwę dostawcy, jak i nazwę produktu w jednym wierszu, oddzielając je spacją. Musiałem użyć odpowiedzi @ DanielK, aby znaleźć tylko nazwę produktu. Ale udevadmpokazuje _ zamiast spacji. Łatwiejszy w użyciu może być MatchUSBID znaleziony przy pomocy lsusblub lsusb -v.
erik
Ok, właśnie go przetestowałem: działa zarówno z całym ciągiem, od xinput listktórego jest nazwa dostawcy i produktu (przynajmniej w moim przypadku), jak i tylko z nazwą produktu (który otrzymałem po udevadmzastąpieniu znaków _ spacjami.
erik
1

Znalazłem następujące polecenia przydatne w znalezieniu modelu / dostawcy do użycia z konfiguracją xorg.conf.

From https://bbs.archlinux.org/viewtopic.php?pid=753773 : (gdzie / dev / sdx jest zastąpiony ścieżką urządzenia docelowego urządzenia, tj. / Dev / input / mouse1)

udevadm info --query=all --path=$(udevadm info --query=path --name=/dev/sdx)

Według http://fedoraproject.org/wiki/Input_device_configuration :

udevadm info --export-db | grep ID_MODEL
Daniel
źródło
Ale to wyświetla nazwy produktów z _ zamiast spacji. W moim przypadku była to Truly_Ergonomic_Computer_Keyboard zamiast Naprawdę ergonomiczna klawiatura komputerowa . xinput listpokazuje to poprawnie, ale nazwa dostawcy i produktu razem w jednym wierszu.
erik