samedi 28 juillet 2007

Activer les touches multimédia sous Xorg

Étant l'heureux possesseur d'un portable DELL D800, je me suis dit qu'il serait intéressant d'enfin utiliser les touches multimédia de son clavier. Pour celà, il m'a fallu faire quelques recherches et trouver comment Xorg pouvait être customiser pour gérer ces touches.
  • Voir si les touches multimédia sont reconnues par Xorg
    • Sous X, lancer la commande xev
    • Pendant l'éxécution de la commande, appuyez sur les touches multimédia que vous voulez gérer
    • Exemple :
      KeyPress event, serial 32, synthetic NO, window 0x1a00001, root 0x139, subw 0x0, time 17734420, (-208,516), root:(817,517), state 0x0, keycode 176 (keysym 0x0, NoSymbol), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False KeyRelease event, serial 32, synthetic NO, window 0x1a00001, root 0x139, subw 0x0, time 17734587, (-208,516), root:(817,517), state 0x0, keycode 176 (keysym 0x0, NoSymbol), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False
      On peut voir ici le résultat de la commande xev après que la touche multimédia "augmenter le son" ait été appuyée. Notez le keycode de la touche (ici 176)
  • Paramétrer son fichier ~/.Xmodmap en conséquence En conservant l'exemple précédent, on peut voir que la touche "augmenter le son" possède le keycode 176. Pour pouvoir l'activer sous Xorg, il nous faut maintenant éditer le fichier :
    nano ~/.Xmodmap
    et d'y insérer la ligne suivante :
    keycode 176 = XF86AudioRaiseVolume
    Xmodmap, permet de mapper le keycode avec un symbole, ici, on mappe le keycode 176 à la touche XF86AudioRaiseVolume. On aurait très bien pu associer la touche "augmenter le son" à la touche 'a' (qui est sans aucun intérêt dans notre cas, sauf si on veut qu'à chaque appuie sur la touche 'a', le son augmente...):
    keycode 176 = a
    La liste des symboles (keysyms) sont disponible, pour Xorg, dans le fichier :
    /usr/include/xorg/atKeynames.h
La dernière étape consiste à charger le fichier ~/.Xmodmap avant le chargement du window manager. Pour ce faire, il suffit d'éditer le fichier ~/.xinitrc et d'y ajouter la ligne :
exec xmodmap ~/.Xmodmap &
À partir de maintenant, n'importe quel window manager sera capable de gérer ces touches. Exemple avec fvwm :
Key XF86AudioRaiseVolume A N Exec exec amixer -q set Master 1+ unmute

Aucun commentaire: