Выкладываю перевод своего
поста в англоязычном форуме насчет настройки
этого китайского пульта(мне он подошел из-за удобства самого пульта). С помощью одного программиста смог настроить.
Первое что нужно сделать -- заблокировать определение пульта в системе как hid-клавиатура.
Я создал каталог
/etc/X11/xorg.conf.d
и в нем создал два файла -- один файл
19-remote.conf с таким содержимым:
Section "InputClass"
Identifier "RemoteControl"
MatchProduct "WitheHome"
Option "Ignore" "True"
EndSection
и второй файл
20-keymap.conf с таким содержимым:
Section "InputClass"
Identifier "Keyboard Defaults"
MatchIsKeyboard "yes"
Driver "evdev"
Option "XkbLayout" "us,ru"
Option "XkbOptions" "grp:alt_shift_toggle,grp_led:scroll,compose:ralt"
EndSection
Внимание! Если ошибиться в содержимом этих файлов или записать что-то не то то можно заблокировать обычную клавиатуру и затем что-бы удалить эти два файла придется воспользоваться либо экранной клавиатурой(если получится

) либо воспользоваться LiveCD.
Затем перезагрузка системы или же:
sudo killall XorgЗатем установка или реконфигурация уже установленного lirc.
Во время установки lirc я выбрал "Custom" пульт и для передатчика("tranciever") "None".
Также отредактировал файл
/etc/lirc/lircd.conf и вставил туда коды этого пульта(из темы):
Вот вид этого файла у меня:
begin remote
name Cyp_Se_WitheHome
bits 32
begin codes
POWER 0x40004 0x80010074
RADIO 0x40004 0x8001001e
TV 0x40004 0x80010014
DVD 0x40004 0x80010031
MUSIC 0x40004 0x80010032
PHOTO 0x40004 0x80010017
VIDEO 0x40004 0x80010012
DVD_MENU 0x40004 0x8001002f
MUTE 0x40004 0x80010042
BACK 0x40004 0x8001000e
GUIDE 0x40004 0x8001003b
VOLUME_UP 0x40004 0x80010073
VOLUME_DOWN 0x40004 0x80010072
CHANNEL_UP 0x40004 0x80010068
CHANNEL_DOWN 0x40004 0x8001006d
ARROW_UP 0x40004 0x80010067
ARROW_DOWN 0x40004 0x8001006c
ARROW_LEFT 0x40004 0x80010069
ARROW_RIGHT 0x40004 0x8001006a
ENTER 0x40004 0x8001001c
RECORD 0x40004 0x8001001d 0x40004 0x80010013
REPEAT 0x40004 0x8001002a 0x40004 0x80010013
PLAY 0x40004 0x8001002a 0x40004 0x80010019
PAUSE 0x40004 0x8001001d 0x40004 0x80010019
STOP 0x40004 0x8001001f
REWIND 0x40004 0x8001002a 0x40004 0x80010020
FORWARD 0x40004 0x8001002a 0x40004 0x80010021
PREV_TRACK 0x40004 0x8001001d 0x40004 0x80010030
NEXT_TRACK 0x40004 0x8001001d 0x40004 0x80010021
NUMPAD_1 0x40004 0x80010002
NUMPAD_2 0x40004 0x80010003
NUMPAD_3 0x40004 0x80010004
NUMPAD_4 0x40004 0x80010005
NUMPAD_5 0x40004 0x80010006
NUMPAD_6 0x40004 0x80010007
NUMPAD_7 0x40004 0x80010008
NUMPAD_8 0x40004 0x80010009
NUMPAD_9 0x40004 0x8001000a
NUMPAD_0 0x40004 0x8001000b
end codes
end remote
Также отредактировал файл
/etc/lirc/hardware.conf , вот как он выглядит:
# /etc/lirc/hardware.conf
#
#Chosen Remote Control
REMOTE="None"
REMOTE_MODULES=""
REMOTE_DRIVER="dev/input"
REMOTE_DEVICE="/dev/input/by-id/usb-Cyp_Se_WitheHome-event-mouse"
REMOTE_SOCKET=""
REMOTE_LIRCD_CONF=""
REMOTE_LIRCD_ARGS=""
#Chosen IR Transmitter
TRANSMITTER="None"
TRANSMITTER_MODULES=""
TRANSMITTER_DRIVER=""
TRANSMITTER_DEVICE=""
TRANSMITTER_SOCKET=""
TRANSMITTER_LIRCD_CONF=""
TRANSMITTER_LIRCD_ARGS=""
#Enable lircd
START_LIRCD="true"
#Don't start lircmd even if there seems to be a good config file
#START_LIRCMD="false"
#Try to load appropriate kernel modules
LOAD_MODULES="true"
# Default configuration files for your hardware if any
LIRCMD_CONF=""
#Forcing noninteractive reconfiguration
#If lirc is to be reconfigured by an external application
#that doesn't have a debconf frontend available, the noninteractive
#frontend can be invoked and set to parse REMOTE and TRANSMITTER
#It will then populate all other variables without any user input
#If you would like to configure lirc via standard methods, be sure
#to leave this set to "false"
FORCE_NONINTERACTIVE_RECONFIGURATION="false"
START_LIRCMD=""
Я отредактировал в нем две строки:
REMOTE_DRIVER="dev/input"
REMOTE_DEVICE="/dev/input/by-id/usb-Cyp_Se_WitheHome-event-mouse"Также нужно обязательно проверить выглядит ли так одна строка:
START_LIRCD="true" т.е. что б lirc был запущен.
Затем перезапустил lirc что бы настройки вступили в действие:
r@NGF:~$ sudo service lirc restart
* Stopping remote control daemon(s): LIRC [ OK ] sudo killall X
* Loading LIRC modules [ OK ]
* Starting remote control daemon(s) : LIRC [ OK ]
r@NGF:~$
Затем я использовал программу:
sudo apt-get install mythbuntu-lirc-generatorЗатем команда:
mythbuntu-lirc-generatorЭта команда создает файлы конфигурации lirc для различных приложений, в моем случае эти файлы сохранились в
/home/r/.lirc т.е.
/home/вы(ваш пользователь)/.lircЗатем я изменил эти файлы как мне нужно было. Вот пример файла конфигурации lirc для mythtv
gedit /home/r/.lirc/mythtv# MythTV
begin
prog = mythtv
button = BACK
config = Esc
repeat = 1
end
begin
prog = mythtv
button = MUTE
config = F9
repeat = 1
end
begin
prog = mythtv
button = VOLUME_UP
config = ]
end
begin
prog = mythtv
button = VOLUME_DOWN
config = [
end
begin
prog = mythtv
button = CHANNEL_UP
config = Up
end
begin
prog = mythtv
button = CHANNEL_DOWN
config = Down
end
begin
prog = mythtv
button = POWER
config = M
repeat = 1
end
begin
prog = mythtv
button = TV
config = Ctrl+T
repeat = 1
end
begin
prog = mythtv
button = DVD
config = Ctrl+D
repeat = 1
end
begin
prog = mythtv
button = MUSIC
config = Ctrl+M
repeat = 1
end
begin
prog = mythtv
button = PHOTO
config = Ctrl+O
repeat = 1
end
begin
prog = mythtv
button = VIDEO
config = Ctrl+V
repeat = 1
end
begin
prog = mythtv
button = DVD_MENU
config = M
repeat = 1
end
begin
prog = mythtv
button = GUIDE
config = Ctrl+S
repeat = 1
end
begin
prog = mythtv
button = ARROW_UP
config = Up
repeat = 1
end
begin
prog = mythtv
button = ARROW_DOWN
config = Down
repeat = 1
end
begin
prog = mythtv
button = ARROW_LEFT
config = Left
repeat = 1
end
begin
prog = mythtv
button = ARROW_RIGHT
config = Right
repeat = 1
end
begin
prog = mythtv
button = ENTER
config = Enter
repeat = 1
end
begin
prog = mythtv
button = RECORD
config = R
repeat = 1
end
begin
prog = mythtv
button = REPEAT
config = M
repeat = 1
end
begin
prog = mythtv
button = STOP
config = O
repeat = 1
end
begin
prog = mythtv
button = NUMPAD_1
config = 1
repeat = 1
end
begin
prog = mythtv
button = NUMPAD_2
config = 2
repeat = 1
end
begin
prog = mythtv
button = NUMPAD_3
config = 3
repeat = 1
end
begin
prog = mythtv
button = NUMPAD_4
config = 4
repeat = 1
end
begin
prog = mythtv
button = NUMPAD_5
config = 5
repeat = 1
end
begin
prog = mythtv
button = NUMPAD_6
config = 6
repeat = 1
end
begin
prog = mythtv
button = NUMPAD_7
config = 7
repeat = 1
end
begin
prog = mythtv
button = NUMPAD_8
config = 8
repeat = 1
end
begin
prog = mythtv
button = NUMPAD_9
config = 9
repeat = 1
end
begin
prog = mythtv
button = NUMPAD_0
config = 0
repeat = 1
end
begin
prog = mythtv
button = PREV_TRACK
config = Q
repeat = 1
end
begin
prog = mythtv
button = NEXT_TRACK
config = Z
repeat = 1
end
begin
prog = mythtv
button = PLAY
config = P
repeat = 1
end
begin
prog = mythtv
button = PAUSE
config = Ctrl+?
end
begin
prog = mythtv
button = REWIND
config = <
repeat = 1
end
begin
prog = mythtv
button = FORWARD
config = >
end
# mplayer
begin
prog = mplayer
button = BACK
config = quit
end
Т.е. система не будет реагировать на кнопки пульта(общесистемно, но, думаю, можно настроить если сильно надо) только в определенных приложениях для которых есть файлы конфигурации lirc.
Затем снова перезапуск lirc:
sudo service lirc restartВот в принципе и все. Работает на Ubuntu 10.04 и 10.10
Единственное то, что этот пульт не поддерживает просыпание из спящего режима, даже если стандартная клавиатура и мышь просыпает. Для этого можно спаять простейшую схемку, которая замыкала бы кнопку питания компа при нажатии какой-то одной кнопки пульта -- тогда уже точно "проснется". Пример одной такой схемы есть
здесь(Там, правда, есть одна ошибка в схеме, вобщем нужно смотреть по конкретному ИК-приемнику).
Есть еще один момент -- файлы в ~/.lirc, сгенерированные с помощью mythbuntu-lirc-generator почему-то не действуют для vlc и smplayer(для него создавал сам отдельно). Поэтому для того что-бы пульт действовал, например, для smplayer(удобно, если запускать smplayer из mythtv для воспроизведения фильмов) я использовал irexec. Т.е. я закинул команду irexec в автозагрузку, что б вручную каждый раз не запускать, и создал файл ~/.lirc/smplayer для smplayer. Что б lirc подхватил этот файл конфигурации, в файле ~.lircrc создал запись для него, т.е., например, ~.lircrc у меня выглядит так:
#Custom lircrc generated via mythbuntu-lirc-generator
#All application specific lircrc files are within ~/.lirc
include ~/.lirc/mythtv
include ~/.lirc/smplayer
include ~/.lirc/xine
include ~/.lirc/vlc
include ~/.lirc/xmame
include ~/.lirc/xmess
include ~/.lirc/totem
include ~/.lirc/elisa
Пример файла конфигурации lirc для smplayer есть
здесь. Через него запускаются консольные команды для smplayer на определенные действия( stop, play, mute и т.д.).
Я продублирую пример этого файла(в данном случае его путь и название ~/.lirc/smplayer) здесь:
begin
button = Play
prog = irexec
repeat = 0
config = if [ $(ps -eo cmd | grep -c ^smplayer) -eq 1 ]; then (smplayer -send-action play_or_pause); fi
end
begin
button = Stop
prog = irexec
repeat = 0
config = if [ $(ps -eo cmd | grep -c ^smplayer) -eq 1 ]; then (smplayer -send-action stop); fi
end
begin
button = Ok
prog = irexec
repeat = 0
config = if [ $(ps -eo cmd | grep -c ^smplayer) -eq 1 ]; then (smplayer -send-action fullscreen compact true); fi
end
begin
button = Rewind
prog = irexec
repeat = 0
config = if [ $(ps -eo cmd | grep -c ^smplayer) -eq 1 ]; then (smplayer -send-action halve_speed); fi
end
begin
button = Forward
prog = irexec
repeat = 0
config = if [ $(ps -eo cmd | grep -c ^smplayer) -eq 1 ]; then (smplayer -send-action double_speed); fi
end
begin
button = Left
prog = irexec
repeat = 0
config = if [ $(ps -eo cmd | grep -c ^smplayer) -eq 1 ]; then (smplayer -send-action rewind3); fi
end
begin
button = Replay
prog = irexec
repeat = 0
config = if [ $(ps -eo cmd | grep -c ^smplayer) -eq 1 ]; then (smplayer -send-action play_prev); fi
end
begin
button = Skip
prog = irexec
repeat = 0
config = if [ $(ps -eo cmd | grep -c ^smplayer) -eq 1 ]; then (smplayer -send-action play_next); fi
end
begin
button = Right
prog = irexec
repeat = 0
config = if [ $(ps -eo cmd | grep -c ^smplayer) -eq 1 ]; then (smplayer -send-action forward3); fi
end
begin
button = VolUp
prog = irexec
repeat = 0
config = if [ $(ps -eo cmd | grep -c ^smplayer) -eq 1 ]; then (smplayer -send-action increase_volume); fi
end
begin
button = Voldown
prog = irexec
repeat = 0
config = if [ $(ps -eo cmd | grep -c ^smplayer) -eq 1 ]; then (smplayer -send-action decrease_volume); fi
end
begin
button = Mute
prog = irexec
repeat = 0
config = if [ $(ps -eo cmd | grep -c ^smplayer) -eq 1 ]; then (smplayer -send-action mute); fi
end
begin
button = Back
prog = irexec
repeat = 0
config = if [ $(ps -eo cmd | grep -c ^smplayer) -eq 1 ]; then (smplayer -send-action next_audio); fi
end
begin
button = One
prog = irexec
repeat = 0
config = if [ $(ps -eo cmd | grep -c ^smplayer) -eq 1 ]; then (smplayer -send-action aspect_4:3); fi
end
begin
button = Two
prog = irexec
repeat = 0
config = if [ $(ps -eo cmd | grep -c ^smplayer) -eq 1 ]; then (smplayer -send-action aspect_16:9); fi
end
begin
button = Three
prog = irexec
repeat = 0
config = if [ $(ps -eo cmd | grep -c ^smplayer) -eq 1 ]; then (smplayer -send-action aspect_16:10); fi
end
Фактически, таким образом можно настроить любой пульт, эмулирующий клавиатуру, для любой программы.
Но... как оказалось, оболочка smplayer иногда глючит, лучше использовать просто mplayer без "морды".