Determinar o fabricante e o modelo do dispositivo xinput?


15

Estou tentando encontrar o fabricante do dispositivo e o modelo do meu teclado e touch pad para que eu possa escrever um arquivo de configuração do XOrg direcionado para ele via:

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

Como posso descobrir o nome de produto e fornecedor de um dispositivo usando uma ferramenta CLI? Gostaria de ajustar meu touchpad e teclado Bluetooth para poder personalizar a configuração do Xorg.

Respostas:


6

Para dispositivos USB no Linux, você pode usar:

lsusb -v | grep -e idProduct -e idVendor

Apenas para os IDs:

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

lsusbusa /var/lib/usbutils/usb.idspara traduzir ids para nomes , não sei se o Xorg usaria a mesma fonte.


Impressionante, agora posso ver meus dispositivos USB, mas na verdade preciso encontrar informações sobre Bluetooth. Esta informação é exatamente o que estou procurando, só preciso dela para meus dispositivos Bluetooth. Posso encontrar os IDs de fornecedor hexadecimal em dispositivos Bluetooth, mas não consigo encontrar nomes reais de fornecedor ou produto.
Naftuli Kay

-1 porque isso não funciona para dispositivos não-usb. E nem funciona em todos os dispositivos USB, porque lsusbgeralmente não mostra o nome do produto. A resposta de ManuelSchneid3r funcionou melhor para mim, isto é: xinput list.
Erik

17

Nome do produto do dispositivo (modelo)

Obtenha o Nome do produto do dispositivo xinput (ou modelo ) usando xinput list. Exemplo de saída pode ser algo como isto:

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

Na saída acima, o nome do modelo ou do produto para o dispositivo Touchscreen é "ELAN Touchscreen".

Caminho do dispositivo (nó)

Para obter o Nome do Fornecedor (ou fabricante ) do dispositivo xinput , precisamos conhecer o Caminho do dispositivo (também chamado Nó do Dispositivo) para consultar e, em seguida, perguntar udevadm info. Você pode obter o caminho listando as propriedades xinput de um dispositivo e localizando o valor 'Nó do dispositivo'.

No exemplo anterior, o valor do Nó do dispositivo para a tela sensível ao toque, que diz ter id=10, pode ser encontrado assim:

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

Nome do fornecedor do dispositivo (fabricante)

Agora podemos obter o nome do fornecedor (ou fabricante ) do dispositivo xinput, observando o valor da VENDORpropriedade retornada pelo udevadm infodispositivo com o nome do caminho encontrado acima:

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

Na saída acima, o nome do fabricante ou fornecedor da tela de toque seria "ELAN".

Configuração do XOrg

Juntando tudo, podemos criar uma nova configuração XOrg InputClassSeção para corresponder específicos de dispositivos fornecedores, produtos ou caminhos. Usando nossos exemplos anteriores, esta seção corresponde a qualquer Produto com tela de toque fabricado pelo fornecedor ELAN:

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

Graças a @ Stéphane , @Daniel e @ ManuelSchneid3r


1
xinput listmostra o nome do fornecedor e do produto em uma linha, separados apenas por um caractere de espaço. No meu caso, foi o teclado do computador TrulyErgonomic.com verdadeiramente ergonômico em vez do teclado do computador verdadeiramente ergonômico . Mas MatchProductparece funcionar com as duas strings: nome do fornecedor e do produto (conforme listado por xinput list) ou apenas o nome do produto (conforme listado por udevadm).
Erik

1

MatchProduct "Product Name" não funciona com a saída da sugestão de Stephane lsusb -v | grep -e idProduct -e idVendor . Eu apenas testei.

xinput list gera a string correta que funciona com MatchProduct


A xinput listlista de fornecedor e produto juntos? Você sabe como descobrir qual é qual?
Sparhawk 25/05

2
@Sparhawk xinput listmostra o nome do produto, mas não o nome do fornecedor. udevadm infomostra o nome do fornecedor, mas não o nome do produto.
Christopher

@Christopher Na verdade, não me lembro por que queria essa informação, mas obrigado por responder e espero que possa ajudar outra pessoa.
Sparhawk

@ Christopher: Não, xinput listmostre o nome do fornecedor e do produto em uma linha, separados por um espaço. Eu precisava usar a resposta de @ DanielK para encontrar apenas o nome do produto. Mas udevadmmostra _ em vez de espaços. Mais fácil de usar pode ser o MatchUSBID encontrado com lsusbou lsusb -v.
precisa

Ok, acabei de testar: ele funciona tanto com toda a cadeia de origem xinput list, que é o nome do fornecedor e do produto (pelo menos no meu caso), como apenas com o nome do produto (que obtive ao udevadmsubstituir os _ chars por espaços.
erik

1

Eu achei os seguintes comandos úteis para encontrar o modelo / fornecedor para uso com a configuração do xorg.conf.

Em https://bbs.archlinux.org/viewtopic.php?pid=753773 : (em que / dev / sdx é substituído pelo caminho do dispositivo de destino, por exemplo, / dev / input / mouse1)

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

De acordo com http://fedoraproject.org/wiki/Input_device_configuration :

udevadm info --export-db | grep ID_MODEL

Mas isso lista os nomes dos produtos com _ em vez de espaços. No meu caso, foi o Truly_Ergonomic_Computer_Keyboard em vez do Truly Ergonomic Computer Keyboard . xinput listmostra corretamente, mas o nome do fornecedor e do produto juntos em uma linha.
Erik
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.