Les touches spéciales ACER sous Mandriva Linux (2)

Dans cet article, nous allons programmer les touches multimédia de l’Acer Travelmate 2493. Dans une première partie, nous verrons la démarche de détection utilisée ce qui permettra aux utilisateurs d’autres modèles d’ordinateur portable de l’adapter. Dans une seconde partie, nous associerons les commandes aux touches ; Les plus pressés iront directement à la troisième partie où nous mettrons le résultat de nos recherches pour que ces touches soient actives à chaque démarrage.

Deuxième partie : relions la fonction à la touche

Du scancode au keycode pour toutes nos touches

Pour toutes celles qui ont déjà un keycode d’attribué, on a gagné une étape. Pour les autres, il va falloir y faire correspondre un keycode non affecté.

[ 19 mai 2007 Si vous faites les mises à jours de votre mandriva, ce paragraphe ne vous concerne plus]
Ici, nous sommes confronté à un problème mandrivien[bug résolu 6 jours après cet article] : la commande setkeycodes n’accepte pas les keycodes supérieurs à 128. Or, il ne reste que 101, 120, 122 et 123 disponibles. Insuffisant pour utiliser toutes nos touches sans keycode. On va donc remplacer le paquetage console-tools par un paquetage console-tools corrigé que l’on trouve ici :

http://anorien.warwick.ac.uk/mirror...

Et dans ce dossier, on a juste besoin des deux paquetages suivants :
console-tools-0.2.3-61mdv2007.0.i586.rpm
libconsole0-0.2.3-61mdv2007.0.i586.rpm
(Les utilisateurs de version x64 devront utiiser les paquetages src pour adapter à leur situation). On les télécharge et les installe par nos commandes habituels (urpmi ou outil graphique) ou bien on ajoute ce miroir à notre liste de médias pour ensuite installer.
[Fin du paragraphe mise à jour 19 mai 2007]

C’est fait ? Et bien allons-y !

getkeycodes
setkeycodes e077 101 e043 120 e073 122 e074 123 e025 129 e026 130 e027 131 e033 132 e034 027

La première commande nous permet de trouver les keycodes non attribués tandis que la seconde permet de faire l’attribution. La suite d’arguments de setkeycodes consiste en un scancode (préfixé avec un e) suivi de un keycode (non préfixé). On peut également scinder en autant de commandes setkeycodes que de touches à définir pourvu que l’on mette à chaque fois un scancode suivi d’un keycode.

Notez particulièrement , les deux paires : "e033 132" et "e034 027" qui correspondent respectivement aux touches € et $ de part et d’autre du clavier "fléches" : dans le cas de la touche €, on attribue un keycode disponible (le 132). Par contre, pour le signe $, on attribue le keycode 027. En effet, il existait déjà une touche $, en assignant le même numéro à la nouvelle touche $, on ne fait que dire "c’est la même touche" (elle fera donc £ avec maj enfoncée). On ne peut pas le faire avec le € car il n’existait pas de touche € : on l’obtient normalement par la combinaison de deux touches (Alt Gr+e).

Du keycode au nommage symbolique

La numérotation entre xev et getkeycodes/setkeycode est différente (Je n’ai pas bien compris pourquoi). Un coup de xev dont vous avez maintenant l’habitude nous permet de mettre à jour notre liste de touches :

 Touche "messagerie" : 236
 Touche "Navigateur" : 178
 Touche "P" programmable : 209
 Touche "Acer Empowering Technology" (e) : 210
 Touche wifi : 139
 Touche Bluetooth droit : 132
 Touche Bluetooth gauche : 181
 Touche € : 140
 Touche $ : 27
 Touche Aide Acer Fn+F1 : 133
 Touche Acer e-Setting Fn+F2 : 134
 Touche Acer e-Power Fn+F3 : 135
 Touche Son marche/arrêt Fn+F8 : 160
 Touche augmenter le volume : 176
 Touche baisser le volume : 174

Il ne reste plus qu’à assigner à ces touches un nom symbolique pour Xorg que ses windowmanagers comprendront (Kde, Gnome...)

La commande xmodmap va nous servir à ça. Dans un premier temps, créez un tableau de correspondance keycode-touches symboliques :

xmodmap -pke > ~/.xmodmap.conf

il ne reste qu’à modifier les lignes vides de nos touches spéciales dans le fichier .xmodmap.conf. Par exemple, la 236 deviendra :
keycode 236 = XF86Mail
Et ainsi de suite :
 keycode 173 =
 keycode 174 = XF86AudioLowerVolume
 keycode 175 =
 keycode 176 = XF86AudioRaiseVolume
 keycode 177 =
 keycode 178 = XF86WWW
 keycode 179 =
 keycode 180 =

Vous trouverez tous les noms symboliques XF86 caractérisant les touches multimédia ave cette commande-ci :

cat /usr/share/X11/XKeysymDB |grep XF86  

Choisissez les noms symboliques qui vous conviennent même si vous n’êtes pas obligé de respecter leur signification (Encore une fois, c’est symbolique mais faisons au plus logique).

Une fois le fichier .xmodmap.conf corrigé, il faut le réinjecter dans l’application xmodmap de cette façon :
xmodmap ~/.xmodmap.conf

Bonus : la touche mail clignotant

Tapez donc la commande ci-dessous et observez votre clavier.

echo 1 > /proc/driver/acerhk/led

Marrant, n’est-ce pas ?
Evidemment, nous essayerons de nous en servir à la fin de cette série d’articles. En attendant, éteignez :

echo 0 > /proc/driver/acerhk/led

De XF86Kekchose au feu d’artifice

Voilà, c’est fini... Enfin presque. Nous devons maintenant assigner la commande tant désirée à la touche symbolique.

Sous Kde, c’est très facile. Lancez le centre de configuration KDE (menu-> Système -> Configuration -> centre de configuration KDE) et recherchez "actions d’entrée" que l’on trouve soit dans administration du système soit dans régionalisation et accessibilité. Cet outil est assez intuitif, nous verrons donc deux exemples : la touche mail et la touche d’augmentation du volume sonore.

Vous voyez un groupe qui s’appelle "Mentor office Wireless Keyboard" où la plupart de nos touches multimédia sont préprogrammées. Allons-y !

Pour la touche Mail, il existe une action préprogrammée qui s’appelle "mail client" que vous allez sélectionner. Dans la partie droite, vous êtes sur l’onglet "Général". Ce qui est important dans cet onglet, c’est le "type de l’action". Il existe plusieurs types d’actions. Notre touche Mail doit lancer notre logiciel de messagerie (thunderbird pour notre exemple). Il faut indiquer "Raccourci clavier -> Commande / URL à lancer".

Dans le 2ème onglet, nous allons choisir le raccourci tandis que le 3ème nous permet de définir la commande.

2ème onglet : Vous voyez une touche dessinée. C’est déjà XF86Mail ? Alors c’est bien, sinon cliquez sur cette touche. Une fenêtre surgissante vous propose alors de définir la touche principale. Cliquez sur la touche Mail de votre Acer et il apparait XF86Mail. Validez.

3ème onglet : ici, nous allons définir la commande à lancer : "/usr/bin/mozilla-thunderbird".

Votre touche "Acer Mail" est maintenant définie.

De la même manière, pour la coupure du son, nous allons définir la réaction en cas de déclenchement de Fn+F8. Nous allons créer une nouvelle action "mute volume" (si elle n’existe pas déjà). Sauf, qu’ici, nous ne cherchons pas à lancer une application mais à contrôler le son dans KDE. Le type d’action sera donc "Raccourci clavier -> Appel DCOP". Je passe sur la définition du raccourci mais ne l’oubliez pas.

L’onglet paramêtre DCOP va nous permettre de définir l’action liée à notre touche.
Kmix est l’application qui contrôle le volume sonore dans KDE, et le bouton "Lancer KDCOP" va vous donner, pour chaque application KDE, un catalogue des objets et commandes actionnables. Ici, c’est l’objet kmixer0 qui contrôle le premier chipset son et à l’intérieur on trouve ToggleMasterMute (j’en ai essayé plusieurs avant de comprendre que c’est celle-là. Le fait que les parenthèses soient vides signifie qu’on n’a besoin d’aucun paramètre.

On teste cette commande avec le bouton "test" et ça marche : mon petit haut-parleur à côté de l’horloge passe bien du bleu au gris-barré ! Il n’y a plus qu’à valider.

Vous ferez de même avec chacune des touches à définir. Pour la touche Euro, il faut, vous l’aviez deviné, choisir comme type d’action "Raccourci->Saisie au clavier" !

Suite : Partie 3 : Automatisons tout ça
Précédent : Partie 1 : collecte d’informations et essais