Ceci est une ancienne révision du document !
Carte TV : Pinnacle PCTV Hybrid Pro Stick Installation de la télécommande
Après avoir intallé votre carte pctv_hybrid_pro_stick, il est temps de configurer la télécommande.
Pour effectuer cette documentation, je me suis inspiré de cette page.
Il me semble qu'il y a plusieurs types de télécommande. La configuration suivante est pour la télécommande noire toute plate. Mais cela doit etre identique pour les autres types de télécommandes.
Par défaut, la télécommande ne fonctionne pas très bien: il n'y a que le son qui fonctionne.
Nous allons configurer d'autres touches, pas toutes malheuresement…
Je vais parler de la configuration des touches pour Kaffeine. Nous pourrons faire:
- Le son (+,- et mute) qui doit fonctionné par défaut
- Fermer Kaffeine
- Chaine suivante et Chaine Précédente
- Plein écran
- Stopper l'image de Kaffeine
Nous allons pour cela utiliser lineak.
Installation
Installons lineakd:
sudo apt-get install lineakd
Configuration
Editons lineakkb.def:
sudo gedit /etc/lineakkb.def
Et rajoutons ceci au début du fichier:
#### Pinnacle PCTV USB Stick Remote #### [PCTV] brandname = "Pinnacle" modelname = "PCTV USB Stick Remote Control" [KEYS] Mute = 160 Lancer = 110 Eteindre = 222 Chaine_Precedente = 152 Stop = 232 Plein_Ecran = 177 Chaine_Suivante = 233 VolumeUp = 176 VolumeDown = 174 [END KEYS] [END PCTV] #### END Pinnacle PCTV USB Stick Remote ####
Nous allons maintenant rechercher le type de la télécommande en tapant cela dans un terminal:
lineakd -l
Si tout va bien, nous devrions voir la télécommande dans a liste sous le nom de PCTV
PCTV Pinnacle PCTV USB Stick Remote Control
Créons un fichier de configuration pour cette télécommande:
lineakd -c PCTV
Ce nouveau fichier est dans ~/.lineak/lineakd.conf.
Maintenant, nous éditons ce fichier:
gedit ~/.lineak/lineakd.conf
Et mettons ces paramètres:
# LinEAK - Linux support for Easy Access and Internet Keyboards # Copyright (c) 2001,2002, 2003 Sheldon Lee Wen <leewsb@hotmail.com> (Current Maintainer) # and Mark Smulders <Mark@PIRnet.nl> # http://lineak.sourceforge.net # # lineakd configuration file # # example key configuration: # play = "xmms --play-pause" # eject = EAK_EJECT # # Lineakd supports the following modifier keys: # control alt shift mod2 mod3 mod4 mod5 CdromDevice = /dev/cdrom Display_align = center Display_color = 0aff00 Display_font = -adobe-helvetica-bold-r-normal-*-*-240-*-*-p-*-*-* Display_hoffset = 0 Display_plugin = xosd Display_pos = bottom Display_soffset = 1 Display_timeout = 3 isplay_voffset = 50 KeyboardType = PCTV MixerDevice = /dev/mixer Screensaver = conffilename = /home/nico/.lineak/lineakd.conf deffilename = /etc/lineakkb.def keystate_capslock = keystate_numlock = keystate_scrolllock = userdeffile = /home/nico/.lineak/lineakkb.def Mute = "KMIX_MUTE" VolumeDown = "KMIX_VOLDOWN" VolumeUp = "KMIX_VOLUP" Chaine_Precedente = "dcop kaffeine KaffeineIface previous" Chaine_Suivante = "dcop kaffeine KaffeineIface next" Lancer = "dcop kaffeine KaffeineIface play" Eteindre = "dcop kaffeine KaffeineIface quit" Plein_Ecran = "dcop kaffeine KaffeineIface fullscreen" Stop = "dcop kaffeine KaffeineIface stop"
Voila, c'est presque finit…
Nous allons rajouter Lineak au démarrage:
Pour Gnome: Allez dans Menu, Systèmes, Préférences, Sessions, Onglet "Programme au démarrage" et ajouter:
lineakd &
Pour Kde: faites ceci dans un terminal:
ln -s /usr/bin/lineakd /home/marcus/.kde/Autostart/
Une fois votre ordinateur redémarré, lancer Kaffeine, et votre télécommande doit fonctionner
Il faut savoir que l'utilisation du plein écran se fait avec la touche enregistrement car la touche plein écran est inactive. Et les touches suivante et précédente sont les touches de retour et d'avance rapide.
Pour information: Les touches de 0 à 9 ne sont pas configurables car elles correspondent à des caractères du clavier (é,è,à, etc…), et si nous les configurons, les caractères ne fonctionneront plus avec le clavier…du moins je n'y suis pas arrivé. Les autres touches sont inactives. J'ai essayé de les faire reconnaître avec xev et en fouillant dans les log mais rien… Il est certainement possible de configurer totalement les touches, mais je n'ai pas les connaissances pour.
Via lirc
L'installation via lirc est plus compliquée, il faut en particulier patcher les sources des drivers em2880 mais il a l'avantage que tous les boutons marchent..
Patch des drivers
Il faut d'abortd aller dans le dossier des pilotes (au besoin, les retelecharger) :
hg clone http://mcentral.de/hg/~mrec/v4l-dvb-experimental/ cd v4l-dvb-experimental
Il nous faut ensuite créer le patch :
gedit telecommande.patch
Puis le remplir avec le code ci-dessous :
diff -Naur v4l-org/linux/drivers/media/common/ir-keymaps.c v4l-mod/linux/drivers/media/common/ir-keymaps.c
--- v4l-org/linux/drivers/media/common/ir-keymaps.c 2007-11-03 12:57:32.179519367 +0100
+++ v4l-mod/linux/drivers/media/common/ir-keymaps.c 2007-11-03 13:51:46.864993322 +0100
@@ -2053,6 +2053,41 @@
};
EXPORT_SYMBOL_GPL(ir_codes_pinnacle2);
+IR_KEYTAB_TYPE ir_codes_pinnacle3[IR_KEYTAB_SIZE] = {
+ /* Keys 0 to 9 */
+ [ 0x27 ] = KEY_0,
+ [ 0x0f ] = KEY_1,
+ [ 0x15 ] = KEY_2,
+ [ 0x10 ] = KEY_3,
+ [ 0x18 ] = KEY_4,
+ [ 0x1b ] = KEY_5,
+ [ 0x1e ] = KEY_6,
+ [ 0x11 ] = KEY_7,
+ [ 0x21 ] = KEY_8,
+ [ 0x12 ] = KEY_9,
+
+ [ 0x39 ] = KEY_POWER,
+
+ [ 0x03 ] = KEY_VOLUMEUP,
+ [ 0x09 ] = KEY_VOLUMEDOWN,
+ [ 0x06 ] = KEY_CHANNELUP,
+ [ 0x0c ] = KEY_CHANNELDOWN,
+ [ 0x3f ] = KEY_INFO,
+
+ [ 0x00 ] = KEY_MUTE,
+
+ //[ 0x06 ] = KEY_PLAY,
+ [ 0x2d ] = KEY_REWIND,
+ [ 0x33 ] = KEY_FORWARD,
+ [ 0x30 ] = KEY_PAUSE,
+ [ 0x3c ] = KEY_STOP,
+ [ 0x36 ] = KEY_RECORD,
+ [ 0x24 ] = KEY_ZOOM, /* fullscreen */
+ [ 0x2a ] = KEY_M,
+
+};
+EXPORT_SYMBOL_GPL(ir_codes_pinnacle3);
+
/* for the Geniatech X800 remote: */
IR_KEYTAB_TYPE ir_codes_geniatech_x800[IR_KEYTAB_SIZE] = {
[ 0x00 ] = KEY_0,
diff -Naur v4l-org/linux/drivers/media/video/em28xx/em28xx-cards.c v4l-mod/linux/drivers/media/video/em28xx/em28xx-cards.c
--- v4l-org/linux/drivers/media/video/em28xx/em28xx-cards.c 2007-11-03 12:57:32.679547862 +0100
+++ v4l-mod/linux/drivers/media/video/em28xx/em28xx-cards.c 2007-11-03 13:51:47.365021817 +0100
@@ -2112,7 +2112,7 @@
em28xx_write_regs(dev, 0x08, "\xfe", 1);
mdelay(70);
em28xx_write_regs(dev, R0F_XCLK_REG, "\x22", 1); /* switch em2880 rc protocol */
- em2880_ir_attach(dev,ir_codes_pinnacle2,ARRAY_SIZE(ir_codes_pinnacle2), em2880_get_key_pinnacle);
+ em2880_ir_attach(dev,ir_codes_pinnacle3,ARRAY_SIZE(ir_codes_pinnacle3), em2880_get_key_pinnacle);
break;
}
case EM2870_BOARD_TERRATEC_XS_MT2060:
diff -Naur v4l-org/linux/drivers/media/video/em28xx/em28xx-input.c v4l-mod/linux/drivers/media/video/em28xx/em28xx-input.c
--- v4l-org/linux/drivers/media/video/em28xx/em28xx-input.c 2007-11-03 12:57:32.679547862 +0100
+++ v4l-mod/linux/drivers/media/video/em28xx/em28xx-input.c 2007-11-03 13:51:47.365021817 +0100
@@ -92,10 +92,12 @@
dev->ir_em2880->sequence[2]=buf[0]&1;
*ir_key=buf[2];
if((dev->ir_em2880->sequence[0]==1&&dev->ir_em2880->sequence[1]==0&&dev->ir_em2880->sequence[2]==1)||
- (dev->ir_em2880->sequence[0]==0&&dev->ir_em2880->sequence[1]==1&&dev->ir_em2880->sequence[2]==0))
+ (dev->ir_em2880->sequence[0]==0&&dev->ir_em2880->sequence[1]==1&&dev->ir_em2880->sequence[2]==0)) {
+ //printk("em28xx-ir : Key pressed : %02x\n", *ir_key) ;
return 1;
- else
+ } else {
return 0;
+ }
}
static void em2880_ir_key_poll(struct em28xx *dev){
diff -Naur v4l-org/linux/include/media/ir-common.h v4l-mod/linux/include/media/ir-common.h
--- v4l-org/linux/include/media/ir-common.h 2007-11-03 12:57:32.679547862 +0100
+++ v4l-mod/linux/include/media/ir-common.h 2007-11-03 13:51:47.865050312 +0100
@@ -141,6 +141,7 @@
extern IR_KEYTAB_TYPE ir_codes_encore_enltv[IR_KEYTAB_SIZE];
extern IR_KEYTAB_TYPE ir_codes_tt_1500[IR_KEYTAB_SIZE];
extern IR_KEYTAB_TYPE ir_codes_pinnacle2[IR_KEYTAB_SIZE];
+extern IR_KEYTAB_TYPE ir_codes_pinnacle3[IR_KEYTAB_SIZE];
extern IR_KEYTAB_TYPE ir_codes_em_pinnacle_usb[IR_KEYTAB_SIZE];
extern IR_KEYTAB_TYPE ir_codes_em_terratec2[IR_KEYTAB_SIZE];
extern IR_KEYTAB_TYPE ir_codes_em_pinnacle2_usb[IR_KEYTAB_SIZE];
On a plus qu'à patcher et recompiler les modules :
patch -p1 < telecommande.patch make make install
Installation et configuration de lirc
On doit d'abord installer lirc
sudo apt-get install lirc lirc-x
Ensuite, on doit trouver quel /dev/input/eventX correspond à la telecommande
sudo cat /proc/bus/input/devices
Vous devriez voir un paragraphe qui ressemble à ça :
I: Bus=0003 Vendor=0000 Product=0000 Version=0000 N: Name="em2880/em2870 remote control" P: Phys=USB S: Sysfs=/class/input/input8 U: Uniq= H: Handlers=kbd event8 B: EV=100003 B: KEY=c0000 100040 0 0 0 0 0 180 80000001 9e0000 0 40000 ffd
Ici, c'est donc le fichier /dev/input/event8 qui correspond à ma télécommande. Configurons à présent lirc :
sudo gedit /etc/lirc/hardware.conf
# /etc/lirc/hardware.conf # # Arguments which will be used when launching lircd LIRCD_ARGS="" #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 # Run "lircd --driver=help" for a list of supported drivers. DRIVER="dev/input" # If DEVICE is set to /dev/lirc and devfs is in use /dev/lirc/0 will be # automatically used instead DEVICE="/dev/input/event8" MODULES="" # Default configuration files for your hardware if any LIRCD_CONF="" LIRCMD_CONF=""
Puis on regle les codes de la télécommande :
sudo gedit /etc/lirc/lircd.conf
begin remote
name linux-input-layer
bits 32
begin codes
1 0x10002
2 0x10003
3 0x10004
4 0x10005
5 0x10006
6 0x10007
7 0x10008
8 0x10009
9 0x1000a
0 0x1000b
mute 0x10071
vol-down 0x10072
vol-up 0x10073
power 0x10074
pause 0x10077
forward 0x1009f
rewind 0x100a8
info 0x10166
zoom 0x10174
chan-up 0x10192
chan-down 0x10193
m 0x10032
record 0x100a7
stop 0x10080
end codes
end remote
Paramétrage de lirc
Il ne reste plus qu'a créer un fichier ~/.lircrc (cf : lircrc) En voici un d'exemple qui ne contient que pour Kaffeine :
begin
prog = irexec
button = play
config = dcop kaffeine KaffeineIface playDvb
end
begin
prog = irexec
button = pause
config = dcop kaffeine KaffeineIface pause
end
begin
prog = irxevent
button = record
config = Key r kaffeine
config = Key space CurrentWindow
end
begin
prog = irexec
button = info
config = dcop kaffeine KaffeineIface dvbOSD
end
begin
prog = irexec
button = stop
config = dcop kaffeine KaffeineIface stop
end
begin
prog = irexec
button = forward
config = dcop kaffeine KaffeineIface posPlus
end
begin
prog = irexec
button = rewind
config = dcop kaffeine KaffeineIface posMinus
end
begin
prog = irexec
button = chan-up
config = dcop kaffeine KaffeineIface next
end
begin
prog = irexec
button = chan-down
config = dcop kaffeine KaffeineIface previous
end
begin
prog = irexec
button = power
config = dcop kaffeine KaffeineIface quit
end
begin
prog = irexec
button = vol-up
config = dcop kaffeine KaffeineIface volUp
end
begin
prog = irexec
button = mute
config = dcop kaffeine KaffeineIface mute
end
begin
prog = irexec
button = vol-down
config = dcop kaffeine KaffeineIface volDown
end
begin
prog = irexec
button = zoom
config = dcop kaffeine KaffeineIface fullscreen
end
begin
prog = irexec
button = up
config = dcop kaffeine KaffeineIface zoomIn
end
begin
prog = irexec
button = down
config = dcop kaffeine KaffeineIface zoomOut
end
begin
prog = irexec
button = 1
config = dcop kaffeine KaffeineIface setNumber 1
repeat = 0
end
begin
prog = irexec
button = 2
config = dcop kaffeine KaffeineIface setNumber 2
repeat = 0
end
begin
prog = irexec
button = 3
config = dcop kaffeine KaffeineIface setNumber 3
repeat = 0
end
begin
prog = irexec
button = 4
config = dcop kaffeine KaffeineIface setNumber 4
repeat = 0
end
begin
prog = irexec
button = 5
config = dcop kaffeine KaffeineIface setNumber 5
repeat = 0
end
begin
prog = irexec
button = 6
config = dcop kaffeine KaffeineIface setNumber 6
repeat = 0
end
begin
prog = irexec
button = 7
config = dcop kaffeine KaffeineIface setNumber 7
repeat = 0
end
begin
prog = irexec
button = 8
config = dcop kaffeine KaffeineIface setNumber 8
repeat = 0
end
begin
prog = irexec
button = 9
config = dcop kaffeine KaffeineIface setNumber 9
repeat = 0
end
begin
prog = irexec
button = 0
config = dcop kaffeine KaffeineIface setNumber 0
repeat = 0
end
Pour finir, il faut ajouter au démarrage :
- Sur gnome : Système-Préférences-Sessions-Programmes au démarrage : irxevent puis irexec
- Sur kde :
kate ~/.kde/Autostart/irexec #!/bin/bash irexec
kate ~/.kde/Autostart/irxevent #!/bin/bash irxevent
chmod u+x ~/.kde/Autostart/irexec ~/.kde/Autostart/irxevent