Tout d'abord, la bonne nouvelle
La console système Linux possède absolument son propre ensemble de mappages de clavier, qui peuvent être gérés à l'aide des outils du kbd
package, en particulier dumpkeys
et showkey
pour la découverte et loadkeys
à charger dans un mapping personnalisé. La question SuperUser Comment changer le keymap de la console sous Linux ? a une réponse avec de bonnes informations sur la façon d'utiliser ces outils.
Maintenant, la mauvaise nouvelle
S'il est vrai que ces outils vous permettront de remapper les clés sur la console Linux, sans impliquer xmodmap
ou nécessitant que X soit en cours d'exécution, ils ne feront que affecter les mappages de touches sur la console de texte virtuelle. Les modifications n'auront absolument aucun effet sur l'environnement graphique, car le système XInput/evdev de X lit directement les périphériques d'entrée et effectue son propre traitement.
Donc, si vous espériez éviter d'utiliser xmodmap
en remappant simplement sur la console et en l'appliquant partout, j'ai bien peur que cela ne fonctionne pas. En fait, vous auriez besoin de remapper les deux la console (en utilisant loadkeys
) et X11 (en utilisant une méthode comme xmodmap
), pour utiliser la même disposition de clavier partout.
La solution au xmodmap
la lenteur (et les bogues, puisque ses remappages sont glitchy et non persistants dans les environnements de bureau qui utilisent le changement de disposition) serait de définir un entièrement nouveau disposition du clavier basée sur la disposition que vous utilisiez auparavant, plutôt que d'appliquer des modifications d'exécution. Au démarrage de X, vous chargeriez cette nouvelle mise en page remappée au lieu de celle que vous utilisez actuellement. (Il semble que ce soit maintenant le seul moyen de modifier de manière fiable la disposition du clavier dans les Ubuntu récents - et éventuellement d'autres distributions - comme leur xmodmap
n'est plus utile.)
Pour plus d'informations sur la définition et l'utilisation d'un xkb
personnalisé disposition du clavier, voir :
- Tutoriel :définitions de disposition de clavier personnalisées dans le wiki de la communauté Ubuntu.
- Comment modifier la disposition d'un clavier sous Linux, article de blog de Romano Giannetti.
Les deux ont été rédigés cette année (2014), donc les informations doivent être à jour. Les informations du wiki Ubuntu devraient être applicables à n'importe quelle distribution, pour la plupart, car elles utilisent toutes le xkb
système dans X.
Il existe en fait des moyens de remapper à un niveau suffisamment bas pour s'appliquer à l'ensemble du système, X11 ou non, et ils sont devenus plus importants que jamais maintenant que nous constatons l'adoption de compositeurs Wayland qui négligent d'exposer une interface utilisateur pour le remappage de libinput soutien.
Vous devez essentiellement reconfigurer la façon dont la couche d'entrée du noyau traduit les scancodes bruts en codes clés avant qu'ils n'atteignent la console ou l'API evdev sur laquelle X11 et Wayland sont assis.
Je connais deux façons de procéder :
-
Modifier la base de données du matériel (
hwdb
) entrée pour votre clavier. udev vous permet de le faire en ajoutant des fichiers de règles à/etc/udev/hwdb.d/
et déclencher une reconstruction de la base de données avecsystemd-hwdb update
, puis en forçant son application sans redémarrage viaudevadm trigger
.Cette page ArchiWiki contient des instructions complètes et indique explicitement que cela fonctionnera à la fois pour X11 et pour l'entrée console.
-
Il existe un démon nommé evdevremapkeys qui a été spécifiquement écrit pour remapper les événements clés sur les appareils evdev pour prendre en charge le remappage des correctifs de singe dans les clients evdev qui ne les prennent pas en charge, comme les compositeurs Wayland.
Il utilise essentiellement la même approche que les pilotes d'espace utilisateur comme G15Daemon qui doivent compenser les périphériques d'entrée non standard. (Ouvrez l'appareil evdev, avalez tous les événements qu'il a l'intention de remapper, afin que rien d'autre qui écoute sur l'appareil ne puisse les voir, puis émettez les événements corrigés via le
uinput
API pour créer des périphériques d'entrée au niveau du noyau à partir de l'espace utilisateur.)