Как найти заголовок.hwdb обычного устройства ввода?
У меня есть старый USB RF пульт дистанционного управления, который я хотел бы использовать с Kodi. Пульт дистанционного управления является устройством ввода без клавиатуры, которое генерирует коды клавиш. Я хотел бы сделать некоторые переопределения, но я не делал этого со времен / usr / lib / keymap, который был удален в пользу файлов evtest и udev hwdb.
Правило HWDB (для моей цели) состоит из аппаратного заголовка идентификации, а затем связки ключей. Я нашел несколько примеров выполнения этого для клавиатуры, но ни одного для моего устройства ввода без клавиатуры и ни одного, объясняющего, как создать заголовок hwdb.
Вообще говоря, как мне создать заголовок hwdb? Вот вывод udevadm info /dev/input/eventX
,
P: /devices/pci0000:00/0000:00:02.0/usb2/2-1/2-1:1.0/rc/rc0/input8/event4
N: input/event4
S: input/by-id/usb-X10_Wireless_Technology_Inc_USB_Transceiver-event-if00
S: input/by-path/pci-0000:00:02.0-usb-0:1:1.0-event
E: BACKSPACE=guess
E: DEVLINKS=/dev/input/by-path/pci-0000:00:02.0-usb-0:1:1.0-event /dev/input/by-id/usb-X10_Wireless_Technology_Inc_USB_Transceiver-event-if00
E: DEVNAME=/dev/input/event4
E: DEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-1/2-1:1.0/rc/rc0/input8/event4
E: ID_BUS=usb
E: ID_INPUT=1
E: ID_INPUT_KEY=1
E: ID_MODEL=USB_Transceiver
E: ID_MODEL_ENC=USB\x20Transceiver
E: ID_MODEL_ID=0002
E: ID_PATH=pci-0000:00:02.0-usb-0:1:1.0
E: ID_PATH_TAG=pci-0000_00_02_0-usb-0_1_1_0
E: ID_REVISION=0100
E: ID_SERIAL=X10_Wireless_Technology_Inc_USB_Transceiver
E: ID_TYPE=generic
E: ID_USB_DRIVER=ati_remote
E: ID_USB_INTERFACES=:ff0000:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=X10_Wireless_Technology_Inc
E: ID_VENDOR_ENC=X10\x20Wireless\x20Technology\x20Inc
E: ID_VENDOR_ID=0bc7
E: MAJOR=13
E: MINOR=68
E: SUBSYSTEM=input
E: USEC_INITIALIZED=8383075
E: XKBLAYOUT=us
E: XKBMODEL=pc105
1 ответ
Это оказалось проще, чем я думал. В основном мне просто нужно было прочитать справочную страницу (задыхаться) и выяснить, что можно использовать сокращенную (и подстановочную) версию модалий USB-устройства для строки соответствия.
шаги:
найти поставщика устройства с помощью lsusb. Мой был 0BC7.
Найти все файлы модальностей устройства с
find /sys -name *modalias | xargs grep -i 0BC7
Там будет несколько. Используйте тот, который имеет одну строку. Мой был файл в
/sys/devices/pci0000:00/0000:00:02.0/usb2/2-1/2-1:1.0/modalias
Моя строка modalias выглядит следующим образом. Мы хотим, чтобы все было до 'e', потому что мы хотим, чтобы оно применялось ко всем версиям.
input:b0003v0BC7p0002e0100-e0,1,2,k110,111,113,114,r0,1,amlsfw
Я использую evtest, чтобы найти код сканирования для кнопки на моем пульте. Это "значение" после MSC_SCAN. В моем случае я использую ключ со значением 0b. Я собираюсь сопоставить его с ключевым кодом, который легко наблюдать: без звука.
Используя тяжелую ссылку на эту страницу вики Arch, я создаю файл hwdb в
/etc/udev/hwdb.d/10-x10.hwdb
, Это содержит:evdev:input:b0003v0BC7p0002* KEYBOARD_KEY_0b=mute
Следующие команды обновляют и используют мой новый файл hwdb.
udevadm hwdb --update udevadm trigger udevadm info /dev/input/event4 | grep KEYB