Risposte:
Gli strumenti per manipolare il layout della tastiera sulle console virtuali sono loadkeys
, dumpkeys
e showkey
. Leggi le loro manpage e informati sulle loro complessità.
Si noti che questi strumenti funzionano solo in una console virtuale, non in un emulatore di terminale in un ambiente grafico come gnome. Per saperne di più sulla differenza leggi questa domanda e risposte: https://askubuntu.com/questions/14284/why-is-a-virtual-terminal-virtual-and-what-why-where-is-the-real-terminal .
Ecco una breve guida per fare ciò che vuoi:
Salva il layout della tastiera corrente:
$ dumpkeys > backup.kmap
Nel caso in cui qualcosa vada storto potresti riuscire a ripristinare la tua keymap usando il comando:
$ sudo loadkeys backup.kmap
Se la tastiera è così incasinata che non puoi nemmeno farlo, l'unica opzione che non prevede la magia del kernel antico è il riavvio.
Verifica quali codici chiave sono assegnati alle tue chiavi:
$ showkey
Ora premere il tasto ESC e il tasto CAPSLOCK. I codici chiave dovrebbero apparire sullo schermo. Nota i codici chiave. Sul mio sistema l'ESC ha il codice chiave 1 e CAPSLOCK ha il codice chiave 58. showkey
terminerà dopo 10 secondi di inattività (almeno sul mio ubuntu 10.04).
Nota i nomi dei tasti ESC e CAPSLOCK dai dumpkeys:
$ dumpkeys | grep 1
...
keycode 1 = Escape
...
$ dumpkeys | grep 58
...
keycode 58 = CtrlL_Lock
...
Nota la riga della mappa dei tasti da dumpkeys:
$ dumpkeys | head -1
keymaps 0-127
Crea un file keymap che cambia ESC e CAPSLOCK:
keymaps 0-127
keycode 1 = CtrlL_Lock
keycode 58 = Escape
Carica la mappa dei tasti:
$ sudo loadkeys swap_esc_capslock.kmap
Test: il test del tasto CAPSLOCK è ovvio. Basta premere il tasto CAPSLOCK e verificare se gli altri tasti escono in maiuscolo. Per testare il tasto ESC è possibile utilizzare CTRL + V seguito da ESC. Dovrebbe stampare ^[
. CTRL + V fa in modo che la shell stampi la chiave successiva alla lettera invece di interpretarla.
Per caricare questa modifica ad ogni riavvio, inserire la seguente riga nel /etc/rc.local
file:
/usr/bin/loadkeys /path/to/swap_esc_capslock.kmap
Informazioni raccolte da varie pagine, tra cui, ma non limitato a:
/usr/bin/loadkeys
in /etc/rc.local
quanto il percorso variabile di ambiente non è garantito da impostare in questa fase. E sudo
non è necessario in rc.local
.
rc.local
viene eseguito ogni volta che si avvia il sistema. @ bukzor nonsudo setupcon
è presente , è un comando di installazione singolo, che sostituisce la mappa dei tasti predefinita del sistema, senza aggiungere alcun codice di avvio del runtime. Aggiungendo a , aggiunge ulteriore codice di avvio e duplica ciò che è già stato fatto dai loadkeys predefiniti del sistema. Il metodo potrebbe effettivamente essere meno sicuro perché dipende da un percorso non standard della mappa di tasti. rc.local
loadkeys
rc.local
rc.local
setupcon
metodo. Aggiungi la tua risposta o modifica la mia se lo desideri.
setupcon
. Sembra che agosto ha fatto l'ipotesi che l' sudo setupcon --save
avrebbe andare in rc.local
cui non credo è vero, ma se lo fa, non è necessario sudo
in rc.local
. Penso che abbiamo bisogno di maggiori informazioni prima di aggiornare la tua risposta. La domanda principale è "Come installare la keymap modificata in modo che venga caricata automaticamente durante il processo di avvio?" Non so davvero quale sia il modo migliore, rc.local
o l'installazione di una keymap, o anche se l'installazione di una keymap funzionerà. Ho fatto ricerche di recente e ci tornerò qui.
Usa 'ctrl: nocaps' invece di 'ctrl: swapcaps' se vuoi solo avere il tasto due maiuscole (il maiuscole con un altro nome è ancora super inutile).
X11: (vedi anche /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 di testo: (rubato da 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
sudo setupcon --save
per rendere permanenti le modifiche, anziché modificare rc.local. È essenzialmente lo stesso didumpkeys < /dev/tty1 | gzip > /etc/console-setup/cached.kmap.gz