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
setxkbmapprogramme 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
setxkbmapdirectement, avec le/etc/default/keyboardparamètres, s'il se retrouve avec un affichage X11. Ainsidpkg-reconfigure keyboard-configurationexé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
setupconle script prend ces paramètres XKB, les passe à travers leckbcomputilitaire 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-localedau démarrage. Le fichier ne peut pas être modifié de manière utile avec un éditeur de texte alors quesystemd-localedest 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-localedconvertit 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-setups'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