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

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.

Première partie : collecte d’informations et essais

Tâtonnons un peu...

Les touches spéciales de l’Acer (mais aussi d’autres marques comme Fujitsu ou Medion) nécessitent un driver particulier : acerhk [1].

Celui-ci reconnait un certain nombre de séries de portables Acer mais pas le notre, trop récent. L’installation du driver par la commande « modprobe acerhk » écrit ceci dans le journal (/var/log/messages) :

May  7 06:57:25 localhost kernel: input: Acer hotkey driver as /class/input/input4
May  7 06:57:25 localhost kernel: acerhk: Could not find model string, will assume type 200 series
May  7 06:57:25 localhost kernel: Acer Travelmate hotkey driver v0.5.33[[A ce jour, la version 0.5.35 est sortie]]

L’indication est claire : faute de reconnaitre notre ordinateur, il essaye de se comporter comme un Acer Travelmate 200.

Nous allons devoir effectuer des tests et pour cela deux outils sont nécessaires. l’utilitaire XEV donne toutes indications sur les touches appuyées et reconnues par le système tandis que notre journal « /var/log/messages » nous informera sur les touches inconnues. Installez Xev avec l’outil dont vous avez l’habitude. Pour moi, ce sera « urpmi xev ».

Nous ouvrons donc deux consoles. Dans la première, nous lançerons Xev et dans la seconde, nous afficherons en temps réel le journal par la commande « tail -f /var/log/messages ». Xev ouvre une fenêtre carrée à fond blanc. Celle-ci doit être active mais ne pas recouvrir nos deux consoles. Une fois ces deux consoles à l’écran, appuyons sur les touches spéciales ACER. 1, 2 puis 3 et 4 touches ne donnent rien : ni la console xev, ni la console des messages ne nous donne d’information.

Il va donc falloir faire reconnaître notre portable au driver Acerhk. Pour cela, une option lors de l’installation du driver va nous y aider : « force-series ». Déchargeons le driver de la mémoire et rechargeons-le avec l’option :

rmmod acerhk
modprobe acerhk force-series=290

En téléchargeant le fichier tar.gz sur le site de l’auteur, on peut se rendre compte au tout début du fichier acerhk.h qu’i existe 3 familles : tm_old dont fait partie la série 200 qui a été attribuée par défaut lors du premier modprobe, tm_new dont fait partie la série 240 et dritek dont fait partie la série 290.

La série 240 n’ayant rien donné avec ce travelmate 2492, nous essayons la série 290 et là, notre essai est fructueux. Pour certaines touches, la fenêtre des messages affiche :

May  7 21:16:18 localhost kernel: atkbd.c: Unknown key released (translated set 2, code 0xb4 on isa0060/serio0).
May  7 21:16:18 localhost kernel: atkbd.c: Use 'setkeycodes e034 <keycode>' to make it known.

Tandis que pour d’autres, c’est xev qui nous annonce :
.

KeyRelease event, serial 26, synthetic NO, window 0x1a00001,
    root 0x5d, subw 0x0, time 1107834, (90,374), root:(98,426),
    state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
"   XLookupString gives 1 bytes: (0d) "

Bingo, nous sommes dans la bonne famille de touches. Il ne reste qu’à tester toutes les séries et trouver celle qui va fonctionner le mieux avec notre portable. Mes essais ont donné le résultat suivant : avec la série 4650, nous obtenons l’ensemble des touches et la led mail fonctionne. Par contre, aucune série n’allume les led wifi et bluetooth (mais mon portable n’ayant que les leds mais pas de chipset wifi et bluetooth, ça n’a rien d’étonnant).

une touche => un scancode => un keycode => un nom symbolique

Chaque touche est d’abord référencée dans le noyau par un scancode (numéro de référence dépendant du matériel). Pour chaque scancode connu, le kernel attribue un keycode en fonction de la disposition du clavier que l’on a déclaré. Ainsi, la seconde touche de la seconde ligne aura toujours le même scancode mais selon que l’on déclare avoir un clavier français (azerty) ou anglais (qwerty), le kernel attribuera le keycode 31 ou 38 à cette touche. Le keycode 31 deviendra un a (nom symbolique) tandis que l’autre sera lié au nom symbolique q.

Nous allons donc recueillir les scancodes et keycodes de toutes nos touches particulières liées au clavier Acer soit en lisant la fenêtre message pour les scancodes (de la forme e073), soit en lisant la fenêtre xev pour les keycodes.

Touches situées à côté du bouton de mise en marche :


 Touche "messagerie" : keycode 236
 Touche "Navigateur" : keycode 178
 Touche "P" programmable : e073
 Touche "Acer Empowering Technology" (e) : e074

Touches à côté du haut-parleur gauche :


 Touche wifi : e043
 Touche Bluetooth droit : e077
 Touche Bluetooth gauche : keycode 181

Touches spéciales sur le clavier traditionnel :


 Touche € : e033
 Touche $ : e034
 Touche Aide Acer Fn+F1 : e025
 Touche Acer e-Setting Fn+F2 : e026
 Touche Acer e-Power Fn+F3 : e027
 Touche Son marche/arrêt Fn+F8 : keycode 160
 Touche augmenter le volume : keycode 176
 Touche baisser le volume : keycode 174

Remarques :
 les touches € et $ sont celles situées de part et d’autre des touches fléchées. Elles viennent en doublon des touches altgr+e et £/$ traditionnelles.
 les touches Fn+F4 à Fn+F7 dirigent le matériel directement. On n’a pas besoin de s’en occuper.

Suite : Partie 2 : Attribuons à nos touches leurs fonctions
Partie 3 : Automatisons tout ça