J'ai pu modifier la disposition/le mappage du clavier lorsque le système X Window est en cours d'exécution à l'aide de ~/.Xmodmap
(et je suppose que vous pouvez également le faire via le protocole X directement, par exemple en utilisant libxcb comme wrapper autour des appels de protocole X).
J'ai pu faire la même chose (un peu) sur la console/tty (c'est-à-dire lorsque X n'est pas en cours d'exécution) en utilisant loadkeys
.
Existe-t-il un moyen de personnaliser la disposition du clavier de la même manière, mais à partir d'une source unique , de telle sorte qu'il affecte à la fois X et la console, c'est-à-dire. d'une manière "indépendante de X et de la console" ?
(La seule façon à laquelle je peux penser est d'écrire un "pilote de clavier" qui communique avec l'interface d'entrée du noyau, evdev
, et envoie l'entrée souhaitée (via uinput
?), ou quelque chose, mais je ne sais pas si cela a du sens, ou s'il existe un moyen plus simple.)
Réponse acceptée :
Oui, il y a un moyen, et c'est en effet ainsi que le paquet de configuration de la console de Debian le fait.
- Les dispositions de clavier sont spécifiées en termes XKB (modèle, disposition, variante et options) par l'administrateur dans un fichier nommé
keyboard
, généralement/etc/default/keyboard
. C'est la source unique. Il peut être modifié avec un éditeur de texte. - Le
setxkbmap
programme reçoit ces mêmes paramètres XKB et configure un serveur X11 en conséquence.- Le script de maintenance post-installation du package de configuration du clavier exécute
setxkbmap
directement, avec le/etc/default/keyboard
paramètres, s'il se retrouve avec un affichage X11. Ainsidpkg-reconfigure keyboard-configuration
exécuté à partir d'un émulateur de terminal graphique X11 affectera la disposition du clavier X11.
- Le script de maintenance post-installation du package de configuration du clavier exécute
- Le
setupcon
le script prend ces paramètres XKB, les passe à travers leckbcomp
utilitaire pour générer une carte de clavier et charge cette carte de clavier dans les terminaux virtuels du noyau avecloadkeys
/kbdcontrol
.- Ce script est exécuté au démarrage du système par un service.
- Il peut également être exécuté manuellement autrement.
Les autres systèmes d'exploitation systemd fonctionnent différemment mais ont également une source unique.
- La mise en page, la variante et les options XKB sont stockées dans
/etc/X11/xorg.conf.d/00-keyboard.conf
. C'est la source unique.- Ce fichier est directement lu par le serveur X11 au démarrage et définit directement la carte du clavier X11.
- Ce fichier est analysé par
systemd-localed
au démarrage. Le fichier ne peut pas être modifié de manière utile avec un éditeur de texte alors quesystemd-localed
est en cours d'exécution, car le service l'écrasera allègrement avec ses propres informations en mémoire. - Pour changer les informations XKB, on lance
localectl
, qui parle à un autre serveur qui à son tour parle àsystemd-localed
.
systemd-localed
convertit les paramètres XKB en un nom de carte de clavier de terminal virtuel en utilisant les mappages dans/usr/share/systemd/kbd-model-map
, qu'il écrit ensuite dans/etc/vconsole.conf
. Contrairement au système Debian, il ne génère pas de cartes à la volée à partir des informations XKB, mais sélectionne uniquement les cartes statiques pré-fournies répertoriées dans le fichier de carte.systemd-vconsole-setup
s'exécute au démarrage, lit/etc/vconsole.conf
, et charge la carte du clavier dans les terminaux virtuels du noyau en exécutantloadkeys
.
Autres lectures
keyboard
. Manuel de l'utilisateur de configuration de la console . Debian.ckbcomp
. Manuel de l'utilisateur de configuration de la console . Debian.- Andrew T. Young (2011). Configuration du clavier .
- Où Xkb obtient-il sa configuration ?
- https://unix.stackexchange.com/a/326804/5132