Тонкая настройка дистанционного управления (In-Kernel LIRC)

3

Недавно я перестроил свой блок MythTV с помощью Mythbuntu 12.04, чтобы воспользоваться более новым оборудованием (Ivy Bridge).

В моей предыдущей сборке я использовал lirc для управления удаленным, т. е. отображение кодов клавиш - > keypresses - > ключи приложения; это было довольно путешествие, чтобы узнать все это, и я оказался довольно доволен тем, как все это сработало.

Что у меня:

  • У меня есть дешевый пульт дистанционного управления Chinavasion и USB-ключ , на котором я нашел несколько статей; они в значительной степени вращаются вокруг работы с XBMC (интересно, но я не думаю, что это прямо применимо) и также около получения пульта Harmony для работы (это Chinavasion CVSB-983 - очень полезно, так как мне это нужно, чтобы заставить работать Harmony 900).
  • Mythbuntu 12.04 64-разрядный
  • MythTV 0.25 (вероятно, не имеет значения)

Как это прямо сейчас
Когда я подключаю это, он «просто работает». Это замечательно, за исключением того, что Ubuntu использует его изначально и предотвращает некоторые кнопки нажимают, чтобы перейти к Мифу. Например, я могу отправить кнопку с пульта, который приравнивается к Ctrl-Alt-A (который, как я предполагаю, Ubuntu не интересует), а затем ловушка в Mythfrontend, но > Play поймает Ubuntu (который отображает большой круг с линией, хотя он, так как нет медиа-проигрывателя).
Я понимаю, что это потому, что lirc теперь сливается с ядром, и мне это нравится.

Что я сделал до сих пор:

Нашел устройство, используя lsusb :

$ lsusb  
Bus 001 Device 004: ID 073a:2230 Chaplet Systems, Inc. infrared dongle for remote

Найден номер устройства события:

$ cat /proc/bus/input/devices  
I: Bus=0003 Vendor=073a Product=2230 Version=0110
N: Name="HID 073a:2230"
P: Phys=usb-0000:00:1a.0-1.2/input0
S: Sysfs=/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0/input/input5
U: Uniq=
H: Handlers=sysrq kbd mouse1 event5 js0 
B: PROP=0
B: EV=10001f
B: KEY=4c37fff072ff32d bf54445600000000 ffffffffff 30c100b17c007 ffa67bfad951dfff febeffdfffefffff fffffffffffffffe
B: REL=343
B: ABS=100030000
B: MSC=10

Протестировало вход с evtest (я нажал Play ):

$ sudo evtest /dev/input/event5  
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x73a product 0x2230 version 0x110
Input device name: "HID 073a:2230"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 1 (KEY_ESC)
    Event code 2 (KEY_1)
    Event code 3 (KEY_2)
    Event code 4 (KEY_3)
    Event code 5 (KEY_4)
    Event code 6 (KEY_5)
    Event code 7 (KEY_6)
<------------snipped lots of 'Event code' lines------------>
Testing ... (interrupt to exit)
Event: time 1336435683.230656, -------------- SYN_REPORT ------------
Event: time 1336435683.246648, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00cd
Event: time 1336435683.246652, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 0
Event: time 1336435683.246655, -------------- SYN_REPORT ------------

Протестировано showkey , снова для клавиши Play :

$ sudo showkey -s
kb mode was RAW
[ if you are trying this under X, it might not work
since the X server is also reading /dev/console ]

press any key (program terminates 10s after last keypress)...
0xe0 0x22 0xe0 0xa2 

Что я хочу:

  • Мне нужен способ сканирования входящих нажатий кнопок, если указанный выше метод не подходит.
  • Я хотел бы либо переназначить каждую кнопку нажатием на что-то, что Ubuntu / Unity проигнорирует, или даже лучше передать нажатие непосредственно на Myth (я подозреваю, что это позже возможно только с lirc, но я могу ошибаться).
  • Я хотел бы действительно делать это с драйверами ядра, то есть без явной загрузки lirc; если это так, как мир движется, я бы предпочел найти способ сопоставить текущее поведение с тем, что я хочу, а не форсировать «старое» расположение загрузки lirc вне ядра. Изучение чего-то нового тоже полезно!

Мое предположение:
Я предполагаю, что для этого потребуется использовать setkeycodes , но у вас возникли проблемы с поиском достаточно информации для его настройки.

Любая помощь очень ценится!

    
задан Geoff 08.05.2012 в 02:34
источник

2 ответа

1

Я только что схожу с аналогичным путем, открывая новый in-kernel lirc, для меня момент ah ha был, когда я понял, что дистанционный пульт - это теперь просто клавиатура.

В качестве альтернативы showkey / evtest вы можете запустить sudo ir-keytable -t , чтобы обнаружить удаленные нажатия кнопок. Хотя я не думаю, что он предлагает слишком много новой информации.

Чтобы настроить сопоставление удаленных scancodes с ключами, вам нужно создать свой собственный файл конфигурации, основанный на одном из / lib / udev / rc_keymaps /.

Используя вывод evtest, вы можете использовать поля KEY_X и значение , чтобы определить, какой файл rc_keymaps используется. Скопируйте соответствующий файл и отредактируйте, чтобы переназначить ключи по своему усмотрению. Вы можете загрузить измененную конфигурацию с помощью sudo ir-keytable -c -w newfile . Теперь вы можете проверить свою новую конфигурацию с помощью evtest.

Если вы не можете получить достаточную гибкость при модификации раскладок, вы все равно можете использовать демон lirc пространства пользователей. Вы можете настроить lircd для вывода из встроенного драйвера, а затем настроить lircd как обычно.

Эти две ссылки, Ссылка и Ссылка , есть много информации о том, как настроить и отладить настройку.

    
ответ дан Marc 21.09.2012 в 07:29
источник
2

Кнопка пула Play потребляется плагином media-keys для gnome-settings-daemon. Чтобы отключить его и разрешить MythTV получать событие, выполните следующие действия:

$ gsettings set org.gnome.settings-daemon.plugins.media-keys active false

Также вам нужно отключить / удалить xfce4-volumed, чтобы предотвратить захват XF86AudioLowerVolume , XF86AudioRaiseVolume и XF86AudioMute .

Возможно, вам захочется повторно отобразить некоторые ключи оконного менеджера (например, в моем случае Ctrl + Alt + D используется для запуска Live TV, в то время как xfwm4 использует это для действия show_desktop). Это можно сделать в закладке «Настройки» и «Диспетчер окон», «Клавиатура».

Кроме того, вы можете включить элемент управления «Мышь» для отправки событий клавиатуры с помощью mythtv-mouse2kbd.py Я описал в мой пост в блоге .

    
ответ дан Roman 21.10.2012 в 11:43