2015-05-11 10 views
1

Как включить устройство XInput2, например. как сообщается XIQueryDevice, в соответствующий узел sysfs? Устройство является общим HID-устройством, которым управляет входной драйвер evdev.Карта XInput2 устройства к узлам sysfs

Я знаю, что могу получить name устройства. Я мог бы посмотреть на Xorg.0.log и попытаться найти соответствующее сообщение журнала о том, когда это устройство было добавлено, надеясь, что в нем упоминается связанный с ним узел . Или я мог бы посмотреть все входные события в sysfs, искать один с этим именем и надеяться, что имя уникально и идентично имени, зарегистрированному через XInput. Но я надеюсь, что есть более чистое решение, чем любой из них.

ответ

2

Вы можете получить идентификатор устройства с помощью команды xinput. Из этого вы можете получить путь к узлу устройства с помощью xinput list-props <device id>. Свойство 261 является узлом устройства.

Как только у вас есть узел устройства, вы можете получить путь узла sysfs, используя udevadm info -p $(udevadm info -q path -n <device node path>).

Ленивый Oneliner является

udevadm info -q path -n $(xinput list-props `xinput | grep "search term" | awk -F "id=" '{print $2}' | awk '{print $1}'` | grep "261" | awk -F '"' '{print $2}') 

`

Чтобы сделать это программно вы хотите позвонить XIGetProperty с DeviceID из XIDeviceInfo (например XIDeviceInfo->deviceid), пример вызова синтаксис here.

Чтобы получить путь sysfs от пути устройства, вы используете udev_device_new_from_devnum с стат (как было продемонстрировано here), чтобы сделать udev_device с пути устройства, а затем вызвать udev_device_get_syspath с этим udev_device в качестве аргумента.

2

Устройства ввода могут иметь дополнительные свойства; XIListProperties перечислит их. В моей системе, по крайней мере, одним из этих свойств является «Device Node», который указывает на устройство /dev/input/eventX для устройства.

В принципе, однако, XIQueryDevice, чтобы найти устройства, то XIGetProperty для свойства «Имя устройства» для каждого из них. (Вы будете нуждаться в каком-том атом интернирования материала там.)

xinput утилиты (code here) может отображать эту информацию: xinput list-props $devid и должна служить полным примером того, что делать.

 Смежные вопросы

  • Нет связанных вопросов^_^