LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


opensuse:config_touches_fn

Configuration avancée du clavier :: introduction

Bienvenue dans la magie de Xorg ! Vous trouverez ici un mode opératoire simple et élégant pour modifier le mappage de votre clavier et l'affectation des boutons de votre souris.

À l'origine, il s'agissait pour l'auteur de retrouver l'usage des touches Fn de son clavier de portable -c'est donc ce cheminement que nous allons suivre, mais il peut tout à fait servir pour configurer très finement son clavier et affecter à des touches, combinaisons de touches ou boutons tout un tas d'actions gérées par Xorg, voire même configurer un mappage par utilisateur du système !

Ce tutoriel est librement inspiré de celui-ci (ubuntu-fr) mais il est de loin bien plus simple et surtout en contourne un défaut potentiel relatif à la configuration de base du clavier.

Conditions liminaires

  • Avoir un serveur X à peu près fonctionnel ;
  • savoir se servir un peu de la ligne de commande ;
  • ouvrir trois terminaux virtuels sous X.

Légende

  • ligne de code commençant par $ = action à effectuer en tant qu'utilisateur
  • ligne de code commençant par # = action à effectuer en tant que root

Déroulé

La méthode que nous allons suivre est la suivante :

  • récupération des actions à affecter (augmenter le volume sonore par exemple) ;
  • récupération du keycode des combinaisons de touches ou de boutons qui nous intéressent ;
  • création d'un fichier de configuration personnalisé ;
  • test ;
  • mise en place permanente des modifications.

Identification des actions gérées par X

Dans le premier terminal, entrez la commande :

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

On obtient une sortie de ce genre :

! The definitions here should match <X11/XF86keysym.h>

XF86ModeLock            :1008FF01

XF86MonBrightnessUp     :1008FF02

XF86MonBrightnessDown   :1008FF03

XF86KbdLightOnOff       :1008FF04

XF86KbdBrightnessUp     :1008FF05

XF86KbdBrightnessDown   :1008FF06

XF86Standby             :1008FF10

XF86AudioLowerVolume    :1008FF11

XF86AudioMute           :1008FF12

XF86AudioRaiseVolume    :1008FF13

XF86AudioPlay           :1008FF14

XF86AudioStop           :1008FF15

XF86AudioPrev           :1008FF16

XF86AudioNext           :1008FF17

XF86HomePage            :1008FF18

XF86Mail                :1008FF19

XF86Start               :1008FF1A

XF86Search              :1008FF1B

XF86AudioRecord         :1008FF1C

XF86Calculator          :1008FF1D

[...]

Il faut ici choisir les actions qui nous intéressent. En l'occurrence et pour l'exemple : XF86AudioLowerVolume,

XF86AudioMute, et XF86AudioRaiseVolume.

Identification des combinaisons de touches

L'utilitaire xev

xev est un des utilitaires de xorg. Il permet d'afficher certaines informations relatives aux évènements d'entrée de X, notamment ceux créés par nous à l'aide du clavier ou la souris.

Quand on le lance dans un terminal sous X, une petite fenêtre s'ouvre : elle doit être active pour surveiller ce qui se passe et afficher dans le terminal le résultat des actions du clavier ou de la souris. Pour quitter xev, fermez cette petite fenêtre.

Récupération des keycode

Dans le second terminal, lancez xev :

$ xev

Voici ce qui s'affiche quand on presse puis relâche la touche “flèche bas” :

KeyPress event, serial 31, synthetic NO, window 0x1e00001,

    root 0x87, subw 0x0, time 12858900, (610,-381), root:(612,67),

    state 0x0, keycode 104 (keysym 0xff54, Down), same_screen YES,

    XLookupString gives 0 bytes:

    XmbLookupString gives 0 bytes:

    XFilterEvent returns: False



KeyRelease event, serial 34, synthetic NO, window 0x1e00001,

    root 0x87, subw 0x0, time 12858994, (610,-381), root:(612,67),

    state 0x0, keycode 104 (keysym 0xff54, Down), same_screen YES,

    XLookupString gives 0 bytes:

    XFilterEvent returns: False

Ce qui nous intéresse, c'est cette partie : keycode 104 (keysym 0xff54, Down). Cela nous dit que la touche en question a le keycode n° 104 et que ce code est associé à une action particulière “Down”.

Quand une touche ou une combinaison n'a pas d'action attribuée, on a la sortie suivante :

KeyRelease event, serial 35, synthetic NO, window 0x1e00001,

    root 0x87, subw 0x0, time 13186503, (708,-91), root:(710,357),

    state 0x0, keycode 223 (keysym 0x0, NoSymbol), same_screen YES,

    XLookupString gives 0 bytes:

    XFilterEvent returns: False

On voit clairement le (keysym 0x0, NoSymbol) qui signifie que cet évènement de keycode 223 n'entraîne aucune action. C'est le cas pour certaines de mes combinaison Fn+[touches_bleues] et c'est ce que nous allons changer.

Repérez les combinaisons de touches qui vous intéressent et vérifiez bien qu'aucune action ne leur est attribuée. Si par hasard il y en a déjà une, passez directement à la seconde étape du § Test.

Création du fichier de configuration

Dans le troisième terminal (ou à l'aide de votre éditeur de texte favori), créez le fichier /home/votre_nom/.xmodmap.conf et remplissez-le comme suit :

# Hacking de clavier par Toto "la rotule de la M0r7" 

keycode 160 = XF86AudioMute

keycode 174 = XF86AudioLowerVolume

keycode 176 = XF86AudioRaiseVolume

Comme vous l'aurez compris, les numéros de keycode sont trouvés grâce à xev (second terminal), et le nom des actions XF86 proviennent du premier terminal.

Test

Dans le troisième terminal :

$ xmodmap /home/toto/.xmodmap.conf

De deux choses l'une : le test est positif, ou pas ! S'il ne l'est pas, rien n'est perdu : dans la configuration de votre environnement graphique, trouvez l'application qui gère le volume sonore, et affectez aux actions augmenter, diminuer, tuer le volume les raccourcis que vous venez de configurer. Re-testez, normalement ça devrait fonctionner.

Rendre les modifications permanentes

Si vous souhaitez rendre ces modifications disponibles pour tous vos utilisateurs, effectuez la manipulation suivante :

# mv /home/toto/.xmodmap.conf /etc/xmodmap.conf

Pour finir, configurez votre environnement graphique pour qu'il exécute à chaque démarrage la commande :

  • xmodmap /etc/xmodmap.conf (cas de la configuration générale) ;
  • ou xmodmap /home/toto/.xmodmap.conf (cas de la configuration particulière à l'utilisateur toto).

Pour KDE

Dans /home/toto/.kde/Autostart créez un fichier de nom quelconque (par exemple xmodmap) et gavez-le :

#!/bin/sh

xmodmap /etc/xmodmap.conf

Rendez-le exécutable (clic droit, “droits d'accès”, puis cochez “est exécutable”) :

chmod +x /home/toto/.kde/Autostart/xmodmap

Et voilà !

Quelques explications

La commande xmodmap permet de modifier finement le comportement du clavier ou de la souris, mais aussi d'afficher la configuration en cours :

xmodmap -pke

Regardez de près le résultat de cette commande, vous verrez que la signification de chaque touche (quand il y en a une) est précisée. Les plus aguerris auront remarqué que cette sortie est sensible à la configuration du clavier (notamment son mappage) et qu'elle fait la synthèse entre ce qui est défini dans la partie Keyboard du /etc/X11/xorg.conf et dans notre /etc/xmodmap.conf.

:!: Ce qui est défini dans notre xmodmap.conf et exécuté avec xmodmap a priorité sur la configuration du clavier de xorg.conf.

Une petite application : un mappage par utilisateur

Nous allons simplement utiliser la propriété précédente pour configurer le mappage du clavier par utilisateur (cas de madame qui ne supporte pas le mappage dvorak sur l'ordi familial) !

On suppose notre xmodmap.conf configuré a minima et aux petits oignons, nous sommes connectés sous la session de l'utilisateur toto, la configuration du clavier dans xorg.conf (ou dans Yast) est fixée à celle que bon vous semble. Faites :

$ xmodmap -pke > /home/toto/.xmodmap.conf

$ xmodmap /home/toto/.xmodmap.conf

Ensuite, modifiez en root) le xorg.conf avec une autre configuration du clavier pour l'utilisateur mme_toto, déconnectez-vous, redémarrez X et logguez-vous sous la session de mme_toto. Recommencez l'opération précédente avec pour sortie le fichier /home/mme_toto/.xmodmap.conf.

Assurez-vous que chaque session utilisateur exécute bien au lancement la commande xmodmap /home/xxxx/.xmodmap.conf. C'est fini.

D'autres pistes

On peut donc même se permettre le luxe de distraire seulement une ou deux touches de leur signification initiale rien qu'en modifiant notre xmodmap.conf. Ce peut être le cas pour avoir à portée de main des symboles compliqués ou mieux, mélanger certaines attributions des variantes de clavier français oss et latin9, par exemple.

Bref, les explications simples s'arrêtent là, les plus aventureux se débrouilleront bien tout seuls ;) !

opensuse/config_touches_fn.txt · Dernière modification : 2018/11/17 12:53 de 127.0.0.1