Для управления программами tvtime и mplayer с пульта необходимо выполнить следующие настройки.
Прописать кнопки для пульта в конфигурационный файл /etc/lircd.conf.
Для этого имеется специальная утилита irrecord. Удяляем файл /etc/lircd.conf. Запускаем команду irrecord –f /etc/lircd.conf. Сначала нужно удерживать нажатой любую кнопку на пульте, чтобы он определился, затем вводим название кнопки и быстро нажимаем ее на пульте, иначе после 10 секунд произойдет автоматический выход из программы! После того, как все кнопки записаны, просто жмем Enter и ничего не делаем 10 секунд.
В результате содержимое файла /etc/lircd.conf примет вид похожий на вот это:
# Please make this file available to others # by sending it to # # this config file was automatically generated # using lirc-0.8.3-CVS(devinput) on Thu Nov 22 19:20:59 2007 # # contributed by # # brand: /etc/lircd.conf # model no. of remote control: # devices being controlled by this remote: #
begin remote
name /etc/lircd.conf
bits 16
eps 30
aeps 100
one 0 0
zero 0 0
pre_data_bits 16
pre_data 0x8001
gap 132988
toggle_bit_mask 0x1019D
begin codes
N1 0x0002
N2 0x0003
N3 0x0004
N4 0x0005
N5 0x0006
N6 0x0007
N7 0x0008
N8 0x0009
N9 0x000A
N0 0x000B
VOLPLUS 0x0073
VOLMINUS 0x0072
CHANPLUS 0x0192
CHANMINUS 0x0193
LEFT 0x0069
RIGHT 0x006A
UP 0x0067
DOWN 0x006C
OK 0x0160
TVAV 0x0179
AUDIO 0x0188
SLEEP 0x008E
MUTE 0x0071
MENU 0x008B
INFO 0x0166
PLUS100 0x019D
RECALL 0x0081
FUNC 0x0181
POWER 0x80010074
end codes
end remote
С помощью этого конфигурационного файла система будет опознавать кнопки вашего пульта и на них можно будет “навесить” выполнение любых команд. Приведенный пример соответствует пульту дистанционного управления тв-тюнера Beholder 505 FM.
После того, как все кнопки записаны, перезапускаем демона:
#killall lircd
#lircd
Или по другому:
service lircd restart
Назначить функции кнопкам пульта.
Назначить кнопкам пульта выполнение определенных функций можно по крайней мере двумя проверенными способами. В КДЕ удобно использовать специальный апплет IRKick - сервер инфракрасных пультов управления. Второй способ универсален и не ориентирован ни на какой из оконных менеджеров - Gnome, KDE и тд. Этот способ заключается в использовании для управления утилиты irexec и её файл настроек ~.lircrc. Именно этот способ мы и рассмотрим.
Поскольку мы хотим управлять с пульта сразу двумя программами tvtime и mplayer (точнее каждой по отдельности, в зависимости от того, какая из них запущена), то кнопкам пульта мы будем назначать не команды этих программ, а запуск дополнительного скрипта, который уже будет управлять запущенной программой.
Приведем пример файла назначения функций кнопкам пульта:
begin
prog = irexec
button = TVAV
repeat = 0
config = /home/misc/LIRC/rc TVAV1
config = /home/misc/LIRC/rc TVAV0
end
begin
prog = irexec
button = RIGHT
repeat = 2
config = /home/misc/LIRC/rc RIGHT
end
begin
prog = irexec
button = LEFT
repeat = 2
config = /home/misc/LIRC/rc LEFT
end
begin
prog = irexec
button = UP
repeat = 0
config = /home/misc/LIRC/rc UP
end
begin
prog = irexec
button = DOWN
repeat = 0
config = /home/misc/LIRC/rc DOWN
end
begin
prog = irexec
button = VOLPLUS
repeat = 2
config = /home/misc/LIRC/rc VOLPLUS
end
begin
prog = irexec
button = VOLMINUS
repeat = 2
config = /home/misc/LIRC/rc VOLMINUS
end
begin
prog = irexec
button = POWER
repeat = 0
config = /home/misc/LIRC/rc POWER
end
begin
prog = irexec
button = SLEEP
repeat = 0
config = /home/misc/LIRC/rc SLEEP
end
begin
prog = irexec
button = INFO
repeat = 0
config = /home/misc/LIRC/rc INFO
end
begin
prog = irexec
button = CHANPLUS
repeat = 0
config = /home/misc/LIRC/rc CHANPLUS
end
begin
prog = irexec
button = CHANMINUS
repeat = 0
config = /home/misc/LIRC/rc CHANMINUS
end
begin
prog = irexec
button = MUTE
repeat = 0
config = /home/misc/LIRC/rc MUTE
end
begin
prog = irexec
button = OK
repeat = 0
config = /home/misc/LIRC/rc OK
end
begin
prog = irexec
button = N0
repeat = 0
config = /home/misc/LIRC/rc N0
end
begin
prog = irexec
button = N1
repeat = 0
config = /home/misc/LIRC/rc N1
end
begin
prog = irexec
button = N2
repeat = 0
config = /home/misc/LIRC/rc N2
end
begin
prog = irexec
button = N3
repeat = 0
config = /home/misc/LIRC/rc N3
end
begin
prog = irexec
button = N4
repeat = 0
config = /home/misc/LIRC/rc N4
end
begin
prog = irexec
button = N5
repeat = 0
config = /home/misc/LIRC/rc N5
end
begin
prog = irexec
button = N6
repeat = 0
config = /home/misc/LIRC/rc N6
end
begin
prog = irexec
button = N7
repeat = 0
config = /home/misc/LIRC/rc N7
end
begin
prog = irexec
button = N8
repeat = 0
config = /home/misc/LIRC/rc N8
end
begin
prog = irexec
button = N9
repeat = 0
config = /home/misc/LIRC/rc N9
end
begin
prog = irexec
button = AUDIO
repeat = 0
config = /home/misc/LIRC/rc AUDIO
end
Как видите, по нажатию кнопок пульта вызывается скрипт, который мы расположили в файле /home/misc/LIRC/rc. В зависимости от нажатой кнопки и от того , какая программа (tvtime или mplayer) запущена в настоящий момент, скрипт выполнит ту или иную команду. Скрипт этот выглядит так:
#!/bin/sh
#
tvtime_command() {
case "$1" in
TVAV0)
tvtime-command TOGGLE_FULLSCREEN
;;
TVAV1)
tvtime-command TOGGLE_FULLSCREEN
;;
N1)
tvtime-command CHANNEL_1
;;
N2)
tvtime-command CHANNEL_2
;;
N3)
tvtime-command CHANNEL_3
;;
N4)
tvtime-command CHANNEL_4
;;
N5)
tvtime-command CHANNEL_5
;;
N6)
tvtime-command CHANNEL_6
;;
N7)
tvtime-command CHANNEL_7
;;
N8)
tvtime-command CHANNEL_8
;;
N9)
tvtime-command CHANNEL_9
;;
N0)
tvtime-command CHANNEL_0
;;
VOLPLUS)
tvtime-command RIGHT
;;
VOLMINUS)
tvtime-command LEFT
;;
CHANPLUS)
tvtime-command CHANNEL_UP
;;
CHANMINUS)
tvtime-command CHANNEL_DOWN
;;
LEFT)
tvtime-command LEFT
;;
RIGHT)
tvtime-command RIGHT
;;
UP)
tvtime-command CHANNEL_UP
;;
DOWN)
tvtime-command CHANNEL_DOWN
;;
OK)
/bin/true
;;
AUDIO)
/bin/true
;;
SLEEP)
/bin/true
;;
MUTE)
tvtime-command TOGGLE_MUTE
;;
MENU)
/bin/true
;;
INFO)
tvtime-command DISPLAY_INFO
;;
PLUS100)
/bin/true
;;
RECALL)
/bin/true
;;
FUNC)
/bin/true
;;
POWER)
tvtime-command QUIT
;;
*)
/bin/true
;;
esac
return
}
mplayer_command() {
case "$1" in
TVAV0)
echo "vo_fullscreen 0" > /tmp/mplayer
;;
TVAV1)
echo "vo_fullscreen 1" > /tmp/mplayer
;;
N1)
/bin/true
;;
N2)
/bin/true
;;
N3)
/bin/true
;;
N4)
/bin/true
;;
N5)
/bin/true
;;
N6)
/bin/true
;;
N7)
/bin/true
;;
N8)
/bin/true
;;
N9)
/bin/true
;;
N0)
/bin/true
;;
VOLPLUS)
echo "volume +5" > /tmp/mplayer
;;
VOLMINUS)
echo "volume -5" > /tmp/mplayer
;;
CHANPLUS)
echo "audio_delay 0.100" > /tmp/mplayer
;;
CHANMINUS)
echo "audio_delay -0.100" > /tmp/mplayer
;;
LEFT)
echo "seek -10" > /tmp/mplayer
;;
RIGHT)
echo "seek 10" > /tmp/mplayer
;;
UP)
echo "seek 60" > /tmp/mplayer
;;
DOWN)
echo "seek -60" > /tmp/mplayer
;;
OK)
echo "frame_step" > /tmp/mplayer
;;
AUDIO)
echo "switch_audio" > /tmp/mplayer
;;
SLEEP)
echo "pause" > /tmp/mplayer
;;
MUTE)
/bin/true
;;
MENU)
/bin/true
;;
INFO)
echo "osd" > /tmp/mplayer
;;
PLUS100)
/bin/true
;;
RECALL)
/bin/true
;;
FUNC)
/bin/true
;;
POWER)
echo "quit" > /tmp/mplayer
;;
*)
/bin/true
;;
esac
return
}
mplayer_pid=$(pidof mplayer)
tvtime_pid=$(pidof tvtime)
ircmd="$1"
if [ -z "$mplayer_pid" -a -z "$tvtime_pid" -a "$ircmd"="POWER" ]; then
tvtime &
exit
fi
if [ ! -z "$mplayer_pid" ]; then
mplayer_command $ircmd
exit
fi
if [ ! -z "$tvtime_pid" ]; then
tvtime_command $ircmd
exit
fi
В соответсвии с этим скриптом кнопкам пульта назначены следующие функции:
| Кнопка пульта | tvtime | mplayer |
|---|---|---|
| 1 | ввод цифры “1″ номера канала | нет |
| 2 | ввод цифры “2″ номера канала | нет |
| 3 | ввод цифры “3″ номера канала | нет |
| 4 | ввод цифры “4″ номера канала | нет |
| 5 | ввод цифры “5″ номера канала | нет |
| 6 | ввод цифры “6″ номера канала | нет |
| 7 | ввод цифры “7″ номера канала | нет |
| 8 | ввод цифры “8″ номера канала | нет |
| 9 | ввод цифры “9″ номера канала | нет |
| 0 | ввод цифры “0″ номера канала | нет |
| OK | закончить набор номера канала | нет |
| Vol+ | увеличить громкость | увеличить громкость |
| Vol- | уменьшить громкость | уменьшить громкость |
| Channel+ | следующий канал | увеличить задержку аудио на 100мс |
| Channel- | предыдущий канал | уменьшить задержку аудио на 100мс |
| Left | увеличить громкость | вперед на 10 секунд |
| Right | уменьшить громкость | назад на 10 секунд |
| Up | следующий канал | вперед на 60 секунд |
| Down | предыдущий канал | назад на 60 секунд |
| TV/AV | переключение окно-полный экран | переключение окно-полный экран |
| Audio | нет | переключение звуковых дорожек |
| Sleep | нет | пауза |
| Mute | включить/выключить звук | включить/выключить звук |
| Menu | нет | нет |
| Info | информация о канале и передаче | информация о текущей позиции в файле |
| +100 | нет | нет |
| Recall | нет | нет |
| Func | нет | нет |
| Power | включить ТВ, если ничего не запущено, выключить ТВ, если запущен tvtime | выйти из mplayer |
Дополнительные замечания.
- Для того, чтобы иметь возможность управлять поведением mplayer из другой программы необходимо определить FIFO-файл, через который в mplayer будут поступать команды. Для этого следует поместить в конфигурационный файл mplayer’a ~/.mplayer/config инструкцию слудующего вида: input = fille=~/mplayer.cmd. Кроме того необходимо предварительно создать указанный fifo-файл. Это делается командой mkfifo ~/mplayer.cmd.
- Демон обработки нажатий кнопок пульта irexec -d должен запускаться в окружении пользователя, который использует пульт. Это проще всего сделать, поместив скрипт, запускающий эту команду в автозагрузку. Например в KDE это делается помещением скрипта в каталог ~/.kde/Autostart. В этом случае демон irexec будет запущен непосредственно после того, как пользователь вошел в систему.
- В приведенной конфигурации кнопка Power осуществляет выход из запущенной программы (tvtime или mplayer). В случае же, когда ни одна из этих программ не запущена, нажатие кнопки Power приводит к запуску телевизионной программы tvtime.
- Пример конфигурационных файлов lirc

