Настройка удаленного управления (LIRC в ядре)

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

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

Что у меня есть:

Как сейчас
Когда я подключаю его, он «просто работает». Что здорово, за исключением того, что Ubuntu использует его изначально и предотвращает некоторые нажатия кнопок от перехода в Myth.Например, я могу отправить кнопку с пульта дистанционного управления, которая соответствует 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 ( Я нажал Воспроизвести ):

$ 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 , снова для клавиши Воспроизвести :

$ 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 , но у меня возникли проблемы с поиском достаточной информации для настройки этого.

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

3
задан 7 September 2012 в 12:52

2 ответа

Я только что снизился на подобный путь обнаружения нового lirc в ядре для меня ах ха, момент был, когда я понял, что ir удаленной является теперь просто другая клавиатура.

Как альтернатива 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 как нормальный.

Эти две ссылки, http://forum.xbmc.org/showthread.php?tid=104541 и http://ubuntuforums.org/showthread.php?t=1754719 , имеют большую информацию о том, как настроить и отладить любую установку.

1
ответ дан 7 September 2012 в 12:52

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

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

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

можно хотеть повторно отобразить некоторые ключи менеджера окон также (например, в моем случае Ctrl+Alt+D используется для запуска прямой телетрансляции, в то время как использование xfwm4 это для show_desktop действия). Это может быть сделано в "Настройках> Менеджер окон", вкладка "Keyboard".

Дополнительно можно позволить управлению "Мышью" отправить события клавиатуры с помощью сценарий mythtv-mouse2kbd.py , который я описал в мое сообщение в блоге .

2
ответ дан 7 September 2012 в 12:52

Другие вопросы по тегам:

Похожие вопросы: