Tentukan produsen dan model perangkat xinput?

15

Saya mencoba mencari produsen perangkat dan model keyboard dan touch pad saya sehingga saya dapat menulis file konfigurasi XOrg yang menargetkannya melalui:

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

Bagaimana saya bisa menemukan produk dan nama vendor perangkat menggunakan alat CLI? Saya ingin memoles touchpad dan keyboard Bluetooth saya agar dapat menyesuaikan konfigurasi Xorg.

Naftuli Kay
sumber

Jawaban:

6

Untuk perangkat USB di Linux, Anda dapat menggunakan:

lsusb -v | grep -e idProduct -e idVendor

Hanya untuk ID:

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

lsusbgunakan /var/lib/usbutils/usb.idsuntuk menerjemahkan id ke nama , saya tidak tahu apakah Xorg akan menggunakan sumber yang sama.

Stéphane Chazelas
sumber
Luar biasa, saya sekarang dapat melihat perangkat USB saya, tetapi saya benar-benar perlu menemukan info Bluetooth. Informasi ini persis apa yang saya cari, hanya perlu untuk perangkat Bluetooth saya. Saya dapat menemukan id heks vendor pada perangkat Bluetooth, tetapi sepertinya saya tidak dapat menemukan vendor atau nama produk yang sebenarnya.
Naftuli Kay
-1 karena ini tidak berfungsi untuk perangkat non-usb. Dan itu bahkan tidak berfungsi untuk semua perangkat usb, karena lsusbsering tidak menunjukkan nama produk. Jawaban ManuelSchneid3r ini bekerja terbaik bagi saya, yaitu: xinput list.
erik
17

Nama Produk Perangkat (Model)

Dapatkan Nama Produk (atau model ) perangkat xinput menggunakan xinput list. Contoh output mungkin terlihat seperti ini:

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

Dalam output di atas, model atau nama produk untuk perangkat Touchscreen adalah "ELAN Touchscreen".

Jalur Perangkat (Node)

Untuk mendapatkan Nama Vendor perangkat xinput (atau pabrikan ), kita perlu mengetahui Path perangkat (juga disebut Device Node) untuk diminta, dan kemudian bertanya udevadm info. Anda bisa mendapatkan lintasan dengan mendaftarkan properti xinput untuk perangkat dan menemukan nilai 'Device Node'.

Dari contoh kami sebelumnya nilai Device Node untuk Touchscreen, yang mengatakan itu id=10, dapat ditemukan seperti ini:

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

Nama Vendor Perangkat (Pabrikan)

Sekarang kita bisa mendapatkan Nama Vendor perangkat xinput (atau pabrikan ) dengan melihat nilai untuk VENDORproperti yang dikembalikan oleh udevadm infoperangkat dengan nama jalur kita ditemukan di atas:

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

Dalam output di atas, nama pabrikan atau vendor untuk Layar Sentuh adalah "ELAN".

Konfigurasi XOrg

Menyatukan semuanya, kita dapat membuat Bagian konfigurasi XOrgInputClass baru untuk mencocokkan vendor perangkat tertentu, produk atau jalur. Menggunakan contoh-contoh kami sebelumnya, bagian ini cocok dengan Produk Layar Sentuh apa pun yang diproduksi oleh ELAN Vendor:

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

Terima kasih kepada @ Stéphane , @Daniel dan @ ManuelSchneid3r

Christopher
sumber
1
xinput listmenunjukkan nama vendor dan produk dalam satu baris, hanya dipisahkan oleh karakter antariksa. Dalam kasus saya itu adalah TrulyErgonomic.com Keyboard Komputer Benar-benar Ergonomis bukan Keyboard Komputer Benar - benar Ergonomis . Tetapi MatchProducttampaknya bekerja dengan kedua string: vendor dan nama produk (seperti yang tercantum oleh xinput list) atau hanya nama produk (seperti yang tercantum oleh udevadm).
erik
1

MatchProduct "Product Name"tidak bekerja dengan hasil dari saran Stephane lsusb -v | grep -e idProduct -e idVendor. Saya baru saja mengujinya.

xinput list menghasilkan string yang benar yang bekerja dengan MatchProduct

ManuelSchneid3r
sumber
Apakah xinput listdaftar vendor dan produk bersama-sama? Apakah Anda tahu cara berolahraga yang mana?
Sparhawk
2
@Sparhawk xinput listmenunjukkan nama Produk tetapi bukan nama Vendor. udevadm infomenunjukkan nama Vendor tetapi bukan nama Produk.
Christopher
@Christopher Saya tidak dapat mengingat mengapa saya menginginkan informasi ini, tetapi terima kasih telah membalas, dan semoga dapat membantu orang lain.
Sparhawk
@Christopher: Tidak, xinput listtunjukkan nama vendor dan produk dalam satu baris, dipisahkan oleh spasi. Saya perlu menggunakan jawaban @ DanielK untuk hanya menemukan nama produk. Tetapi udevadmmenunjukkan _ bukan spasi. Lebih mudah digunakan mungkin MatchUSBID ditemukan dengan lsusbatau lsusb -v.
erik
Ok, saya baru saja mengujinya: Ini berfungsi baik dengan seluruh string dari xinput list, yang vendor dan nama produk (setidaknya dalam kasus saya), dan dengan nama produk saja (yang saya dapatkan dari udevadmmengganti _ chars dengan spasi.
erik
1

Saya telah menemukan perintah berikut berguna dalam menemukan model / vendor untuk digunakan dengan konfigurasi xorg.conf.

Dari https://bbs.archlinux.org/viewtopic.php?pid=753773 : (di mana / dev / sdx diganti dengan jalur perangkat perangkat target yaitu / dev / input / mouse1)

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

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

udevadm info --export-db | grep ID_MODEL
Daniel
sumber
Tetapi ini mencantumkan nama produk dengan _ alih-alih spasi. Dalam kasus saya itu adalah Truly_Ergonomic_Computer_Keyboard, bukan Truly Ergonomis Computer Keyboard . xinput listmenunjukkannya dengan benar, tetapi vendor dan nama produk bersama dalam satu baris.
erik