Keyboard

De ArchwikiFR


Cette page est dédiée aux informations concernant le clavier.


La gestion du clavier par une console virtuelle (ttyx)

La gestion du clavier et des fontes utilisés par une console virtuelle requiert le paquet kbd. C'est aussi ce paquet qui contient les outils (de bas-niveau) pour la gestion des consoles virtuelles.

Au démarrage, le kernel lit la variable KEYMAP située dans /etc/vconsole.conf. Par exemple :

KEYMAP=fr-latin1

Cette variable fait référence à un fichier de configuration du clavier, indiquant le 'mapping' entre les touches enfoncées et le caractère équivalent correspondant à cette touche. Ce fichier de mapping se trouve sous forme compressé map.gz. Il se situe à l'arborescence suivante : /usr/share/kbd/keymaps/i386/. Un nombre important de mappings de clavier existe, pour différentes sortes de machines, plus ou moins anciennes, plus ou moins exotiques. Voir bépo.

La liste complète peut être obtenue par :

$find /usr/share/kbd/keymaps/ -type f

ou bien

$localectl list-keymaps
Note : Cette dernière ne donne que le nom du mapping, sans l'extension (.map.gz), ni le chemin.


Pour connaître le statut du type de clavier ainsi que les différents paramètres (comme les locales) :

$localectl status


Choix du « bon » mapping

Cela dépend évidemment du type de clavier utilisé. Si c'est un clavier azerty, il faudra choisir 'fr', si le clavier ou l'habitude fait que l'on utilise un clavier qwerty, il faudra choisir un mapping 'us', sachant que l'on risque de se retrouver sans accents. Pour le clavier 'fr', latin1 fr-latin1 permet de coder presque tous les accents (pour autant, il n'est pas sûr que le mapping correspondant existe ou puisse être trouvé facilement). Le remplaçant de fr-latin1 est 'latin9', fr-latin9, qui rajoute certains caractères tels que le symbole euro « € ».

Note : Latin-1 et ISO-8859-1 sont synonymes; tandis que ISO-8859-15 est équivalent à Latin9.


Charger temporairement un mapping :

La commande loadkeys, exécutée en root, permet de charger un nouveau clavier :

$loadkeys us
Attention : Le changement prend effet immédiatement et pour toute la session !


Générer son propre mapping du clavier

Il est possible de créer son propre fichier de mapping, il faut pour cela créer un fichier .map, soit dans /usr/kbd/keymaps/"répertoire_perso" soit simplement dans ~/, peu importe. À ce stade, il peux être utile de s'inspirer des claviers déjà existant, en ouvrant les 'fr-latin1', 'latin9', etc.

Le principe est simple : à chaque touche correspond un scancode et à chaque scancode correspond un caractère ou une touche fonction. Les touches fonctions ont un nom de type « F32 » ; qui va permettre de remplir la table des chaines de caractères du noyau (kernel string table). Par exemple :

keycode 67 = F10 F11 
string F10 = "Hello."
string F11 = "Goodbye!"

affichera (le scancode 67 correspondant chez moi à la touche F9), la chaine Hello. Shift-F9, affichera quand à lui Goodbye!.

Il est possible de faire des raccourcis (plus ou moins) intéressants. Par exemple :

keycode 68 = F12
string F12 = "date\n"

Permet d'exécuter la commande 'date' et d'afficher le timestamp actuel.

Des mots clef existent soit pour donner plus d'informations sur le keycode considéré, soit pour donner des informations sur le caractère à afficher. Par exemple :

altgr keycode 18 = currency

Signifie : pour le keycode 18 (correspond à la touche «e»), lorsque l'on presse aussi altgr, affiche le caractère «€».

Pour tester ce mapping :

$loadkeys mon_mapping.map 

sera suffisant. Sur la manière correcte de créer ce ficher de mapping, un man keymaps(5) ne sera pas superflu. Voir aussi, en plus, du showkeys précédent, le programme dumpkeys, qui s'avèrera très utile.

Enfin, quand le mapping est concluant, il faut mettre à jour le KEYMAP avec le mapping mis à jour. Cependant, comme le KEYMAP ne contient plus le nom du clavier d'origine, il peut être judicieux de faire un include du fichier correspondant. Par exemple, dans mon fichier de mapping personnel, il y a cet include: include "/usr/share/kbd/keymaps/i386/azerty/fr-latin1.map.gz"

Note : Il faut indiquer le chemin complet du fichier de mapping.


La touche « compose »

La touche compose permet une combinaison de touches pour former des caractères diacritiques, notamment certains accents au-dessus de certains caractères - comme le tilde -, ou d'autres caractères Unicodes. Si cette touche peux être prévue sur certains claviers (clavier Sun, DEC...), elle n'est généralement pas prévue sur les claviers grand public. Il est néanmoins possible de la configurer, en rajoutant le keycode souhaité et indiquant Compose comme nom de touche dans le fichier de mapping: Ainsi :

keycode 125 = Compose 

permet d'utiliser la touche Windows comme touche compose.

La liste des touches compose peut se trouver ici /usr/share/kbd/keymaps/include/compose.'le-type-de-mapping' ou là /usr/share/kbd/keymaps/include/compose.latin1


Compositions utiles

Si la clavier chargé au démarrage ne comporte pas certains caractères, par exemple ceux ayant des ligatures (tels que le « e dans l'o » : « œ »; ou « æ ») il peut être utile, si l'on a besoin de les utiliser souvent, de les rajouter grâce à la touche de composition. Par exemple :

compose 'o' + 'e' to U+0153

permet d'afficher le caractère « œ », ayant le code unicode « 0153 », si l'on fait compose puis o puis e.

Attention : Le bon affichage du caractère - ici U+0153 - va dépendre de sa présence dans la fonte courante.

Il est possible de rajouter dans son fichier de mapping personnel des compositions supplémentaires, pour peu que la fonte courante permette d'afficher le caractère en question.


La gestion du clavier sous X11

Voir Xmodmap.