Configurer les touches mutimédia
Auteur : Olivier BOYER - oboyer () ajoute ! org
Mots clés
Linux, mutimédia, clavier, lineakd, esay access, dell, inspiron 6000
Introduction
Le but de ce document est d'expliquer comme associer des actions aux 8 touches multimédia de façade sur un portable DELL Inspiron 6000.
J'utilise LinEAK (Linux support for Easy Access and Internet Keyboards) de Sheldon Lee Wen et Mark Smulders. Le projet est à l'adresse http://lineak.sourceforge.net
Normalement ce daemon est lancé par chaque utilisateur lors de son ouverture de session graphique. Cela impose d'avoir un fichier de configuration par utilisateur. Dans la configuration qui suit, j'ai voulu :
- avoir un fichier de configuration général, utilisé par défaut
- avoir un fichier propre à un utilisateur, utilisé s'il existe
- que lineakd soit lancé automatiquement à l'ouverture de la session graphique d'un utilisateur
- que lineakd s'exécute sous l'identité de l'utilisateur qui a ouvert la session X.
Voici les étapes à suivre.
Modifier le fichier /etc/lineakkb.def
Dans l'installation standard de la Ubuntu, lineakd est déjà installé. Il faut cependant ajouter la définition du clavier du DELL Inspiron 6000 à son fichier de configuration /etc/lineakkb.def.
Ajouter les lignes suivantes pour définir les touches multimédia :
#### Aditionnal Keyboards #### [DELL-6000] brandname = "Dell" modelname = "Dell Inspiron 6000" [KEYS] Play = 162 Previous = 144 Next = 153 Stop = 164 VolumeUp = 176 VolumeDown = 174 Mute = 160 [END KEYS] [END DELL-6000] #### END Aditionnal Keyboards ####
Créer le fichier /etc/lineak/lineakd.conf
J'ai décidé que le fichier /etc/lineak/lineakd.conf serait le fichier général de lineakd (option '-f' du daemon).
Créez le répertoire :
# mkdir /etc/lineak
Puis, créez le fichier comme suit :
# /etc/lineak/lineakd.conf # # Created by Olivier BOYER # This is system wide definitions for Linux Easy Access Keybord daemon # See lineakd(1) # This file is optional. It has been created to provide system wide # lineakd settings. Lineakd is started at SessionTime, if local users # don't have a $HOME/lineak/lineakd.conf file. # See /etc/X11/Xsession.d/80-lineakd_start file # LinEAK - Linux support for Easy Access and Internet Keyboards # Copyright (c) 2001,2002, 2003 Sheldon Lee Wen <leewsb@hotmail.com> # 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 = internal Display_pos = bottom Display_soffset = 1 Display_timeout = 3 Display_voffset = 50 KeyboardType = DELL-6000 MixerDevice = /dev/mixer RAWCommands = Screensaver = conffilename = /etc/lineak/lineakd.conf keystate_capslock = keystate_numlock = keystate_scrolllock = Mute = "amixer sset Master toggle" Next = "xmms -f" Play = "xmms --play-pause" Previous = "xmms -r" Stop = "xmms -s" VolumeDown = "amixer sset Master 5%-" VolumeUp = "amixer sset Master 5%+ unmute" #EOF
Créer le fichier /etc/X11/Xsession.d/80-lineakd_start
Le mécanisme d'ouverture de session X utilisé (Xsession) exécute, à chaque ouverture, les scripts du répertoire /etc/X11/Xsession.d sous l'identité de l'utilisateur.
Ainsi, pour lancer lineakd à chaque ouverture de session pour tous les utilisateurs, créez le fichier /etc/X11/Xsession.d/80-lineakd_start, comme suit :
/etc/X11/Xsession.d/80-lineakd_start
# Start lineakd(1) [Linux Easy Access Keys] daemon,
# at every gdm session, for all users
# If user doesn't have $HOME/lineak/lineakd.conf file, start default one
# default conf : /etc/lineak/lineakd.conf
[ -z "$HOME" ] && exit 0
_sysconf=/etc/lineak/lineakd.conf
_userconf=$HOME/lineak/lineakd.conf
_lineakd=/usr/bin/lineakd
if [ -r ${_userconf} ] ; then
echo "Start lineakd with user'configuration"
${_lineakd} &
elif [ -r ${_sysconf} ] ; then
echo "Start lineakd with system configuration"
${_lineakd} -f ${_sysconf} &
else
echo
echo "ERROR in /etc/X11/Xsession.d/80-lineakd_start file"
echo "ERROR: Can not start lineakbd"
echo "ERROR:${_sysconf}: no such file or directory"
echo
fi
fi
#EOF
Le daemon lineakd sera donc lancé sous l'identité de l'utilisateur à chaque ouverture de sessionX. Si l'utilisateur possède son propre fichier de configuration de lineakd, alors il sera lu, sinon, c'est celui par défaut qui sera pris en compte.