Determinare il produttore e il modello del dispositivo xinput?


15

Sto cercando di trovare il produttore del dispositivo e il modello della mia tastiera e touchpad in modo da poter scrivere un file di configurazione XOrg indirizzandolo tramite:

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

Come posso scoprire il prodotto di un dispositivo e il nome del fornitore utilizzando uno strumento CLI? Vorrei inchiodare il mio touchpad e la tastiera Bluetooth in modo da poter personalizzare la configurazione di Xorg.

Risposte:


6

Per i dispositivi USB su Linux, è possibile utilizzare:

lsusb -v | grep -e idProduct -e idVendor

Solo per gli ID:

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

lsusbusa /var/lib/usbutils/usb.idsper tradurre gli id in nomi , non so se Xorg userebbe la stessa fonte.


Fantastico, ora posso vedere i miei dispositivi USB, ma in realtà ho bisogno di trovare informazioni Bluetooth. Questa informazione è esattamente quello che sto cercando, ho solo bisogno per i miei dispositivi Bluetooth. Posso trovare gli ID fornitore esadecimali sui dispositivi Bluetooth, ma non riesco a trovare i nomi dei fornitori o dei prodotti effettivi.
Naftuli Kay,

-1 perché non funziona con dispositivi non USB. E non funziona nemmeno con tutti i dispositivi USB, perché lsusbspesso non mostra il nome di un prodotto. La risposta di ManuelSchneid3r ha funzionato meglio per me, che è il seguente: xinput list.
erik,

17

Nome prodotto dispositivo (modello)

Ottieni il nome del prodotto (o modello ) del dispositivo xinput utilizzando xinput list. L'output di esempio potrebbe essere simile al seguente:

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

Nell'output sopra, il nome del modello o del prodotto per il dispositivo Touchscreen è "ELAN Touchscreen".

Percorso dispositivo (nodo)

Per ottenere il nome del fornitore (o il produttore ) del dispositivo xinput , è necessario conoscere il percorso del dispositivo (chiamato anche Nodo dispositivo) per eseguire una query, quindi chiedere udevadm info. È possibile ottenere il percorso elencando le proprietà xinput per un dispositivo e trovando il valore "Nodo dispositivo".

Dal nostro esempio precedente, il valore Nodo dispositivo per il touchscreen, che dice che ha id=10, potrebbe essere trovato in questo modo:

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

Nome fornitore dispositivo (produttore)

Ora possiamo ottenere il nome del fornitore del dispositivo xinput (o il produttore ) osservando il valore della VENDORproprietà restituita dal udevadm infodispositivo con il nostro nome di percorso trovato sopra:

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

Nell'output sopra, il nome del produttore o del fornitore per il touchscreen sarebbe "ELAN".

Configurazione di XOrg

Mettendo tutto insieme, possiamo creare una nuova sezione di configurazione XOrgInputClass per abbinare specifici fornitori di dispositivi, prodotti o percorsi. Utilizzando i nostri esempi precedenti, questa sezione corrisponde a qualsiasi prodotto touchscreen prodotto dal fornitore ELAN:

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

Grazie a @ Stéphane , @Daniel e @ ManuelSchneid3r


1
xinput listmostra il nome del fornitore e del prodotto in una riga, separati solo da un carattere spaziale. Nel mio caso è stata TrulyErgonomic.com Tastiera per computer veramente ergonomica invece di Tastiera per computer veramente ergonomica . Ma MatchProductsembra funzionare con entrambe le stringhe: nome del fornitore e del prodotto (come elencato da xinput list) o solo nome del prodotto (come elencato da udevadm).
erik,

1

MatchProduct "Product Name"non funziona con l'output del suggerimento di Stephane lsusb -v | grep -e idProduct -e idVendor. L'ho appena provato.

xinput list genera la stringa corretta con cui funziona MatchProduct


Fa xinput listl'elenco sia fornitore e insieme prodotto? Sai come capire quale è quale?
Sparhawk,

2
@Sparhawk xinput listmostra il nome del prodotto ma non il nome del fornitore. udevadm infomostra il nome del fornitore ma non il nome del prodotto.
Christopher,

@Christopher Non riesco proprio a ricordare perché volessi queste informazioni, ma grazie per la risposta, e spero che possa aiutare qualcun altro.
Sparhawk,

@Christopher: No, xinput listmostra il nome del fornitore e del prodotto in una riga, separati da uno spazio. Ho dovuto usare la risposta di @ DanielK per trovare solo il nome del prodotto. Ma udevadmmostra _ invece di spazi. Più facile da usare potrebbe essere il MatchUSBID trovato con lsusbo lsusb -v.
erik,

Ok, l'ho appena testato: funziona sia con l'intera stringa di xinput list, che è il nome del fornitore e del prodotto (almeno nel mio caso), sia con solo il nome del prodotto (che ho ottenuto udevadmsostituendo i caratteri _ con spazi.
erik

1

Ho trovato utili i seguenti comandi per trovare il modello / fornitore da utilizzare con la configurazione xorg.conf.

Da https://bbs.archlinux.org/viewtopic.php?pid=753773 : (dove / dev / sdx viene sostituito con il percorso del dispositivo di destinazione, ad esempio / dev / input / mouse1)

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

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

udevadm info --export-db | grep ID_MODEL

Ma questo elenca i nomi dei prodotti con _ invece di spazi. Nel mio caso è stata Truly_Ergonomic_Computer_Keyboard invece di Truly Ergonomic Computer Keyboard . xinput listlo mostra correttamente, ma il nome del fornitore e del prodotto insieme in una riga.
erik,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.