Ça faisait longtemps que je cherchais un moyen de redéfinir une des touches de mon clavier ; après avoir « googlé » un peu partout, j'ai fini par trouver une solution que je vous livre ici. (Ce post n'est pas une question, c'est juste au cas où ça pourrait servir à quelqu'un qui aurait le même problème.)
Quand on utilise régulièrement un symbole qui n'est pas présent sur le clavier, on peut avoir envie de redéfinir une touche qui sert rarement voire jamais. Par exemple, je voulais pouvoir utiliser le caractère « Ç » sans avoir à taper [Alt Gr]+[Shift]+[ç] ou [Compose], [,], [Shift]+[C]. Je voulais redéfinir une des touches qui ne me sert jamais, par exemple « µ » ou « § ».
Pour changer la définition d'une touche, on peut modifier un fichier texte qui se trouve dans le répertoire
/usr/share/X11/xkb/symbols (nota: ce répertoire a changé depuis Intrepid Ibex; avant, c'était /etc/X11/xkb/symbols si je me souviens bien). Ce répertoire contient des fichiers texte dont le nom correspond aux différentes dispositions de claviers, tels que
us,
en,
fr, etc. Ces fichiers sont commentés et sont assez simples à comprendre. En gros, il suffit de modifier le fichier avec un éditeur de texte, par exemple :
cd /usr/share/X11/xkb/symbols
sudo gedit fr
Il faut évidemment remplacer « fr » par le nom de la disposition de clavier qu'on utilise. Le fichier comprend plusieurs sections ; si on n'est pas sûr de la section que l'on doit modifier, on peut utiliser la commande
setxkbmap -print, ce qui donne chez moi :
ledoc@Titou:~$ setxkbmap -print
xkb_keymap {
xkb_keycodes { include "evdev+aliases(azerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+fr(oss)+gr(polytonic):2+fr(bepo):3+us(dvorak-intl):4+inet(evdev)+level3(ralt_switch_for_alts_toggle):1+level3(ralt_switch_for_alts_toggle):2+level3(ralt_switch_for_alts_toggle):3+level3(ralt_switch_for_alts_toggle):4+group(alts_toggle)+compose(lwin)" };
xkb_geometry { include "pc(pc104)" };
};
La partie intéressante ici est la ligne qui commence par
xkb_symbols. L'expression « fr(oss) » indique qu'on utilise la section « oss » dans le fichier « fr ». Le début d'une section ressemble à ceci :
xkb_symbols "oss" {. Chaque section comprend un certain nombre de lignes qui définissent les différentes touches. Par exemple :
key <AB10> { [ exclam, section, exclamdown, 0x1002212 ] }; // ! § ¡ −
Cette ligne décrit la touche <AB10>, qui produit seule le point d'exclamation [!], avec [Maj] le caractère « section » [§], avec [Alt Gr] le point d'exclamation inversé [¡], et avec [Maj]+[Alr Gr] le tiret semi-cadratin [−]. Comme je n'utilise jamais le caractère « § », je l'ai remplacé par « Ç » :
key <AB10> { [ exclam, Ç, exclamdown, 0x1002212 ] }; // ! Ç ¡ −
Il suffit ensuite de réinitialiser le serveur X en se déconnectant et en se reconnectant, et voilà. (Voir la
mise à jour ci-dessous)
Ce n'est peut-être pas la meilleure solution, mais elle fonctionne pour moi. Si vous avez des suggestions, n'hésitez pas à laisser un commentaire.
Mise à jour (2013-11-09) : Depuis Ubuntu 13.10, des versions pré-compilées sont stockées en cache dans le répertoire
/var/lib/xkb. Si vous modifiez un fichier
symbol, il faudra effacer le ou les fichiers
.xkm pour que la modification ait lieu :
sudo rm /var/lib/xkb/*.xkm