Приобрёл на днях USB ИК-приёмник от Мастеркит с пультом. Покупал, чтобы прикрутить к Linux и использовать лёжа на диване вместо радиомышки. Надпись на коробке гордо гласила: «устройство определяется как стандартная USB HID-совместимая клавиатура» - думал, то что надо, проблем в Linux точно не будет! Но тут меня ждал сюрприз…
Вот как выглядит приёмник (у меня тот, что на заднем фоне):
Страница разработчика устройства: http://usbsergdev.narod.ru/MP708N/MP708N.html
Обсуждение на форуме Мастеркит.
Действительно, при подключении приёмник обнаруживается как HID-совместимое устройство MP708N на основе ATMEL ATtiny 45:
# dmesg | tail usb 4-4: new low speed USB device using ohci_hcd and address 7 input: www.masterkit.ru MP708N as /devices/pci0000:00/0000:00:06.0/usb4/4-4/4-4:1.0/input/input7 generic-usb 0003:4242:E131.0006: input,hidraw4: USB HID v1.01 Keyboard [www.masterkit.ru MP708N] on usb-0000:00:06.0-4/input0
Но при нажатии «стандартных» кнопок увеличения и уменьшения громкости меня постигло разочарование: вместо изменения громкости, устройство имитировало нажатия «Ctrl-Alt-Shift-K» и «Ctrl-Alt-Shift-L». Жаль, что понятие «стандартная клавиатура» у разработчиков устройства сильно искажено… А как хотелось «просто воткнуть и пользоваться»!
Ладно, научим это недоразумение прикидываться «стандартным» пультом. Для начала установим замечательный набор для работы с пультами LIRC:
sudo apt-get install lirc
Указываем, какое устройство будем использовать и как. При запуске LIRC может найти инфракрасный приёмник в списке устройств по уникальному слову. Например, название приёмника от Мастеркит содержит строку masterkit.ru
. Посмотреть название устройства можно в dmesg
сразу после подключения приёмника. Будем использовать символы подстановки для поиска:
REMOTE="None" REMOTE_MODULES="" REMOTE_DRIVER="devinput" DEVICE='name=*masterkit.ru*' REMOTE_SOCKET="" REMOTE_LIRCD_CONF="" REMOTE_LIRCD_ARGS="" START_LIRCD="true"
Настраиваем кнопки. Естественно, тут дело вкуса, но главное использовать стандартные названия кнопок, чтобы можно было «из коробки» управлять программами, не настраивая каждую на нестандартные значения. Примеры названий кнопок можно подсмотреть, например, в /usr/share/doc/lirc
. Обзываем пульт каким-либо именем, пусть будет masterkit
:
# LIRC configuration file for Masterkit MP708N receiver. # http://www.masterkit.ru # # brand: Masterkit # model: MP708N # begin remote name masterkit bits 32 begin codes POWER 0x1001e MUTE 0x10030 MENU 0x1002e PLAY 0x10002 STOP 0x10003 BACK 0x10020 TITLE 0x10004 INFO 0x10005 DISPLAY 0x10012 DOWN 0x10006 UP 0x10007 RIGHT 0x10021 TIME 0x10022 REVERSE 0x10023 FORWARD 0x10017 SELECT 0x10024 VOLUMEMINUS 0x10025 VOLUMEPLUS 0x10026 SUBTITLE 0x10032 PAGEMINUS 0x10031 PAGEPLUS 0x10018 end codes end remote
Так как у меня основное средство просмотра видео - это XBMC, то настраиваем кнопки для него в файле Lircmap.xml
. Имя устройства должно совпадать с именем в файле lircd.conf
:
<lircmap> <remote device="masterkit"> <power>POWER</power> <mute>MUTE</mute> <menu>MENU</menu> <play>PLAY</play> <stop>STOP</stop> <back>BACK</back> <title>TITLE</title> <info>INFO</info> <display>DISPLAY</display> <down>DOWN</down> <up>UP</up> <right>RIGHT</right> <myvideo>TIME</myvideo> <reverse>REVERSE</reverse> <forward>FORWARD</forward> <select>SELECT</select> <volumeminus>VOLUMEMINUS</volumeminus> <volumeplus>VOLUMEPLUS</volumeplus> <subtitle>SUBTITLE</subtitle> <pageminus>PAGEMINUS</pageminus> <pageplus>PAGEPLUS</pageplus> </remote> </lircmap>
Перезагружаем LIRC, и наслаждаемся!
P.S. В ходе использования обнаружилось, что у пульта ИК-диод с очень малым углом обзора - чтобы уверенно принимался сигнал, пульт приходится направлять ровно в приёмник. Возможно придётся менять ИК-диод…