Должно быть возможно создать что-то вроде этого в нескольких строках кода с помощью inotify (существует также пакет inotify-инструментов, который позволил бы Вам реализовывать это использование сценарии оболочки).
(Я был бы очень удивлен, что любой такой инструмент будет управляться из журнала - более вероятно он реализован в уровне виртуальной файловой системы),
Для USB-устройств на Linux можно использовать:
lsusb -v | grep -e idProduct -e idVendor
Для идентификаторов только:
grep . /sys/bus/usb/devices/*/id*
lsusb
использование /var/lib/usbutils/usb.ids
для перевода идентификаторов в имена я не знаю, использовал ли Xorg тот же источник.
MatchProduct "Product Name"
не работает с выводом предложения Stephane lsusb -v | grep -e idProduct -e idVendor
. Я просто протестировал его.
xinput list
производит корректную строку, которая работает с MatchProduct
xinput list
перечислить и поставщика и продукт вместе? Вы знаете, как удаться, который является который? А-ч
– Sparhawk
25.05.2013, 03:32
xinput list
показывает Название продукта, но не имя Поставщика. udevadm info
показывает имя Поставщика, но не Название продукта.
– Christopher
04.08.2015, 10:04
xinput list
покажите и поставщику и названию продукта в одной строке, разделенной пространством. Я должен был использовать ответ @DanielK для нахождения только названия продукта. Но udevadm
шоу _ вместо пробелов. Легче использовать мог бы быть MatchUSBID, найденный с lsusb
или lsusb -v
.
– erik
03.12.2015, 15:43
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
Получите название продукта устройства 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 InputClass
Раздел для соответствия определенным поставщикам устройств, продуктам или путям. Используя наши предыдущие примеры, этот раздел соответствует любому продукту с сенсорным экраном, произведенному поставщиком ELAN:
Section "InputClass"
Identifier "elan touchscreen catchall"
MatchDevicePath "/dev/input/event*"
MatchProduct "Touchscreen"
MatchVendor "ELAN"
EndSection
Благодаря @ Stéphane , @Daniel и @ ManuelSchneid3r
lsusb
часто не показывает название продукта. Ответ ManuelSchneid3r работал лучше всего на меня, который является:xinput list
. – erik 03.12.2015, 15:59