Linux console (Français)/Keyboard configuration (Français)

From ArchWiki
État de la traduction: Cet article est la version francophone de Linux console/Keyboard configuration. Date de la dernière traduction: 2023-05-27. Vous pouvez aider à synchroniser la traduction s'il y a eu des changements dans la version anglaise.

Les mappages de clavier (keymaps), les polices de caractères de la console et les mappages de la console pour la console Linux sont fournis par le paquet kbd (une dépendance de systemd), qui fournit également de nombreux outils de bas niveau pour gérer la console texte. De plus, systemd fournit également l'outil localectl, qui peut contrôler à la fois la locale du système et les paramètres de disposition du clavier pour la console et Xorg.

Visualiser les configurations du clavier

Utilisez localectl status pour afficher les configurations actuelles du clavier.

Keymaps

Les fichiers keymap sont stockés dans l'arborescence des répertoires /usr/share/kbd/keymaps/. Habituellement, un fichier keymap correspond à une disposition de clavier (l'instruction include peut être utilisée pour partager des parties communes et un fichier keymap peut contenir plusieurs dispositions avec une certaine combinaison de touches utilisée pour la commutation). Pour plus de détails, consultez keymaps(5).

Lister les keymaps

Les conventions de nommage des keymaps de la console sont quelque peu arbitraires, mais elles sont généralement basées sur :

  • Codes de langue : où le code de la langue est le même que celui du pays (par exemple, de pour l'allemand, ou fr pour le français).
  • Codes pays : lorsque des variantes d'une même langue sont utilisées dans différents pays (par exemple, uk pour l'anglais du Royaume-Uni, ou us pour l'anglais des États-Unis) ; une liste des codes de pays peut également être trouvée dans wikipedia:fr:ISO 3166-1#Table de codage.
  • Disposition du clavier : lorsque la disposition n'est pas liée à un pays ou à une langue particulière (par exemple, dvorak pour la Disposition Dvorak).

Pour obtenir une liste de toutes les keymaps disponibles, utilisez la commande :

$ localectl list-keymaps

Pour rechercher un keymap, utilisez la commande suivante, en remplaçant search_term par le code de votre langue, pays ou disposition :

$ localectl list-keymaps | grep -i search_term

Vous pouvez également utiliser find :

$ find /usr/share/kbd/keymaps/ -type f -name "*search_term*"

Charger les touches

Il est possible de définir une keymap uniquement pour la session en cours. Ceci est utile pour tester différentes keymaps, résoudre des problèmes, etc.

L'outil loadkeys est utilisé dans ce but, il est utilisé en interne par systemd lors du chargement de la keymap configurée dans /etc/vconsole.conf. Il peut être utilisé très simplement dans ce but :

# loadkeys keymap

Consultez les détails de loadkeys(1).

Configuration persistante

Une keymap persistante peut être définie dans /etc/vconsole.conf, qui est lu par systemd au démarrage. La variable KEYMAP est utilisée pour spécifier la keymap. Si la variable est vide ou non définie, la keymap us est utilisée comme valeur par défaut. Consultez vconsole.conf(5) pour toutes les options. Par exemple :

/etc/vconsole.conf
KEYMAP=uk

Pour plus de commodité, localectl peut être utilisé pour définir la keymap de la console. Il modifiera la variable KEYMAP dans /etc/vconsole.conf et définira également la keymap de la session en cours :

# localectl set-keymap --no-convert keymap

L'option --no-convert peut être utilisée pour empêcher localectl de changer automatiquement la configuration du clavier dans Xorg| pour la correspondance la plus proche. Consultez localectl(1) pour plus d'informations.

Si nécessaire, la keymap de /etc/vconsole.conf peut être chargé au début de l'espace utilisateur par le «hook» de mkinitcpio keymap.

Astuce:
  • Si vous avez sauvegardé votre keymap personnalisée ailleurs que dans /usr/share/kbd/keymaps/, il doit être spécifié par un chemin complet vers le fichier dans vconsole.conf ou lors de l'utilisation de la commande localectl ci-dessus.
  • Les variables XKB* de /etc/vconsole.conf sont pour la configuration du clavier dans Xorg|. loadkeys ne prends pas encore en charge leur utilisation; Voir kbd issue 72. Xorg ne le permet pas non plus.

Création d'une keymap personnalisé

Lorsque vous utilisez la console, vous pouvez utiliser des touches de raccourci pour imprimer un caractère spécifique. De plus, nous pouvons également imprimer une séquence de caractères et certaines séquences d'échappement. Ainsi, si nous imprimons la séquence de caractères constituant une commande et ensuite un caractère d'échappement pour une nouvelle ligne, cette commande sera exécutée.

Une méthode pour y parvenir consiste à éditer le fichier keymap. Cependant, comme il sera réécrit à chaque fois que le paquet auquel il appartient sera mis à jour, il est déconseillé d'éditer ce fichier. Il est préférable d'intégrer le keymap existant avec un keymap personnel. L'utilitaire loadkeys peut le faire.

Tout d'abord, créez un fichier keymap. Ce fichier peut se trouver n'importe où, mais une méthode consiste à imiter la hiérarchie des répertoires dans /usr/local : créez le répertoire /usr/local/share/kbd/keymaps, puis modifiez /usr/local/share/kbd/keymaps/personal.map.

En passant, il est intéressant de noter qu'une telle keymap personnelle est également utile pour redéfinir le comportement des touches déjà traitées par la keymap par défaut : lors du chargement avec loadkeys, les directives de la keymap par défaut seront remplacées lorsqu'elles entrent en conflit avec les nouvelles directives et conservées sinon. De cette façon, seules les modifications de la keymap doivent être spécifiées dans la keymap personnelle.

Astuce:
  • Vous pouvez également modifier une keymap existant situé dans l'arborescence du répertoire /usr/share/kbd/keymaps/. Les keymaps ont une extension .map.gz, par exemple us.map.gz est une keymap américain. Il suffit de copier la keymap dans /usr/local/share/kbd/keymaps/personal.map.gz et de le gunzip.
  • La carte des raccourcis personnalisée peut être rendue persistante en la définissant dans /etc/vconsole.conf. Ainsi, si vous utilisez le «hook» de mkinitcpio sd-vconsole au lieu de keymap, vous pouvez placer votre fichier keymap personnalisé dans /usr/share/kbd/keymaps/. De cette façon, les dépendances de /usr/share/kbd/keymaps seront automatiquement ajoutées à l'image ramdisk initiale par le hook. D'autre part, si vous placez votre fichier keymap personnalisé sous /usr/local/, alors ses dépendances devront être spécifiées manuellement dans le tableau FILES de mkinitcpio.conf.

Ajout de directives

Deux types de directives sont nécessaires dans cette keymap personnelle. Tout d'abord, les directives keycode, qui correspondent au format consulté dans les keymaps par défaut. Ces directives associent un keycode à un keysym. Les keysyms représentent les actions du clavier. Les actions disponibles incluent la sortie de codes de caractères ou de séquences de caractères, le changement de console ou de la keymap, le démarrage de la machine, et bien d'autres actions. La table de clavier complète actuellement active peut être obtenue avec

# dumpkeys -l

La plupart des keymaps sont intuitives. Par exemple, pour que la touche 112 produise un 'e', la directive sera la suivante :

keycode 112 = e

Pour que la touche 112 affiche le symbole de l'euro, la directive sera la suivante :

keycode 112 = euro

Certains keysym ne sont pas immédiatement liés à des actions du clavier. En particulier, les keysyms préfixés par un F majuscule et un à trois chiffres (F1-F246) constituant un nombre supérieur à 30 sont toujours libres. Ceci est utile pour diriger une touche de raccourci pour sortir une séquence de caractères et d'autres actions :

keycode 112 = F70

Ensuite, F70 peut être lié à la sortie d'une chaîne spécifique :

string F70 = "Bonjour"

Lorsque vous appuyez sur la touche 112, le contenu de F70 est affiché. Afin d'exécuter une commande imprimée dans un terminal, un caractère d'échappement «newline» doit être ajouté à la fin de la chaîne de commande. Par exemple, pour entrer en hibernation, la keymap suivante est ajoutée :

string F70 = "sudo systemctl hibernate\n"

Autres exemples

  • Pour que la touche Alt droite soit identique à la touche Alt gauche (pour Emacs), utilisez la ligne suivante dans votre keymap. Elle inclura le fichier /usr/share/kbd/keymaps/i386/include/linux-with-two-alt-keys.inc, consultez-le pour plus de détails.
include "linux-with-two-alt-keys"
  • Pour remplacer CapsLock par Escape (pour Vim), remappez les keycodes respectifs :
keycode 1 = Caps_Lock
keycode 58 = Escape
  • Pour que CapsLock soit une autre touche de contrôle, remappez les codes respectifs :
keycode 58 = Control
  • Pour échanger CapsLock avec la touche de contrôle gauche, remappez les codes respectifs :
keycode 29 = Caps_Lock
keycode 58 = Control

Sauvegarde des modifications

Afin d'utiliser le clavier personnel, il doit être chargé avec loadkeys :

# loadkeys /usr/local/share/kbd/keymaps/personal.map

Cependant, cette keymap n'est active que pour la session en cours. Afin de charger le keymap au démarrage, spécifiez le chemin complet du fichier dans la variable KEYMAP dans /etc/vconsole.conf. Le fichier n'a pas besoin d'être gzippé comme les keymaps officiels fournis par kbd.

Réglage du délai et du taux de répétition

Le délai typographique indique la durée (généralement en millisecondes) pendant laquelle une touche doit être maintenue enfoncée pour que le processus de répétition commence. Une fois le processus de répétition déclenché, le caractère sera répété à une certaine fréquence (généralement exprimée en Hz) spécifiée par le taux typographique. Ces valeurs peuvent être modifiées en utilisant la commande kbdrate. Notez que ces paramètres sont configurés séparément pour la console et pour Xorg.

# kbdrate [-d delay] [-r rate]

Par exemple, pour régler un retard typographique à 200ms et un taux typographique à 30Hz, utilisez la commande suivante :

# kbdrate -d 200 -r 30

Si vous lancez la commande sans spécifier le délai et le taux, les valeurs typographiques seront réinitialisées à leurs valeurs par défaut respectives, soit un délai de 250 ms et un taux de 11 Hz :

# kbdrate

Service Systemd

Un service systemd peut être utilisé pour définir la fréquence du clavier. Par exemple :

/etc/systemd/system/kbdrate.service
[Unit]
Description=Keyboard repeat rate in tty.

[Service]
Type=oneshot
RemainAfterExit=yes
StandardInput=tty
StandardOutput=tty
ExecStart=/usr/bin/kbdrate --silent --delay 250 --rate 30

[Install]
WantedBy=multi-user.target

Puis démarrez et activez le service systemd kbdrate.service.