Я и мой ёбаный кот на фоне ковра. Войти !bnw Сегодня Клубы
Спустя примерно 8 лет после покупки у китайцев наконец-то приспособил этот копеечный пульт для управления прыщами. https://tinystash.undef.im/il/nr1Hk3aAV83djxkfWWu1QPQcR1Gk2TXV2BskfaRM1YLZshXcbq1PH523yVjkA6jres46q9sUqa9ZnS4ommFdmZkjk68tyXeffxZFj5WRwkUi9.jpg Внешне может отличаться (например, копировать MCE Remote), суть одна: представляются USB HID-устройствами (мышь и клавиатура), шлют пачку комбинаций кнопок (чтобы наверняка) на нажатие одной, что делает их практически неюзабельными. Сегодня мы попробуем это исправить, превратив клавиатуру в lirc-устройство. 1. Подключаем приёмник. Смотрим cat /proc/bus/input/devices. Ищем там своё устройство. В моём случае их два (клавиатура и мышь): I: Bus=0003 Vendor=1d57 Product=ad02 Version=0110 N: Name="HID 1d57:ad02" P: Phys=usb-0000:00:14.0-2/input0 S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/0003:1D57:AD02.0001/input/input2 ... H: Handlers=sysrq kbd event2 leds ... I: Bus=0003 Vendor=1d57 Product=ad02 Version=0110 N: Name="HID 1d57:ad02" P: Phys=usb-0000:00:14.0-2/input1 S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.1/0003:1D57:AD02.0002/input/input3 ... H: Handlers=mouse0 event3 ... Выбираем то, что про клавиатуру (см. Handlers). Нам понадобится значение Sysfs (/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/0003:1D57:AD02.0001/input/input2). Можно сразу запомнить VID/PID (Vendor=1d57 Product=ad02). 2. Теперь делаем (в -p подставить значение из предыдущего шага): udevadm info -a -p /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/0003:1D57:AD02.0001/input/input2 Видим те же VID/PID: ATTRS{idProduct}=="ad02" ATTRS{idVendor}=="1d57" Там же находим ATTRS{bInterfaceProtocol}=="01" (у второго устройства, которое прикидывается мышью, будет 02, так и будем их отличать). 3. Пишем udev-правило (подставив свои значения, конечно): # /etc/udev/rules.d/99-irremote.rules SUBSYSTEMS=="usb", ENV{.protocol}="$attr{bInterfaceProtocol}" KERNEL=="event*", ATTRS{idVendor}=="1d57", ATTRS{idProduct}=="ad02", ENV{.protocol}=="01", SYMLINK="input/irremote" 4. udevadm control --reload, перевтыкаем устройство, смотрим /dev/input, должен появится симлинк /dev/input/irremote -> eventX. 5. Выключаем lirc. 6. Ставим вместо него https://github.com/gsliepen/inputlirc 7. Конфигурируем. См. https://manpages.debian.org/unstable/inputlirc/inputlircd.8.en.html#OPTIONS Например, в дебиане правим /etc/default/inputlirc: OPTIONS="-g -c -m 0" EVENTS="/dev/input/irremote" 8. `systemctl restart inputlirc`. Теперь можно коннектиться к lirc-сокету (по умолчанию `/run/lirc/lircd` или `/var/run/lirc/lircd` в зависимости от системы) и получать команды. 9. Для эмуляции нажатия различных кнопок per application берём https://github.com/un-def/lip Кусок моего конфига: [Default] KEY_PLAYPAUSE: key XF86AudioPlay KEY_VOLUMEUP: key XF86AudioRaiseVolume KEY_VOLUMEDOWN: key XF86AudioLowerVolume KEY_MUTE: key XF86AudioMute KEY_PREVIOUS: key XF86AudioPrev KEY_NEXT: key XF86AudioNext KEY_UP: key Up KEY_DOWN: key Down KEY_LEFT: key Left KEY_RIGHT: key Right KEY_ENTER: key Return KEY_ESC: key Escape KEY_TAB: key Tab KEY_FULLSCREEN: key f KEY_CLOSE: key Alt+F4 KEY_PAGEUP: run i3-msg workspace next KEY_PAGEDOWN: run i3-msg workspace prev [mpv] window_class: ^mpv$ KEY_PLAYPAUSE: key space KEY_VOLUMEUP: key 0 KEY_VOLUMEDOWN: key 9 KEY_REW: key Left KEY_FWD: key Right KEY_F1: key numbersign ; audio KEY_F2: key j ; subtitle KEY_F4: key o ; info [Spotify] window_class: ^Spotify$ KEY_PLAYPAUSE: key space KEY_PREVIOUS: key Ctrl+Left KEY_NEXT: key Ctrl+Right KEY_REW: key Shift+Left KEY_FWD: key Shift+Right ``` #ir #remote #irremote #poorsmanremote #linux
Рекомендовали: @corpse @bazar
#ZV82NZ / @telegram / 1700 дней назад

Обновил прыщи — отвалились мультимедийные кнопки на пульте. Оказалось, что клавиатура пульта — это теперь аж три устройства: собственно Keyboard, Consumer Control (мультимедийные кнопки) и System Control (вроде как это одна кнопка POWER). К счастью, inputlircd умеет умеет работать с несколькими устройствами одновременно. Итак, смотрим снова cat /proc/bus/input/devices. Теперь тут 4 устройства (три от клавиатуры и одна мышь). А ещё Name теперь у каждого уникальный (какое счастье): I: Bus=0003 Vendor=1d57 Product=ad02 Version=0110 N: Name="HID 1d57:ad02 Keyboard" P: Phys=usb-0000:00:14.0-2/input0 S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/0003:1D57:AD02.001B/input/input66 ... I: Bus=0003 Vendor=1d57 Product=ad02 Version=0110 N: Name="HID 1d57:ad02 Consumer Control" P: Phys=usb-0000:00:14.0-2/input0 S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/0003:1D57:AD02.001B/input/input67 ... I: Bus=0003 Vendor=1d57 Product=ad02 Version=0110 N: Name="HID 1d57:ad02 System Control" P: Phys=usb-0000:00:14.0-2/input0 S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/0003:1D57:AD02.001B/input/input68 ... I: Bus=0003 Vendor=1d57 Product=ad02 Version=0110 N: Name="HID 1d57:ad02 Mouse" P: Phys=usb-0000:00:14.0-2/input1 S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.1/0003:1D57:AD02.001C/input/input69 ... Так как имена теперь разные у каждого из устройств, можно упростить udev-правило. Для каждого из трёх устроств смотрим информацию, нас интересует ATTR{name}. Например, для первого: $ udevadm info -a -p /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/0003:1D57:AD02.001B/input/input66 | grep 'ATTR{name}' ATTR{name}=="HID 1d57:ad02 Keyboard" Имена получились те же, что в поле Name в /proc/bus/input/devices, так что скорее всего можно было просто оттуда взять. Пишем правило udev (/etc/udev/rules.d/99-irremote.rules): SUBSYSTEM=="input", ATTRS{name}=="HID 1d57:ad02 Keyboard", SYMLINK="input/irremote_kdb" SUBSYSTEM=="input", ATTRS{name}=="HID 1d57:ad02 Consumer Control", SYMLINK="input/irremote_cc" SUBSYSTEM=="input", ATTRS{name}=="HID 1d57:ad02 System Control", SYMLINK="input/irremote_sc" Дальше с 4-го шага всё так же, только в конфиге inputlircd указываем все три устройства: EVENTS="/dev/input/irremote_kdb /dev/input/irremote_cc /dev/input/irremote_sc"
#ZV82NZ/CAJ / @telegram / 1631 день назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.