
Запуск программ с помощью любого дистанционного пульта
LIRC (Linux Infrared Remote Control — «инфракрасный ПДУ для Linux») — открытый программный пакет, позволяющий принимать и передавать инфракрасные сигналы пользователям операционной системы Linux.
Простейший ИК приемник
Подключается к последовательному порту компьютера.

Сигналы принимаются ИК датчиком IC1 и поступают на вход DCD последовательного порта. Питание через стабилизатор 5В берется с выхода RTS порта, на некоторых компьютерах и usb2com переходниках, где на выходах порта меньшее напряжение, схема работать не будет.
Полный список ИК датчиков можно найти на странице http://www.lirc.org/receivers.html.
Установка
#apt-get install lirc
чтобы система не перехватывала управление портом, поставим setserial
#apt-get install setserial
и выполнить команду
#setserial /dev/ttyS0 uart none
чтобы каждый раз не запускать команду можно прописать в /etc/rc.local
Загружаем модуль ядра lirc_serial:
#modprobe lirc_serial #lsmod | grep lirc lirc_serial 18662 0 lirc_dev 19354 1 lirc_serial
Проверяем ик приемник:
сначала останавливаем сервер
#service lirc stop #mode2 -d /dev/lirc0 space 2708220 pulse 9037 space 4436 pulse 626 space 504 pulse 610 space 1644 pulse 610 space 1640 pulse 589 space 530
Настройка
#nano /etc/lirc/hardware.conf # название пульта REMOTE="IR" # загружаемый модуль REMOTE_MODULES="lirc_serial" # драйвер REMOTE_DRIVER="default" # Устройство с которого будет считан сигнал REMOTE_DEVICE="/dev/lirc0" REMOTE_SOCKET="" REMOTE_LIRCD_CONF="" REMOTE_LIRCD_ARGS="" # запуск lircd START_LIRCD="true" # загружать модули LOAD_MODULES="true"
Теперь создадим файл профиля для пульта с помощью команды irrecord:
Программа предложит понажимать все клавиши на ПДУ, и задать название каждой клавиши. На выходе получится файл, имя которого мы задали, останется лишь скопировать его в /etc/lirc/lircd.conf.
список имен кнопок
#irrecord --list-namespace
или отключаем с помощью параметра --disable-namespace
#irrecord -d /dev/lirc0 ~/lircd.conf irrecord - application for recording IR-codes for usage with lirc ... Press RETURN to continue. Now start pressing buttons on your remote control. It is very important that you press many different buttons and hold them down for approximately one second. Each button should generate at least one dot but in no case more than ten dots of output. Don't stop pressing buttons until two lines of dots (2x80) have been generated. Press RETURN now to start recording. ................................................................................ Found const length: 107875 Please keep on pressing buttons like described above. ................................................................................ Space/pulse encoded remote control found. Signal length is 67. Found possible header: 9024 4457 Found trail pulse: 603 Found repeat code: 9026 2206 Signals are space encoded. Signal length is 32 Now enter the names for the buttons. Please enter the name for the next button (press <ENTER> to finish recording) POWER Now hold down button "KEY_POWER". ...
в результате должен получится файл lircd.conf с приблизительно таким содержимым
begin remote
name NONAME
bits 16
flags SPACE_ENC
eps 25
aeps 100
header 9030 4447
one 616 503
zero 616 1628
ptrail 616
repeat 9035 2198
pre_data_bits 16
pre_data 0x9E29
gap 39858
toggle_bit 0
begin codes
POWER 0x000000000000B748
PC 0x0000000000007788
SOURCES 0x0000000000000FF0
MTS 0x00000000000037C8
MUTE 0x000000000000F708
VOL_UP 0x00000000000027D8
VOL_DOWN 0x00000000000007F8
CH_UP 0x000000000000A758
CH_DOWN 0x0000000000008778
FUNC 0x0000000000006798
PG- 0x00000000000047B8
PG+ 0x0000000000008F70
TTX 0x0000000000004FB0
1 0x0000000000007F80
2 0x000000000000BF40
3 0x0000000000003FC0
4 0x000000000000DF20
5 0x0000000000005FA0
6 0x0000000000009F60
7 0x0000000000001FE0
8 0x000000000000EF10
9 0x0000000000006F90
0 0x000000000000FF00
CH_RTN 0x00000000000017E8
CC 0x0000000000009768
SYNC 0x000000000000D728
CH_CH 0x000000000000E718
AUTOSCAN 0x000000000000CF30
+100 0x000000000000AF50
end codes
end remote
Копирем файл настроек
#cp ~/lircd.conf /etc/lirc/lircd.conf
Запускаем сервер
#service lirc start
и проверяем работу, будет выводится код и название кнопки
#irw 000000009e29bf40 00 2 NONAME 000000009e293fc0 05 3 NONAME 000000009e29a758 00 CH_UP NONAME 000000009e298778 00 CH_DOWN NONAME 000000009e2927d8 06 VOL_UP NONAME
Использование
Файл lircrc должен быть помещен в домашний каталог ~/.config/lircrc. При желании вы можете создать общесистемный конфигурационный файл, расположенный в "/etc/lirc/lircrc" который будет использоваться при отсутствии lircrc. Идея заключается в том, чтобы иметь информацию о конфигурации всех клиентов в одном месте.
............. продолжение