Xinput Gerätehersteller und Modell bestimmen?

15

Ich versuche, den Gerätehersteller und das Modell meiner Tastatur und meines Touchpads zu finden, damit ich eine XOrg-Konfigurationsdatei schreiben kann, die darauf abzielt:

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

Wie kann ich den Produkt- und Anbieternamen eines Geräts mit einem CLI-Tool ermitteln? Ich möchte mein Bluetooth-Touchpad und die Tastatur festnageln, um die Xorg-Konfiguration anpassen zu können.

Naftuli Kay
quelle

Antworten:

6

Für USB-Geräte unter Linux können Sie Folgendes verwenden:

lsusb -v | grep -e idProduct -e idVendor

Nur für die IDs:

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

lsusbverwendet /var/lib/usbutils/usb.ids, um IDs in Namen zu übersetzen . Ich weiß nicht, ob Xorg dieselbe Quelle verwenden würde.

Stéphane Chazelas
quelle
Genial, ich kann jetzt meine USB-Geräte sehen, aber ich muss tatsächlich Bluetooth-Informationen finden. Diese Informationen sind genau das, wonach ich suche. Sie werden nur für meine Bluetooth-Geräte benötigt. Ich kann die hexadezimalen Hersteller-IDs auf Bluetooth-Geräten finden, aber anscheinend kann ich keine tatsächlichen Hersteller- oder Produktnamen finden.
Naftuli Kay
-1, da dies nicht für Nicht-USB-Geräte funktioniert. Und es funktioniert sogar nicht bei allen USB-Geräten, da lsusbhäufig kein Produktname angezeigt wird. ManuelSchneid3r Antwort war für mich am besten, das heißt: xinput list.
Erik
17

Geräteproduktname (Modell)

Verwenden Sie den Produktnamen (oder das Modell ) des xinput-Geräts xinput list. Die Beispielausgabe könnte ungefähr so ​​aussehen:

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

In der obigen Ausgabe lautet der Modell- oder Produktname für das Touchscreen-Gerät "ELAN Touchscreen".

Gerätepfad (Knoten)

Um den Anbieternamen (oder Hersteller ) des xinput-Geräts zu ermitteln, müssen Sie den Gerätepfad (auch Geräteknoten genannt) kennen, der abgefragt werden soll, und danach fragen udevadm info. Sie können den Pfad abrufen, indem Sie die xinput-Eigenschaften für ein Gerät auflisten und den Wert 'Geräteknoten' ermitteln.

In unserem vorherigen Beispiel lautet der Wert des Geräteknotens für den Touchscreen id=10wie folgt:

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

Name des Geräteherstellers (Hersteller)

Jetzt können wir den Herstellernamen (oder den Hersteller ) des xinput-Geräts ermitteln, indem wir den Wert für die VENDOREigenschaft überprüfen, die udevadm infofür das Gerät mit unserem oben angegebenen Pfadnamen zurückgegeben wurde:

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

In der obigen Ausgabe wäre der Hersteller- oder Lieferantenname für den Touchscreen "ELAN".

XOrg-Konfiguration

Dass sie alle zusammen, können wir einen neuen erstellen XOrg Konfiguration InputClassAbschnitt spezifische Geräte Anbieter, Produkte oder Pfade entsprechen. Anhand unserer vorherigen Beispiele stimmt dieser Abschnitt mit allen Touchscreen-Produkten des ELAN-Herstellers überein:

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

Vielen Dank an @ Stéphane , @Daniel und @ ManuelSchneid3r

Christopher
quelle
1
xinput listZeigt sowohl den Hersteller- als auch den Produktnamen in einer Zeile an, nur durch ein Leerzeichen getrennt. In meinem Fall war es TrulyErgonomic.com Wirklich ergonomische Computertastatur anstelle von Wirklich ergonomischer Computertastatur . Scheint MatchProductjedoch mit beiden Zeichenfolgen zu funktionieren: Hersteller- und Produktname (wie von aufgeführt xinput list) oder nur Produktname (wie von aufgeführt udevadm).
Erik
1

MatchProduct "Product Name"funktioniert nicht mit der Ausgabe von Stephanes Vorschlag lsusb -v | grep -e idProduct -e idVendor. Ich habe es gerade getestet.

xinput list gibt den richtigen String aus, mit dem gearbeitet wird MatchProduct

ManuelSchneid3r
quelle
Führt xinput listsowohl Hersteller als auch Produkt zusammen auf? Weißt du, wie man herausfindet, was was ist?
Sparhawk
2
@Sparhawk xinput listzeigt den Produktnamen aber nicht den Herstellernamen an. udevadm infoZeigt den Herstellernamen an, jedoch nicht den Produktnamen.
Christopher
@Christopher Ich kann mich eigentlich nicht erinnern, warum ich diese Informationen haben wollte, aber danke für die Antwort, und hoffentlich kann es jemand anderem helfen.
Sparhawk
@Christopher: Nein, xinput listAnbieter und Produktname werden in einer Zeile durch ein Leerzeichen getrennt angezeigt . Ich musste die Antwort von @ DanielK verwenden, um nur den Produktnamen zu finden. Aber udevadmzeigt _ statt Leerzeichen. Einfacher zu verwenden ist möglicherweise die MatchUSBID, die mit lsusboder gefunden wurde lsusb -v.
Erik
Ok, ich es getestet: Es funktioniert sowohl mit dem ganzen String aus xinput list, der Hersteller und Produktnamen (zumindest in meinem Fall) ist, und mit dem Produktnamen nur (was ich von bekam das udevadmErsetzen die _ Zeichen mit Leerzeichen.
erik
1

Ich habe festgestellt, dass die folgenden Befehle hilfreich sind, um das Modell / den Hersteller für die xorg.conf-Konfiguration zu finden.

Von https://bbs.archlinux.org/viewtopic.php?pid=753773 : (wobei / dev / sdx durch den Gerätepfad des Zielgeräts ersetzt wird, dh / dev / input / mouse1)

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

Laut http://fedoraproject.org/wiki/Input_device_configuration :

udevadm info --export-db | grep ID_MODEL
Daniel
quelle
Hier werden jedoch die Produktnamen mit _ anstelle von Leerzeichen aufgelistet . In meinem Fall war es Truly_Ergonomic_Computer_Keyboard anstelle von Truly Ergonomic Computer Keyboard . xinput listZeigt es korrekt an, aber Hersteller und Produktname zusammen in einer Zeile.
Erik