Clavier : Différence entre versions

De ArchwikiFR
m (Ajout Clavier ~~> catégorie : Configuration)
(Annulation des modifications 8182 de Foolecho (discussion))
 
(Une révision intermédiaire par le même utilisateur non affichée)
(Aucune différence)

Version actuelle datée du 26 mars 2020 à 10:33


Bien qu'il soit possible de passer une configuration de clavier directement au chargeur de démarrage, ceci ne sera pas évoqué ici l'intérêt étant assez faible.

Dès le chargement du noyau une disposition de clavier peut être exportée par l'intermédiaire de variables d'environnement. Plus tard, c'est Systemd, qui initialisera la console, et définira la configuration d'après le fichier vconsole.

Xorg enfin est configurable en écrivant des «hooks» que l'on place dans le dossier /etc/X11/xorg.conf.d/.

Changement « à la volée »

Note : le petit « fr » que l'on retrouve dans les deux exemples de commande suivants correspond à un mapping, adaptez celui-ci à vos besoin. Voir ci dessous #Obtenir la liste des dispositions disponibles.

Console virtuelle

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

loadkeys fr

Le changement prend effet immédiatement et perdure après la déconnexion.

Sous Xorg

setxkbmap, exécutée à l'intérieur du terminal d'une session graphique modifie la disposition pour la session en cours.

setxkbmap fr

Le changement prend effet immédiatement mais ne survivra pas à la session en cours.

Obtenir la liste des dispositions disponibles

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

$ localectl status

Un «mapping» est un fichier de configuration du clavier, indiquant les correspondances entre les touches enfoncées et le caractère correspondant à cette touche. Ce fichier se trouve sous forme compressé en xxxx.map.gz dans le dopssier /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 :

$ localectl list-keymaps

Dans le cas de Xorg, vous pouvez interroger les commandes suivantes:

$ localectl list-x11-keymap-layouts     ## liste les dispositions disponibles
$ localectl list-x11-keymap-models      ## liste les «models» des dispositions disponibles
$ localectl list-x11-keymap-options     ## liste les «options» des dispositions disponibles
$ localectl list-x11-keymap-variants    ## liste les «variantes» des dispositions disponibles

Mapping français

Pour un clavier français le «traditionnel» fr-latin1 permet de coder presque tous les accents. Son remplaçant moderne est 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.

A compléter

Attention : Les francophones hors de France devraient ajouter ici les informations qui pourraient leur être utile.

Enregistrer une configuration

Au moyen de Systemd

Une façon sûre et éfficace d'enregister une configuration de clavier est de passer par l'outil localectl, fourni par Systemd. Celui-ci:

  • modifie la variable d'environnement KEYMAP,
  • enregistre la variable KEYMAP dans le fichier /etc/vconsole.conf
  • modifie la disposition du clavier sous Xorg en créant/modifiant le fichier /etc/X11/xorg.conf.d/00-keyboard.conf
  • et enfin établie cette disposition pour la session en cours (depuis un tty)

Par exemple pour un clavier français:

localectl set-keymap fr

Depuis le noyau

Au démarrage, le kernel lit la variable KEYMAP. Par exemple:

KEYMAP=fr-latin1

Cette variable peut être passée au noyau directement par le chargeur de démarrage.

Le fichier vconsole

Systemd lors de son initialisation lira le contenu du fichier vconsole (/etc/vconsole.conf).

Pour modifier la configuration de la console, il suffit donc d'éditer ce fichier pour qu'il exporte la variable KEYMAP. Voir le lien ci-dessus pour les différentes options configurables par ce moyen.

Fichier: /etc/vconsole.conf
KEYMAP=fr
Note : Il est possible de forcer Systemd à ignorer le fichier vconsole en passant au noyau un paramètre tel vconsole.keymap=fr , voir la doc' de votre Chargeur de démarrage

Sous X

Les environnements graphiques fournissent généralement un outil de configuration du clavier, ce qui devrait être suffisant dans la majorité des cas. Cependant, régler la disposition du clavier directement par les fichiers de configuration de Xorg vous évitera de réitérer ce réglage pour chacun des utilisateurs et chacune des interfaces graphiques.

Voir ci dessous Clavier#Configuration avancée sous Xorg

Note : Certains environnements graphiques outrepassent volontairement la configuration par défaut de Xorg. Notamment GNOME, et KDE

Configuration avancée des consoles virtuelles

Générer sa propre disposition 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.

Configuration avancée sous Xorg

Pour modifier le type de clavier, créez un fichier nommé par exemple /etc/X11/xorg.conf.d/00-keyboard.conf.

Ainsi pour le configurer en azerty français:

Fichier: "/etc/X11/xorg.conf.d/00-keyboard.conf"
Section "InputClass"
    Identifier         "Keyboard Layout"
    MatchIsKeyboard    "yes"
    Option             "XkbLayout"  "fr"
    Option             "XkbVariant" "latin9" # accès aux caractères spéciaux plus logique avec "Alt Gr" (ex : « » avec "Alt Gr" w x)
EndSection

Voici les dispositions pour les autres claviers francophones:

bépo france suisse canada belge
XkbLayout fr fr ch ca be
XkbVariant bepo oss fr fr

La variante oss permet de taper tous les caractères nécessaires à l'écriture du français, exemple : œ Œo … « » æ Æ Ç É et d'autres encore.

Note : Les différentes options acceptables pour le clavier sont décrites dans les différentes sections (model, layout, variant, option) de /usr/share/X11/xkb/rules/xorg.lst.

Basculer la disposition clavier

Si vous désirez avoir plusieurs configurations de clavier disponibles pour l'ensemble des utilisateurs (pratique pour les environnements graphiques qui ne disposeraient pas de cette fonctionnalité), vous pouvez créer par exemple un fichier appelé /etc/X11/xorg.conf.d/00-keyboard.conf.

Par exemple, pour pouvoir basculer entre claviers français, allemand et suédois via la combinaison Shift gauche + Shift droit:

Fichier: "/etc/X11/xorg.conf.d/00-keyboard.conf"
Section "InputClass"
       Identifier             "keyboard Layout"
       MatchIsKeyboard        "on"
       Option "XkbLayout"     "fr, de, se"
       Option "XkbOptions"    "grp:shifts_toggle"
EndSection
Note : L'utilisateur peut également passer par l'utilitaire setxkbmap lorsque le serveur X est déjà lancé:
setxkbmap -layout "fr,de,se" -option "grp:shifts_toggle"
Astuce : Cela fonctionne également pour basculer d'une variante de clavier à une autre. Par exemple, pour passer du français latin9 (azerty classique) au bépo:
Section "InputClass"
       Identifier             "keyboard Layout"
       MatchIsKeyboard        "on"
       Option "XkbLayout"     "fr,fr"
       Option "XkbVariant"    "latin9,bepo"
       Option "XkbOptions"    "grp:shifts_toggle"
EndSection

Dispositions personnalisées

Voir Xmodmap.

Associer des touches à des actions

voir Xbindkeys.