Xmodmap
Un article de Diablotins.org.
|
C'est un utilitaire pour X qui permet de modifier la correspondances entre les symboles du clavier de X et les codes générés par votre clavier.
Il faut donc distinguer les «codes de touches» de votre clavier, des «étiquettes de touches» de X.
Il y a loin de la touche physique à son comportement dans vos logiciels.
Sommaire |
Xmodmap
La commande s'utilise simplement,
- pour les consulter
xmodmap -pk
- pour éditer les associations:
xmodmap -e Expressions
L'expression peut être un fichier ou des instructions encadrées de «"».
Vous pouvez simplement le créer dans votre espace, pour avoir une disposition clavier
dédiée à un utilisateur: «.xmodmaprc»
Ce fichier doit suivre une grammaire particulière:
- keycode code = étiquette(s)
Vous associez à ce code une ou plusieurs étiquettes de «touches». Le code est exprimé en décimal.
La liste des étiquettes se trouve dans «/usr/local/lib/X11/XKeysymDB».
Vous pouvez associer jusqu'à huit étiquettes à un code, qui correspondent à des combinaisons, décrites dans le paragraphe suivant.
Dans l'ordre:
- Aucune combinaison
- Shift
- Mod_Switch ( Alt-Gr )
- Les deux dernier.
Pour mieux comprendre, vérifions la touche «à »
$ xmodmap -pke | grep -i agrave keycode 19 = agrave 0 at Agrave at Agrave
Le code «19» nous donne
- «à » seul
- «0» en combinaison avec Shift,
- «@» en combinaison avec AltGr
- «À» en combinaison avec Shift + AltGr
$ xmodmap -pke | grep -i dollar keycode 35 = dollar sterling ecircumflex ediaeresis ecircumflex ediaeresis
$ £ ê ë
- keysym=étiquette(s)
Là , vous utilisez une étiquette plutôt qu'un code.
xmodmap -e "asterisk = asterisk mu threesuperior yen"
...ce qui m'évite de rechercher si «asterisk» est le code 51.
- pointer = Gauche, milieu, Droite.
Passez de gaucher à droitier:
xmodmap -e "pointer = 3 2 1"
Combinaisons
Aussi appelés modificateurs, ceux sont les huit possibilités de combinaisons autorisées par Xorg/X11. Voici la liste:
$ xmodmap -pm xmodmap: up to 3 keys per modifier, (keycodes in parentheses): shift Shift_L (0x32), Shift_R (0x3e) lock Caps_Lock (0x42) control Control_L (0x25), Control_R (0x6d) mod1 Alt_L (0x40), Meta_L (0x9c) mod2 Num_Lock (0x4d) mod3 mod4 Super_L (0x7f), Hyper_L (0x80) mod5 Mode_switch (0x5d), ISO_Level3_Shift (0x71), ISO_Level3_Shift (0x7c)
Vous pouvez la modifier à loisirs:
- clear combinaison: Supprime toute référence à ce modificateur:
xmodmap -e "clear lock"
...et CAPS-LOCK ne fonctionne plus. Rajoutons le:
- add modificateur=étiquette
xmodmap -e "add Lock = Caps_Lock"
Attention aux espaces.
- remove modificateur = Etiquette
Contrairement à «clear», ceci ne supprimer qu'une entrée de la liste.
Par exemple, supprimons la touche «control» de droite:
xmodmap -e "remove Control = Control_R"
Dans le détail
Utilisez la commande «xev», qui va vous décrire tout les codes reçus lors de la pression sur une touche.
setxkbmap
Au démarrage de X11, les codes sont générés d'un seul block par setxkbmap, plutôt que d'utiliser la fonction Xmodmap, assez lourde pour tout un clavier.
Aussi, SetXkbMap charge une _disposition de clavier_ (layout), à partir d'un modèle (model) de clavier et, sur une variante (variant)
Ces informations se retrouvent dans «/usr/local/share/X11/xkb».
Par exemple, la disposition fr : «/usr/local/share/X11/xkb/symbols/fr » qui inclue «/usr/local/share/X11/xkb/symbols/latin»
setxkbmap -layout fr
Ou, comme je l'ai défini pour mon bureau:
setxbkmap -model pc105 -layout fr -variant latin9
Composer des caractères
C'est le rôle de la touche «compose», mais, vous n'en avez pas !?
setxbkmap -option compose:rwin
Pour obtenir «æ», maintenez la touche windows de droite (rwin) et appuyez successivement sur «a» et «e».
Changez de disposition
Vous avez des logiciels qui ne comprennent pas le clavier fr, qui lisent directement les codes des touches ? Changez de clavier:
setxkbmap -layout us
ou mieux, définissez la touche Windows de gauche pour changer de clavier à la volée:
setxkbmap -model pc105 -layout fr,us -variant latin9, -option grp:lwin_toggle
Combinez le tout:
setxkbmap -model pc105 -layout fr,us -variant latin9, -option grp:lwin_toggle,compose:rwin
Amusez vous:
ᮩßס¿Õõ
Méfiez vous de l'encodage que vous avez déclaré,
la plupart des caractères ci-dessus sont issus de UTF-8, ou au mieux, ISO-8859-1 (-15).
Il ne sert à rien de programmer des touches,
si l'interface graphique ne connaît pas de glyphe à afficher.
De la touche physique au glyphe, vous pouvez vous heurter encore à l'encodage puis à la police de caractère.
C'est pourquoi choisir une variante est important.
Conclusion
Vous pouvez parcourir tout le répertoire «/usr/local/share/X11/xkb» pour vous apercevoir que tout cela peut être excessivement complexe.
