Последнее изменение файла: 2003.06.26
Скопировано с www.bog.pp.ru: 2003.09.22
Пакет Lirc позволяет использовать пульт ДУ для управления операционной системой Linux и прикладными программами. В качестве пульта ДУ можно использовать как самодельные устройства (на сайте даются рекомендации по их изготовлению), так и промышленно изготавливаемые ИК передатчики. В частности, я использую пульт ДУ и ИК приёмник от ТВ тюнера AVerMedia TVPhone98 w/VCR. Пакет также позволяет использовать оборудование для передачи ИК сигналов.
В состав пакета входят:
Добавить в /etc/modules.conf
Параметры модуля lirc_gpio
Для AverMedia TVPhone98 (хотя все настраивается автоматически)
lirc_gpio gpio_mask=0xf88000 gpio_lock_mask=0x10000 gpio_xor_mask=0x10000 soft_gap=0 sample_rate=10
Модуль lirc_dev имеет только параметр debug.
Сначала надо проверить, работает ли собранный пакет:
Настройка lircd производится с помощью файла /etc/lircd.conf (лучше не трогать без нужды ;).
Настройка lircmd производится с помощью файла /etc/lircmd.conf (я его удалил, чтобы lircmd не запускался совсем).
Чтобы обеспечить автоматический запуск lircd (и, если нужно, lircmd) копируем /etc/init.d/lircd из lirc-0.6.5-fr3.i386.rpm в /etc/rc.d/init.d (поправить с учетом /usr/local/sbin). Затем добавляем lircd в список сервисов:
/sbin/chkconfig --add lircd /sbin/chkconfig --level 2 lircd on /sbin/chkconfig --level 3 lircd on /sbin/chkconfig --level 4 lircd on /sbin/chkconfig --level 5 lircd on
Запускаем lircd (и lircmd) в первый раз вручную (при следующей загрузке это произойдет автоматически):
/etc/rc.d/init.d/lircd start
Демон lircd декодирует сигналы, поступающие с ИК приемника, и передает приложениям сообщения в виде пары: имя приемника, имя клавиши. Имя клавиши задается в /etc/lircd.conf совпадающим с надписью на соответствующей кнопке ДУ. Например, для моего ДУ передаются следующие имена приемников и клавиш:
Для доступа к /dev/lircd большинство приложений использует входящую в состав пакета библиотеку liblirc_client. Так как в состав библиотеки входят подпрограммы разбора файлов конфигурации, то большинство приложений используют для настройки интерфейса с пультом ДУ файлы одного формата. По умолчанию, этот файл называется ~/.lircrc, но приложение может позволять задавать отдельный файл конфигурации.
Файл конфигурации состоит из блоков строк, заключенных между begin и end. После запуска каждое приложение находится с точки зрения библиотеки liblirc_client в основном режиме, при обработке очередного блока приложение может перейти в указанный в нем поименованный режим. Блоки, описывающие поведение программы в поименованном режиме, заключаются в файле конфигурации в скобки
begin имя-режима
begin
...
end
...
end имя-режима
Внутри блока могут быть использованы следующие директивы:
В одном блоке может быть задана последовательность директив remote и button, в этом случае для передачи строки приложению требуется последовательное нажатие указанных кнопок (удобно для задания пароля для poweroff ;).
Если приложение может самостоятельно обрабатывать команды ДУ (mplayer, xine), то для него задаются отдельные блоки в конфигурационном файле:
begin
prog = mplayer
button = FULLSCREEN
config = vo_fullscreen
end
Если приложение может управляться событиями X Windows, то интерфейс между Lirc и приложением осуществляется с помощью утилиты irxevent (в качестве параметра может задаваться имя файла конфигурации; irxevent надо запускать в начале сеанса вместе с другими lirc-приложениями):
begin
prog = irxevent
button = POWER
config = Key Escape xawtv
end
В директиве config кроме имени клавиши X Windows (см. список в файле irxevent.keys)
или символа (возможно, с использованием префиксов shift-, numlock-, ctrl-, alt-, meta-) можно также
указывать
config = Button кнопка-мышки x y имя-окна
config = xy_Key x y клавиша имя-окна
Вместо имени окна (часто совпадает с именем приложения) можно указывать идентификатор
окна или CurrentWindow или RootWindow.
Некоторые программы (xterm, xemacs) требуется настраивать, чтобы они позволяли прием сообщений
(при этом создается дырка в безопасности!):
XTerm.vt100.allowSendEvents: true
Если приложение управляется нажатием клавиш клавиатуры (консольная программа), то ею можно управлять с помощью утилиты irpty (в данном случае для каждого приложения необходим отдельный файл конфигурации, утилита создает псевдотерминал):
irpty [--no-echo] [--ignore-eof ] [--non-interactive ] конфигурационный-файл -- имя-программы параметры
Запуск приложений по нажатию кнопок ДУ можно осуществлять с помощью утилиты irexec, для чего надо вставить в скрипт инициализации сеанса ( .bash_profile? ):
irexec --daemon [имя-файла-конфигурации]
Перед этим в ~/.lircrc надо записать:
begin
prog = irexec
button = VIDEO
mode = mplayer
config = gmplayer 1>/dev/null 2>/dev/null &
flags = once
end
begin
prog = irexec
button = TV/FM
config = xawtv -geometry 768x576 >/dev/null &
mode = xawtv
flags= once
end
begin xawtv
begin
prog = irxevent
button = POWER
config = Key Escape xawtv
end
end xawtv
begin mplayer
begin
prog = mplayer
button = FULLSCREEN
config = vo_fullscreen
end
end mplayer
irexec можно также использовать для управления приложениями, имеющими вспомогательные управляющие программы:
begin
prog = irexec
button = power
config = xawtv-remote quit
flags = mode
end