¿Determinar el fabricante y modelo del dispositivo xinput?

15

Estoy tratando de encontrar el fabricante del dispositivo y el modelo de mi teclado y panel táctil para poder escribir un archivo de configuración XOrg dirigido a través de:

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

¿Cómo puedo descubrir el producto y el nombre del proveedor de un dispositivo usando una herramienta CLI? Me gustaría fijar mi panel táctil y teclado Bluetooth para poder personalizar la configuración de Xorg.

Naftuli Kay
fuente

Respuestas:

6

Para dispositivos USB en Linux, puede usar:

lsusb -v | grep -e idProduct -e idVendor

Solo para las identificaciones:

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

lsusbutiliza /var/lib/usbutils/usb.idspara traducir identificadores a nombres , no sé si Xorg usaría la misma fuente.

Stéphane Chazelas
fuente
Impresionante, ahora puedo ver mis dispositivos USB, pero en realidad necesito encontrar información de Bluetooth. Esta información es exactamente lo que estoy buscando, solo la necesito para mis dispositivos Bluetooth. Puedo encontrar los identificadores de proveedores hexadecimales en dispositivos Bluetooth, pero parece que no puedo encontrar nombres reales de proveedores o productos.
Naftuli Kay
-1 porque esto no funciona para dispositivos no usb. E incluso no funciona para todos los dispositivos usb, porque a lsusbmenudo no muestra el nombre de un producto. La respuesta de ManuelSchneid3r funcionó mejor para mí, que es: xinput list.
erik
17

Nombre del producto del dispositivo (modelo)

Obtenga el nombre del producto del dispositivo xinput (o modelo ) utilizando xinput list. La salida de ejemplo podría verse así:

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

En el resultado anterior, el nombre del modelo o producto para el dispositivo con pantalla táctil es "Pantalla táctil ELAN".

Ruta del dispositivo (nodo)

Para obtener el nombre del proveedor del dispositivo xinput (o fabricante ), necesitamos conocer la ruta del dispositivo (también llamada Nodo del dispositivo) para consultar y luego preguntar udevadm info. Puede obtener la ruta enumerando las propiedades de xinput para un dispositivo y encontrando el valor 'Nodo de dispositivo'.

De nuestro ejemplo anterior, el valor del nodo del dispositivo para la pantalla táctil, que dice que sí id=10, se puede encontrar así:

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

Nombre del proveedor del dispositivo (fabricante)

Ahora podemos obtener el nombre del proveedor del dispositivo xinput (o fabricante ) mirando el valor de la VENDORpropiedad devuelta por udevadm infoel dispositivo con nuestro nombre de ruta que se encuentra arriba:

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

En el resultado anterior, el nombre del fabricante o proveedor de la pantalla táctil sería "ELAN".

Configuración XOrg

Poniendo todo junto, podemos crear una nueva configuración de XOrg InputClassSección para que coincida con dispositivos proveedores, productos o caminos específicos. Usando nuestros ejemplos anteriores, esta sección coincide con cualquier producto de pantalla táctil fabricado por el proveedor de ELAN:

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

Gracias a @ Stéphane , @Daniel y @ ManuelSchneid3r

Christopher
fuente
1
xinput listmuestra tanto el nombre del proveedor como el del producto en una línea, separados solo por un carácter de espacio. En mi caso fue TrulyErgonomic.com Truly Ergonomic Computer Keyboard en lugar de Truly Ergonomic Computer Keyboard . Pero MatchProductparece funcionar con ambas cadenas: proveedor y nombre del producto (según lo enumerado por xinput list) o solo el nombre del producto (según lo enumerado por udevadm).
erik
1

MatchProduct "Product Name"no funciona con el resultado de la sugerencia de Stephane lsusb -v | grep -e idProduct -e idVendor. Lo acabo de probar.

xinput list genera la cadena correcta que funciona con MatchProduct

ManuelSchneid3r
fuente
¿ xinput listEnumera tanto al vendedor como al producto juntos? ¿Sabes cómo resolver cuál es cuál?
Sparhawk
2
@Sparhawk xinput listmuestra el nombre del producto pero no el nombre del proveedor. udevadm infomuestra el nombre del proveedor pero no el nombre del producto.
Christopher
@ Christopher No puedo recordar por qué quería esta información, pero gracias por responder y espero que pueda ayudar a alguien más.
Sparhawk
@ Christopher: No, xinput listmuestre el nombre del proveedor y del producto en una línea, separados por un espacio. Necesitaba usar la respuesta de @ DanielK para encontrar solo el nombre del producto. Pero udevadmmuestra _ en lugar de espacios. Más fácil de usar podría ser el MatchUSBID encontrado con lsusbo lsusb -v.
erik
Ok, yo sólo probé: Funciona tanto con toda la cadena de la xinput listque es proveedor y el nombre del producto (al menos en mi caso), y con el nombre de producto (que obtuve de udevadmla sustitución de las _ caracteres con espacios.
Erik
1

He encontrado que los siguientes comandos son útiles para encontrar el modelo / proveedor para usar con la configuración xorg.conf.

Desde https://bbs.archlinux.org/viewtopic.php?pid=753773 : (donde / dev / sdx se reemplaza con la ruta del dispositivo del dispositivo de destino, es decir / dev / input / mouse1)

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

De acuerdo con http://fedoraproject.org/wiki/Input_device_configuration :

udevadm info --export-db | grep ID_MODEL
Daniel
fuente
Pero esto enumera los nombres de los productos con _ en lugar de espacios. En mi caso, fue Truly_Ergonomic_Computer_Keyboard en lugar de Truly Ergonomic Computer Keyboard . xinput listlo muestra correctamente, pero el proveedor y el nombre del producto juntos en una línea.
erik