Déterminer le fabricant et le modèle du périphérique xinput?

15

J'essaie de trouver le fabricant de l'appareil et le modèle de mon clavier et de mon pavé tactile afin de pouvoir écrire un fichier de configuration XOrg en le ciblant via:

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

Comment puis-je découvrir le nom du produit et du fournisseur d'un appareil à l'aide d'un outil CLI? J'aimerais clouer mon pavé tactile et mon clavier Bluetooth afin de pouvoir personnaliser la configuration Xorg.

Naftuli Kay
la source

Réponses:

6

Pour les périphériques USB sous Linux, vous pouvez utiliser:

lsusb -v | grep -e idProduct -e idVendor

Pour les ID uniquement:

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

lsusbutilise /var/lib/usbutils/usb.idspour traduire les identifiants en noms , je ne sais pas si Xorg utiliserait la même source.

Stéphane Chazelas
la source
Génial, je peux maintenant voir mes périphériques USB, mais j'ai en fait besoin de trouver des informations Bluetooth. Ces informations sont exactement ce que je recherche, j'en ai juste besoin pour mes appareils Bluetooth. Je peux trouver les identifiants hexadécimaux des fournisseurs sur les appareils Bluetooth, mais je n'arrive pas à trouver les noms réels des fournisseurs ou des produits.
Naftuli Kay
-1 car cela ne fonctionne pas pour les appareils non USB. Et cela ne fonctionne même pas pour tous les périphériques USB, car lsusbsouvent n'affiche pas de nom de produit. La réponse de ManuelSchneid3r fonctionne le mieux pour moi, qui est: xinput list.
erik
17

Nom du produit de l'appareil (modèle)

Obtenez le nom du produit (ou modèle ) du périphérique xinput à l' aide de xinput list. La sortie d'exemple pourrait ressembler à ceci:

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

Dans la sortie ci-dessus, le nom du modèle ou du produit de l'appareil à écran tactile est "ELAN Touchscreen".

Chemin du périphérique (nœud)

Pour obtenir le nom du fournisseur (ou fabricant ) du périphérique xinput , nous devons connaître le chemin du périphérique (également appelé nœud du périphérique) à interroger, puis demanderudevadm info . Vous pouvez obtenir le chemin en répertoriant les propriétés xinput d'un périphérique et en recherchant la valeur 'Device Node'.

Dans notre exemple précédent, la valeur du nœud de périphérique pour l'écran tactile, qui dit que c'est le cas id=10, peut être trouvée comme suit:

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

Nom du fournisseur de l'appareil (fabricant)

Maintenant, nous pouvons obtenir le nom du fournisseur (ou fabricant ) du périphérique xinput en examinant la valeur de la VENDORpropriété retournée par udevadm infole périphérique avec notre nom de chemin ci-dessus:

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

Dans la sortie ci-dessus, le nom du fabricant ou du fournisseur de l'écran tactile serait "ELAN".

Configuration de XOrg

En rassemblant tout cela, nous pouvons créer une nouvelle section de configuration XOrgInputClass pour correspondre à des fournisseurs, des produits ou des chemins de périphériques spécifiques. En utilisant nos exemples précédents, cette section correspond à tout produit à écran tactile fabriqué par le fournisseur ELAN:

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

Merci à @ Stéphane , @Daniel et @ ManuelSchneid3r

Christophe
la source
1
xinput listaffiche le nom du fournisseur et du produit sur une seule ligne, séparés uniquement par un caractère d'espace. Dans mon cas, c'était TrulyErgonomic.com Truly Ergonomic Computer Keyboard au lieu de Truly Ergonomic Computer Keyboard . Mais MatchProductsemble fonctionner avec les deux chaînes: le nom du fournisseur et du produit (tel que répertorié par xinput list) ou uniquement le nom du produit (tel que répertorié par udevadm).
erik
1

MatchProduct "Product Name"ne fonctionne pas avec la sortie de la suggestion de Stéphane lsusb -v | grep -e idProduct -e idVendor. Je viens de le tester.

xinput list génère la chaîne correcte qui fonctionne avec MatchProduct

ManuelSchneid3r
la source
Est-ce xinput listque le fournisseur et le produit sont listés ensemble? Savez-vous comment déterminer lequel est lequel?
Sparhawk
2
@Sparhawk xinput listaffiche le nom du produit mais pas le nom du fournisseur. udevadm infoaffiche le nom du fournisseur, mais pas le nom du produit.
Christopher
@Christopher Je ne me souviens pas vraiment pourquoi je voulais ces informations, mais merci d'avoir répondu, et j'espère que cela peut aider quelqu'un d'autre.
Sparhawk
@Christopher: Non, xinput listaffichez le nom du fournisseur et du produit sur une seule ligne, séparés par un espace. J'avais besoin d'utiliser la réponse de @ DanielK pour trouver uniquement le nom du produit. Mais udevadmmontre _ au lieu d'espaces. Plus facile à utiliser pourrait être le MatchUSBID trouvé avec lsusbou lsusb -v.
erik
Ok, je viens de le tester: il fonctionne à la fois avec la chaîne entière de xinput list, qui est le nom du fournisseur et du produit (au moins dans mon cas), et avec le nom du produit uniquement (que j'ai obtenu en udevadmremplaçant les caractères _ par des espaces.
erik
1

J'ai trouvé les commandes suivantes utiles pour trouver le modèle / fournisseur à utiliser avec la configuration xorg.conf.

Depuis https://bbs.archlinux.org/viewtopic.php?pid=753773 : (où / dev / sdx est remplacé par le chemin d'accès du périphérique cible, par exemple / dev / input / mouse1)

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

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

udevadm info --export-db | grep ID_MODEL
Daniel
la source
Mais cela répertorie les noms de produits avec _ au lieu d'espaces. Dans mon cas, c'était Truly_Ergonomic_Computer_Keyboard au lieu de Truly Ergonomic Computer Keyboard . xinput listl'affiche correctement, mais le nom du fournisseur et du produit ensemble sur une seule ligne.
erik