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

Должно быть возможно создать что-то вроде этого в нескольких строках кода с помощью inotify (существует также пакет inotify-инструментов, который позволил бы Вам реализовывать это использование сценарии оболочки).

(Я был бы очень удивлен, что любой такой инструмент будет управляться из журнала - более вероятно он реализован в уровне виртуальной файловой системы),

15
10.12.2012, 23:34
4 ответа

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

lsusb -v | grep -e idProduct -e idVendor

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

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

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

6
27.01.2020, 19:49
  • 1
    Потрясающий, я могу теперь видеть свои USB-устройства, но я на самом деле должен найти информацию о Bluetooth. Эта информация точно, что я ищу, просто нуждаюсь в ней для своих bluetooth-устройств. Я могу найти шестнадцатеричные идентификаторы поставщика на bluetooth-устройствах, но я, может казаться, не нахожу фактического поставщика или названия продукта. –  Naftuli Kay 10.12.2012, 23:37
  • 2
    1, потому что это не работает на не-USB-устройства. И это даже не работает на все USB-устройства, потому что lsusb часто не показывает название продукта. Ответ ManuelSchneid3r работал лучше всего на меня, который является: xinput list. –  erik 03.12.2015, 15:59

MatchProduct "Product Name" не работает с выводом предложения Stephane lsusb -v | grep -e idProduct -e idVendor. Я просто протестировал его.

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

1
27.01.2020, 19:49
  • 1
    Делает xinput list перечислить и поставщика и продукт вместе? Вы знаете, как удаться, который является который? А-ч –  Sparhawk 25.05.2013, 03:32
  • 2
    @Sparhawk xinput list показывает Название продукта, но не имя Поставщика. udevadm info показывает имя Поставщика, но не Название продукта. –  Christopher 04.08.2015, 10:04
  • 3
    @Christopher, который я не могу на самом деле помнить, почему я хотел эту информацию, но благодарю ответить, и надо надеяться это может помочь кому-то еще. –  Sparhawk 04.08.2015, 13:18
  • 4
    @Christopher: Нет, xinput list покажите и поставщику и названию продукта в одной строке, разделенной пространством. Я должен был использовать ответ @DanielK для нахождения только названия продукта. Но udevadm шоу _ вместо пробелов. Легче использовать мог бы быть MatchUSBID, найденный с lsusb или lsusb -v. –  erik 03.12.2015, 15:43
  • 5
    Хорошо, я просто протестировал его: Это работает оба с целой строкой от xinput list, который является поставщиком и названием продукта (по крайней мере, в моем случае), и с названием продукта только (от которого я добрался udevadm замена _ символы с пробелами. –  erik 03.12.2015, 15:52

Я нашел следующие команды полезными при поиске модели/поставщика для использования с конфигурацией 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
1
27.01.2020, 19:49

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

Получите название продукта устройства 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 для устройства и найдя значение «Узел устройства».

В нашем предыдущем примере значение узла устройства для сенсорного экрана, в котором указано, что он имеет 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

Благодаря @ Stéphane , @Daniel и @ ManuelSchneid3r

17
27.01.2020, 19:49

Теги

Похожие вопросы