Xorg (Français)/Keyboard configuration (Français)

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

Cet article décrit les bases de la configuration du clavier Xorg. Pour les sujets plus avancés tels que la modification de la disposition du clavier ou les mappages de touches supplémentaires, consultez respectivement X keyboard extension ou Extra keyboard keys.

Le serveur Xorg utilise l'extension X keyboard extension (XKB) pour définir la disposition du clavier. (XKB) pour définir les dispositions de clavier. En option, xmodmap peut être utilisé pour accéder directement à la table de clavier interne, bien que cela ne soit pas recommandé pour les tâches complexes. De plus, localectl de systemd peut être utilisé pour définir la disposition du clavier à la fois pour le serveur Xorg et la console virtuelle.

Note: Les options XKB peuvent être remplacées par les outils fournis par certains environnements de bureau tels que GNOME et KDE.

Visualisation des paramètres du clavier

Vous pouvez utiliser la commande suivante pour consulter les paramètres actuels de XKB :

$ setxkbmap -print -verbose 10
Setting verbose level to 10
locale is C
Applied rules from evdev:
model:      evdev
layout:     us
options:    terminate:ctrl_alt_bksp
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete
symbols:    pc+us+inet(evdev)+terminate(ctrl_alt_bksp)
geometry:   pc(pc104)
xkb_keymap {
        xkb_keycodes  { include "evdev+aliases(qwerty)" };
        xkb_types     { include "complete"      };
        xkb_compat    { include "complete"      };
        xkb_symbols   { include "pc+us+inet(evdev)+terminate(ctrl_alt_bksp)"    };
        xkb_geometry  { include "pc(pc104)"     };
};

Utilitaires tiers

Il existe quelques utilitaires "non officiels" qui permettent d'imprimer des informations spécifiques sur la disposition de clavier actuellement utilisée.

$ xkb-switch
us
$ xkblayout-state print "%s"
de

Configurer la disposition du clavier

La disposition du clavier dans Xorg peut être définie de plusieurs façons. Voici une explication des options utilisées :

  • XkbModel sélectionne le modèle de clavier. Cela n'a d'influence que sur les touches supplémentaires que votre clavier peut avoir. Les options de secours les plus sûres sont pc104 ou pc105. Mais par exemple, les ordinateurs portables ont généralement des touches supplémentaires, et parfois vous pouvez les faire fonctionner en définissant simplement un modèle approprié.
  • XkbLayout sélectionne la disposition du clavier. Plusieurs dispositions peuvent être spécifiées dans une liste séparée par des virgules, par exemple si vous voulez passer rapidement d'une disposition à l'autre.
  • XkbVariant sélectionne une variante de disposition spécifique disponible pour le XkbLayout. Par exemple, la variante par défaut sk (slovaque) est qwertz, mais vous pouvez spécifier manuellement qwerty, etc.
  • XkbOptions contient quelques options supplémentaires (séparées par des virgules). Utilisées pour spécifier le changement de disposition, le voyant de notification, le mode de composition, etc. Consultez la section #Options XKB fréquemment utilisées pour des exemples.
Note: Vous devez spécifier autant de variantes que le nombre de mises en page spécifiées. Si vous voulez la variante par défaut, spécifiez une chaîne vide comme variante (la virgule doit rester). Par exemple, pour avoir la disposition par défaut us comme principale et la variante dvorak de la disposition us comme secondaire, spécifiez us,us comme XkbLayout et ,dvorak comme XkbVariant.

Le nom de la disposition est généralement un code de pays à deux lettres. Pour consulter la liste complète des modèles de claviers, des dispositions, des variantes et des options, ainsi qu'une courte description, ouvrez /usr/share/X11/xkb/rules/base.lst. Alternativement, vous pouvez utiliser l'une des commandes suivantes pour consulter une liste sans description :

  • localectl list-x11-keymap-models
  • localectl list-x11-keymap-layouts
  • localectl list-x11-keymap-variants [layout]}
  • localectl list-x11-keymap-options

Les exemples des sous-sections suivantes auront le même effet, ils définiront le modèle pc104, cz comme disposition principale, us comme disposition secondaire, la variante dvorak pour la disposition us et la combinaison Win+Space pour basculer entre les dispositions. Consultez xkeyboard-config(7) pour des informations plus détaillées.

Note: Les utilisateurs de Fcitx/IBus peuvent constater que ces méthodes ne fonctionnent pas, ou seulement pendant un certain temps, car elles tentent de contrôler la disposition du clavier. Les utilisateurs de Fcitx doivent définir la première méthode de saisie comme étant Keyboard - layout. Consultez Fcitx#Input methods configuration. Les utilisateurs d'IBus doivent activer l'option "Utiliser la disposition du clavier du système" dans Préférence -> Avancé s'ils utilisent des fichiers de configuration X, ou spécifier manuellement la disposition s'ils utilisent setxkbmap.

Utilisation de setxkbmap

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: Udev entre également en jeu (par exemple lors du branchement d'un clavier), annulant les modifications apportées par setxkbmap (Discuss in Talk:Xorg/Keyboard configuration#Persisting layout when USB keyboard connected)

La commande setxkbmap définit la disposition du clavier pour la session X actuelle uniquement, mais peut être rendue persistante dans [[Xinit (Français)#xinitrc|xinitrc]] ou xprofile. Cela remplace la configuration du système spécifiée à la suite de #Utilisation des fichiers de configuration X. Cependant, la persistance ne s'applique pas aux claviers tels que les claviers externes, à moins que leur identifiant de périphérique ait été spécifié lors de l'exécution de setxkbmap. Ou qu'ils constituent le périphérique de clavier principal du serveur X.

L'utilisation est la suivante (consultez setxkbmap(1)) :

$ setxkbmap [-model xkb_model] [-layout xkb_layout] [-variant xkb_variant] [-option xkb_options]
Note: setxkbmap ajoute les options spécifiées dans la ligne de commande à celles qui étaient définies auparavant (telles qu'enregistrées dans les propriétés de la fenêtre racine). Si vous souhaitez remplacer toutes les options spécifiées précédemment, utilisez l'option -option avec un argument vide en premier lieu.

Pour modifier uniquement la disposition (-layout est l'option par défaut) :

$ setxkbmap xkb_layout

Pour de multiples personnalisations :

$ setxkbmap -model pc104 -layout cz,us -variant ,dvorak -option grp:win_space_toggle

Utilisation des fichiers de configuration de X

Note: xorg.conf est analysé par le serveur X au démarrage. Pour appliquer les modifications, redémarrez X.

La syntaxe des fichiers de configuration X est expliquée dans Xorg (Français)#Configuration. Cette méthode crée une configuration à l'échelle du système qui est persistante lors des redémarrages.

Voici un exemple :

/etc/X11/xorg.conf.d/00-keyboard.conf
Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "cz,us"
        Option "XkbModel" "pc104"
        Option "XkbVariant" ",dvorak"
        Option "XkbOptions" "grp:win_space_toggle"
EndSection

Utilisation de localectl

Pour des raisons de commodité, l'outil localectl peut être utilisé au lieu d'éditer manuellement les fichiers de configuration de X. Il enregistrera la configuration dans /etc/X11/xorg.conf.d/00-keyboard.conf, ce fichier ne doit pas être modifié manuellement, car localectl écrasera les changements au prochain démarrage.

L'utilisation est la suivante :

# localectl [--no-convert] set-x11-keymap layout [model [variant [options]]]]

Pour définir un modèle, une variante ou des options, tous les champs précédents doivent être spécifiés, mais les champs précédents peuvent être ignorés en passant une chaîne vide avec "". À moins que l'option --no-convert ne soit passée, le clavier spécifié est également converti en clavier de console le plus proche et appliqué à la configuration de la console dans vconsole.conf. Consultez localectl(1) pour plus d'informations.

Pour créer un /etc/X11/xorg.conf.d/00-keyboard.conf comme celui ci-dessus :

# localectl --no-convert set-x11-keymap cz,us pc104 ,dvorak grp:win_space_toggle

Options XKB fréquemment utilisées

Passage d'une disposition de clavier à une autre

Pour pouvoir facilement changer de disposition de clavier, spécifiez d'abord plusieurs dispositions entre lesquelles vous voulez basculer (la première est celle par défaut). Ensuite, spécifiez une touche (ou une combinaison de touches) qui sera utilisée pour la commutation. Par exemple, pour passer d'une disposition américaine à une disposition suédoise en utilisant la touche CapsLock, utilisez us,se comme argument de XkbLayout et grp:caps_toggle comme argument de XkbOptions. Le nombre de XkbLayouts doit correspondre à celui des XkbVariants - si vous voulez passer uniquement d'une variante à l'autre, dupliquez la disposition en conséquence (par exemple, de,de).

Vous pouvez utiliser d'autres combinaisons de touches que CapsLock, elles sont listées dans /usr/share/X11/xkb/rules/base.lst, commencent par grp: et se terminent par toggle. Pour obtenir la liste complète des options disponibles, exécutez la commande suivante :

$ grep "grp :.*toggle" /usr/share/X11/xkb/rules/base.lst

Notez que l'option grp:alts_toggle est peu fiable et peu susceptible d'être corrigée ; préférez d'autres combinaisons !

Terminer Xorg avec Ctrl+Alt+Backspace

Par défaut, la combinaison de touches Ctrl+Alt+Backspace est désactivée. Vous pouvez l'activer en passant terminate:ctrl_alt_bksp à XkbOptions. Vous pouvez également le faire en liant une touche à Terminate_Server dans xmodmap (ce qui annule tout paramètre existant de XkbOptions). Pour que l'une ou l'autre de ces méthodes fonctionne, il faut également que DontZap ait la valeur "off" dans ServerFlags ; cependant, depuis au moins la version R6.8.0 (année 2004) [1], c'est la valeur par défaut.

Échanger le verrouillage des majuscules avec le contrôle gauche

Pour permuter le verrouillage des majuscules avec la touche de contrôle gauche, ajoutez ctrl:swapcaps à XkbOptions. Exécutez la commande suivante pour consulter les options similaires ainsi que leurs descriptions :

$ grep -E "(ctrl|caps) :" /usr/share/X11/xkb/rules/base.lst

Activation des touches souris

Les «touches souris», à ne pas confondre avec les touches de la souris, est désactivé par défaut et doit être activé manuellement en passant keypad:pointerkeys à XkbOptions. Ainsi, le raccourci Shift+NumLock permet de faire basculer les «touches souris».

Consultez également X keyboard extension#Mouse control pour une configuration avancée.

Configuration de la touche de composition

Bien que cela ne soit généralement pas le cas sur les claviers traditionnels, une touche de composition peut être configurée sur une touche existante.

La touche Compose commence une séquence d'appui sur une touche qui implique (généralement deux) appuis supplémentaires. Elle est généralement utilisée pour saisir des caractères dans une langue pour laquelle le clavier n'a pas été conçu, ou pour d'autres caractères moins utilisés qui ne sont pas couverts par le modificateur AltGr. Par exemple, l'appui sur Compose. ' e produit é, ou Compose - - - produira un "em dash" : -.

Bien que quelques claviers plus excentriques disposent d'une touche Compose, sa disponibilité est généralement assurée par la substitution d'une touche existante. Par exemple, pour transformer la touche {ic|Menu}} en touche {ic|Compose}}, utilisez la configuration de l'environnement de bureau, ou passez compose:menu à XkbOptions (ou setxkbmap : setxkbmap -option compose:menu). Les substitutions de touches autorisées sont définies dans /usr/share/X11/xkb/rules/base.lst :

$ grep "compose:" /usr/share/X11/xkb/rules/base.lst

Si le mappage souhaité n'est pas trouvé dans ce fichier, une alternative est d'utiliser xmodmap pour mapper la touche souhaitée sur le keysym Multi_key, qui agit comme une touche de composition par défaut (notez que les paramètres de xmodmap sont réinitialisés par setxkbmap).

Combinaisons de touches

Les combinaisons par défaut des touches de composition dépendent de la locale configurée pour la session et sont stockées dans /usr/share/X11/locale/used_locale/Compose, où used_locale est par exemple en_US.UTF-8.

Vous pouvez définir vos propres combinaisons de touches de composition en copiant le fichier par défaut dans ~/.XCompose et en le modifiant. Vous pouvez également créer un ~/.XCompose vide et inclure le fichier par défaut en utilisant include "%L", par exemple :

~/.XCompose
include "%L"

<Multi_key> <g> <a> : "α"
<Multi_key> <g> <b> : "β"
<Multi_key> <g> <g> : "γ"

La touche de composition (désignée par <Multi_key> dans le fichier ~/.XCompose) fonctionne avec n'importe lequel des milliers de caractères Unicode valides, y compris ceux qui ne font pas partie du plan multilingue de base. Jetez un coup d'œil à la page de manuel Compose(5), elle explique le format des fichiers XCompose.

Cependant, GTK n'utilise pas XIM par défaut et ne suit donc pas les clés ~/.XCompose. Cela peut être corrigé en forçant GTK à utiliser XIM en ajoutant export GTK_IM_MODULE=xim et/ou export XMODIFIERS="@im=none" à ~/.xprofile.

Astuce: XIM est très vieux, vous aurez peut-être plus de chance avec d'autres méthodes d'entrée : SCIM, Uim, IBus, etc. Consultez Méthode d'entrée pour plus de détails.
Note: XIM empêchera l'insertion de caractères Unicode avec la combinaison Ctrl+Shift+u.

Signe de la devise sur une autre touche

Sur la plupart des claviers européens, le signe Euro (€) est imprimé sur la touche 5. Par exemple, pour y accéder avec Alt+5, utilisez les options lv3:lalt_switch et eurosign:5.

Le signe de la roupie (₹) peut être utilisé de la même manière avec rupeesign:4.

Changement d'état immédiat lorsque la touche Caps Lock est enfoncée

Ceux qui préfèrent taper des lettres majuscules avec la touche Caps Lock peuvent ressentir un court délai lorsque l'état de Caps Lock est changé, résultant en deux ou plusieurs lettres majuscules (par exemple THe, ARch LInux). Cela se produit parce que le verrouillage des majuscules est activé immédiatement après avoir appuyé sur la touche de verrouillage des majuscules, mais n'est désactivé qu'après avoir relâché la deuxième pression sur la touche. Ce comportement s'inspire des machines à écrire où la fonction de verrouillage des majuscules était obtenue en verrouillant physiquement les barres de caractères décalées en place, et le relâchement d'une pression sur la touche shift était l'action qui provoquait la libération du verrouillage.

Certains systèmes d'exploitation plus populaires ont supprimé ce comportement, soit volontairement (car il peut être source de confusion pour certains), soit par erreur, mais c'est une question de préférence. Des rapports de bugs ont été déposés sur le bug tracker de Xserver, car il n'y a actuellement aucun moyen facile de passer au comportement reflété par ces autres systèmes d'exploitation. Pour ceux qui souhaitent suivre ce problème, les rapports de bogue et les derniers progrès réalisés peuvent être trouvés sur [2] et [3].

Palliatif

Tout d'abord, exportez vos configurations de clavier dans un fichier :

$ xkbcomp -xkb $DISPLAY xkbmap

Dans le fichier xkbmap, localisez la section Caps Lock qui commence par key <CAPS> :

 key <CAPS> { [ Caps_Lock ] } ;

et remplacez toute la section par le code suivant :

touche <CAPS> {
    repeat=no,
    type[group1]="ALPHABÉTIQUE",
    symboles[group1]=[ Caps_Lock, Caps_Lock],
    actions[group1]=[ LockMods(modifiers=Lock), Private(type=3,data[0]=1,data[1]=3,data[2]=3)]]
} ;

Sauvegarder et recharger les configurations du clavier :

$ xkbcomp -w 0 xkbmap $DISPLAY

Pensez à en faire un service qui se lance après le démarrage de X, car les configurations rechargées ne survivent pas à un redémarrage du système.

Fonctions des touches en un clic

Pour attribuer une fonction supplémentaire à une touche de modification, vous pouvez utiliser xcape. Par exemple, il est possible de faire fonctionner CapsLock comme Escape lorsqu'elle est enfoncée seule, et comme Control lorsqu'elle est utilisée avec une autre touche. Commencez par définir la permutation Control en utilisant setxkbmap comme mentionné précédemment, et xcape pour définir l'association Escape :

 $ xcape -e 'Caps_Lock=Escape'

Vous pouvez définir plusieurs associations séparées par un point-virgule, par ex : Caps_Lock=Escape;Shift_L=Escape.

Si vous maintenez une touche pendant une durée supérieure à la valeur du délai d'attente (500 ms par défaut), xcape ne générera pas d'événement de touche.

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. Notez que ces paramètres sont configurés séparément pour Xorg et pour la console virtuelle.

Utilisation de xset

L'outil xset peut être utilisé pour définir le délai et le taux de frappe d'un serveur X actif, certaines actions pendant l'exécution peuvent cependant amener le serveur X à réinitialiser ces changements et à revenir à ses valeurs par défaut.

Utilisation :

$ xset r rate delay [rate] (en anglais)

Par exemple, pour définir un délai typographique de 200 ms et un taux typographique de 30 Hz, utilisez la commande suivante (utilisez xinitrc pour la rendre permanente) :

$ xset r rate 200 30

L'exécution de la commande sans spécifier le délai et le taux réinitialisera les valeurs typographiques à leurs valeurs par défaut respectives, soit un délai de 660 ms et un taux de 25 Hz :

$ xset r rate

Utilisation des options de démarrage de XServer

Une façon plus résistante de définir le délai et le taux typographique est de les rendre les valeurs par défaut du siège en passant les paramètres désirés au serveur X lors de son démarrage en utilisant les options suivantes :

  • -ardelay millisecondes - définit le délai de répétition automatique (durée en millisecondes pendant laquelle une touche doit être enfoncée avant que la répétition automatique ne commence).
  • -arinterval milliseconds - définit l'intervalle d'autorepeat (durée en millisecondes qui doit s'écouler entre les frappes générées par autorepeat).

Consultez Xserver(1) pour obtenir une liste complète des options du serveur X et consultez votre gestionnaire d'affichage pour savoir comment passer ces options.

Voir aussi