web-dev-qa-db-fra.com

Comment changer le clavier de la console sous Linux?

J'aimerais échanger Esc et CapsLock dans la console (pas dans X, et utilisez xev), comment puis-je le faire?

Mon système d'exploitation est Ubuntu.

35
Vayn

Les outils permettant de manipuler la disposition du clavier sur les consoles virtuelles sont loadkeys, dumpkeys et showkey. Lisez leurs pages de manuel et renseignez-vous sur leurs subtilités.

Notez que ces outils ne fonctionnent que dans une console virtuelle, pas dans un émulateur de terminal dans un environnement graphique tel que gnome. Pour en savoir plus sur la différence, lisez cette question et ses réponses: https://askubuntu.com/questions/14284/why-is-a-virtual-terminal-virtual-and-what-why- où-est-le-terminal-réel .

Voici un petit guide pour faire ce que vous voulez:

  1. Enregistrez votre configuration de clavier actuelle:

    $ dumpkeys > backup.kmap
    

    En cas de problème, vous pourrez restaurer votre clavier en utilisant la commande suivante:

    $ Sudo loadkeys backup.kmap
    

    Si le clavier est tellement encrassé que vous ne pouvez même pas le faire, alors votre seule option ne faisant pas appel à la magie du noyau ancien est de redémarrer.

  2. Vérifiez quels codes clés sont attribués à vos clés:

    $ showkey
    

    Maintenant, appuyez sur la touche ESC et la touche CAPSLOCK. Les codes d'activation doivent apparaître à l'écran. Notez les codes clés. Sur mon système, l’ESC a le code clé 1 et CAPSLOCK, le code clé 58. showkey se terminera après 10 secondes d’inactivité (du moins sur mon Ubuntu 10.04).

  3. Notez les noms des clés ESC et CAPSLOCK des dumpkeys:

    $ dumpkeys | grep 1
    ...
    keycode   1 = Escape
    ...
    $ dumpkeys | grep 58
    ...
    keycode  58 = CtrlL_Lock
    ...
    
  4. Notez la ligne de clavier de dumpkeys:

    $ dumpkeys | head -1
    keymaps 0-127
    
  5. Créez un fichier de clavier qui permute ESC et CAPSLOCK:

    keymaps 0-127
    keycode   1 = CtrlL_Lock
    keycode  58 = Escape
    
  6. Chargez le keymap:

    $ Sudo loadkeys swap_esc_capslock.kmap
    
  7. Test: Le test de la touche CAPSLOCK est évident. Appuyez simplement sur leur touche CAPSLOCK et vérifiez si les autres clés sont capitalisées. Pour tester la touche ÉCHAP, vous pouvez utiliser CTRL + V suivi de ÉCHAP. Il devrait imprimer ^[. CTRL + V permet au shell d’imprimer la clé suivante mot à mot au lieu de l’interpréter.

Pour que cette modification soit chargée à chaque redémarrage, insérez la ligne suivante dans votre fichier /etc/rc.local:

/usr/bin/loadkeys /path/to/swap_esc_capslock.kmap

Informations recueillies à partir de différentes pages, y compris, mais sans s'y limiter:

58
lesmana

Utilisez 'ctrl: nocaps' au lieu de 'ctrl: swapcaps' si vous voulez juste avoir deux touches majuscules (la majuscule sous un autre nom est toujours super inutile).

X11: (voir aussi: /usr/share/X11/xkb/rules/base.lst)

Sudo vim /etc/default/keyboard
    XKBOPTIONS="ctrl:swapcaps"
udevadm trigger --subsystem-match=input --action=change
Sudo restart lightdm

Console texte: (volé à la setupcon)

#!/bin/sh
. /etc/default/console-setup 
. /etc/default/keyboard
ckbcomp $acm_option $rules_option -model "$XKBMODEL" \
            "$XKBLAYOUT" "$XKBVARIANT" "$XKBOPTIONS" \
            | gzip -9 2>/dev/null >/etc/console-setup/cached.kmap.gz
loadkeys /etc/console-setup/cached.kmap.gz
4
bukzor