Changer le verrouillage des majuscules pour contrôler dans la console virtuelle sur Ubuntu 17

10

Je voudrais changer le comportement du verrouillage des majuscules dans les terminaux virtuels (tty par exemple CtrlAltF3) afin qu'il agisse comme un modificateur de contrôle. Idéalement, j'aimerais également qu'il agisse comme Escape lorsqu'il est pressé seul, mais obtenir le comportement de contrôle s'avère difficile.

J'utilise Ubuntu 17.04. J'ai lu et essayé de nombreuses approches pour effectuer ce changement, mais aucune ne semble s'appliquer à mon système comme décrit. J'ai l'impression que systemd y joue un rôle, mais les détails ne sont pas clairs.

J'ai écrit un fichier caps_control.kmap, qui mappe les majuscules au contrôle,

keymaps 0-255
keycode  58 = Control

Si je cours à loadkeys caps_control.kmappartir d'une console virtuelle, cela fonctionne. Maintenant, je voudrais le charger automatiquement au démarrage / connexion / quoi que ce soit ...

J'ai trouvé des références à l' utilisation /etc/rc.localde le faire, mais mon système n'a pas un tel fichier, mais il ne dispose de plusieurs répertoires comme /etc/rc0.d/, /etc/rc1.d/...

Il semble que depuis Ubuntu 17 utilise sytemd, je devrais utiliser localectlpour gérer ce genre de chose, mais je ne sais pas comment le faire. Par exemple,

$ localectl status
   System Locale: LANG=en_US.UTF-8
       VC Keymap: n/a
      X11 Layout: us
       X11 Model: pc105
$ localectl list-keymaps
Couldn't find any console keymaps.

La page de manuel pour les localectlmentions /etc/locale.confet /etc/vconsole.conf, qui n'existent pas sur mon système.

Je suis totalement perdu. Est-ce que quelqu'un peut-il me montrer la bonne direction?

ivan
la source
Avez-vous besoin que cette modification soit active pour tous les utilisateurs ou uniquement pour la vôtre?
acer
@acer Quoi qu'il en soit, cela me conviendrait, car je suis vraiment le seul utilisateur de cette machine.
ivan
Hmm ... Vous ajoutez une ligne dans ~ / .profile avec loadkeys caps_control.kmapcelle qui s'exécuterait lorsque vous vous connectez.
acer
@acer L'appel loadkeysdepuis ~ / .profile semble être problématique. Lorsque je me connecte, j'obtiens une erreur indiquant "Impossible d'obtenir un descripteur de fichier faisant référence à la console".
ivan

Réponses:

11

Pour transformer le verrouillage des majuscules en un modificateur Ctrl supplémentaire, qui est également efficace dans les consoles tty, ouvert /etc/default/keyboardpour modification et définition:

XKBOPTIONS=ctrl:nocaps

Si vous avez déjà XKBOPTIONSdéfini, ajoutez ctrl:nocapsà sa valeur existante en utilisant une virgule pour séparateur, par exemple:

XKBOPTIONS="terminate:ctrl_alt_bksp,ctrl:nocaps"

Devrait être effectif après le prochain redémarrage ou l'émission de la setupconcommande.

L'option doit être présente lors de l'exécution localectl status:

$ localectl status | grep caps
     X11 Options: ctrl:nocaps

Et dans la session X, une autre façon de vérifier qu'il est défini est:

$ gsettings get org.gnome.desktop.input-sources xkb-options
['ctrl:nocaps']
Gunnar Hjalmarsson
la source
1
une autre option XKB est "ctrl:nocaps". en X, la différence est subtile: avec l' ctrloption, xevet d'autres outils verront un Control_Lsymbole lorsque la touche CapsLock est enfoncée, tandis que l' capsoption affichera toujours le symbole de clé Caps_Lock. je ne sais pas si cette différence se traduira par le clavier de la console virtuelle.
Don Quichotte
@quixotic: Merci d'avoir mentionné ctrl:nocaps. Je l'ai ajouté à ma réponse.
Gunnar Hjalmarsson
Une idée pourquoi cela ne fonctionne pas pour moi? C'est en fait l'une des premières choses que j'ai essayées, et j'aime l'approche. Malheureusement, cela n'a aucun effet sur mon système.
ivan
1
@ivan: Je viens de me tester et j'ai trouvé que ma première suggestion ( caps:ctrl_modifier) n'est pas efficace dans tty. Cependant, pour moi (le 17.10) ctrl:nocapsest. Veuillez voir ma réponse modifiée.
Gunnar Hjalmarsson
1
@GunnarHjalmarsson je ne connais pas trop la méthode de debian / ubuntu pour traduire les cartes XKB en cartes console (cela implique ckbcomp, je pense?). Je ne me souvenais pas de l' caps:ctrl_modifieroption que vous avez mentionnée en premier, alors j'ai cherché pour comparer avec celle que ctrl:nocapsj'utilise habituellement, et j'ai pensé que la différence méritait d'être mentionnée ici. content que ce soit utile.
2017