Определить производителя и модель устройства xinput?

15

Я пытаюсь найти производителя устройства и модель моей клавиатуры и сенсорной панели, чтобы я мог написать файл конфигурации XOrg, ориентируясь на него через:

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

Как узнать название продукта и название устройства с помощью инструмента CLI? Я хотел бы закрепить сенсорную панель Bluetooth и клавиатуру, чтобы можно было настроить конфигурацию Xorg.

Нафтули Кей
источник

Ответы:

6

Для USB-устройств в Linux вы можете использовать:

lsusb -v | grep -e idProduct -e idVendor

Только для идентификаторов:

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

lsusbиспользует /var/lib/usbutils/usb.idsдля перевода идентификаторов в имена , я не знаю, будет ли Xorg использовать тот же источник.

Стефан Шазелас
источник
Круто, теперь я вижу свои USB-устройства, но мне действительно нужно найти информацию о Bluetooth. Эта информация именно то, что я ищу, просто она нужна для моих устройств Bluetooth. Я могу найти шестнадцатеричные идентификаторы поставщиков на устройствах Bluetooth, но не могу найти фактических поставщиков или названия продуктов.
Нафтули Кей
-1, потому что это не работает для не USB-устройств. И это даже не работает для всех USB-устройств, потому что lsusbчасто не показывает название продукта. Ответ ManuelSchneid3r работал лучше для меня, то есть: xinput list.
Эрик
17

Название продукта устройства (модель)

Получите название продукта (или модель ) устройства xinput с помощью xinput list. Пример вывода может выглядеть примерно так:

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

В приведенном выше выводе название модели или продукта для устройства с сенсорным экраном - «ELAN Touchscreen».

Путь к устройству (узел)

Чтобы получить имя поставщика устройства xinput (или производителя ), нам нужно знать путь к устройству (также называемый узлом устройства) для запроса, а затем запрашивать udevadm info. Вы можете получить путь, перечислив свойства xinput для устройства и найдя значение «Device Node».

Из нашего предыдущего примера значение Device Node для сенсорного экрана, которое говорит, что оно имеет id=10, может быть найдено так:

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

Название поставщика устройства (Производитель)

Теперь мы можем получить имя поставщика устройства xinput (или производителя ), посмотрев значение VENDORсвойства, возвращаемого udevadm infoдля устройства с указанным выше именем пути:

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

В приведенном выше выводе название производителя или продавца для сенсорного экрана будет «ELAN».

Конфигурация XOrg

Собираю все вместе, мы можем создать новую конфигурацию XOrg InputClassраздел , чтобы соответствовать конкретным устройству поставщиков, продукты или путь. Используя наши предыдущие примеры, этот раздел соответствует любому продукту с сенсорным экраном, изготовленным поставщиком ELAN:

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

Благодаря @ Стефану , @Daniel и @ ManuelSchneid3r

Кристофер
источник
1
xinput listотображает имя поставщика и продукта в одну строку, разделенные только пробелом. В моем случае это была TrulyErgonomic.com Действительно Эргономичная Компьютерная Клавиатура вместо Действительно Эргономичной Компьютерной Клавиатуры . Но, MatchProductпохоже, работает с обеими строками: поставщик и название продукта (как указано xinput list) или только название продукта (как указано udevadm).
Эрик
1

MatchProduct "Product Name"не работает с выводом предложения Стефана lsusb -v | grep -e idProduct -e idVendor. Я только что проверил это.

xinput list выводит правильную строку, которая работает с MatchProduct

ManuelSchneid3r
источник
xinput listПеречисляет ли поставщика и продукт вместе? Вы знаете, как решить, что есть что?
Sparhawk
2
@Sparhawk xinput listпоказывает название продукта, но не имя поставщика. udevadm infoпоказывает имя поставщика, но не название продукта.
Кристофер
@ Кристофер Я не могу вспомнить, почему я хотел эту информацию, но спасибо за ответ, и, надеюсь, она может помочь кому-то еще.
Sparhawk
@Christopher: Нет, xinput listпоказывать имя поставщика и продукта в одну строку, разделенные пробелом. Мне нужно было использовать ответ @ DanielK, чтобы найти только название продукта. Но udevadmпоказывает _ вместо пробелов. Более простым в использовании может быть MatchUSBID, найденный с помощью lsusbили lsusb -v.
Эрик
Хорошо, я только что проверил: он работает как со всей строкой from xinput list, которая является именем поставщика и продукта (по крайней мере, в моем случае), так и только с именем продукта (которое я получил, udevadmзаменив символы _ на пробелы.
erik
1

Я нашел следующие команды полезными при поиске модели / поставщика для использования с конфигурацией xorg.conf.

С https://bbs.archlinux.org/viewtopic.php?pid=753773 : (где / dev / sdx заменяется на путь устройства целевого устройства, т.е. / dev / input / mouse1)

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

Согласно http://fedoraproject.org/wiki/Input_device_configuration :

udevadm info --export-db | grep ID_MODEL
Даниил
источник
Но здесь перечислены названия продуктов с _ вместо пробелов. В моем случае это была Truly_Ergonomic_Computer_Keyboard вместо Truly Ergonomic Computer Keyboard . xinput listпоказывает правильно, но название поставщика и продукта вместе в одной строке.
Эрик