Odpowiedzi:
Narzędzia do manipulowania układ klawiatury na konsolach wirtualnych są loadkeys, dumpkeysi showkey. Przeczytaj ich strony i dowiedz się o ich zawiłościach.
Zauważ, że narzędzia te działają tylko w wirtualnej konsoli, a nie w emulatorze terminali w środowisku graficznym takim jak gnome. Aby dowiedzieć się o różnicy, przeczytaj to pytanie i odpowiedzi: https://askubuntu.com/questions/14284/why-is-a-virtual-terminal-virtual-and-what-why-where-is-the-real-terminal .
Oto krótki przewodnik, jak robić, co chcesz:
Zapisz swój obecny układ klawiatury:
$ dumpkeys > backup.kmap
Jeśli coś pójdzie nie tak, możesz przywrócić mapę klawiszy za pomocą polecenia:
$ sudo loadkeys backup.kmap
Jeśli klawiatura jest tak pomieszana, że nie możesz tego zrobić, to jedyną opcją, która nie wiąże się ze starożytną magią jądra, jest ponowne uruchomienie.
Sprawdź, które kody dostępu są przypisane do twoich kluczy:
$ showkey
Teraz naciśnij klawisz ESC i klawisz CAPSLOCK. Kody klawiszy powinny pojawić się na ekranie. Zanotuj kody klawiszy. W moim systemie ESC ma kod 1, a CAPSLOCK ma kod 58. showkeyzakończy się po 10 sekundach bezczynności (przynajmniej w moim Ubuntu 10.04).
Zanotuj nazwy kluczy ESC i CAPSLOCK z klawiszy zrzutu:
$ dumpkeys | grep 1
...
keycode 1 = Escape
...
$ dumpkeys | grep 58
...
keycode 58 = CtrlL_Lock
...
Zanotuj wiersz mapy klawiszy ze śmietników:
$ dumpkeys | head -1
keymaps 0-127
Utwórz plik mapy klawiszy, który przełącza ESC i CAPSLOCK:
keymaps 0-127
keycode 1 = CtrlL_Lock
keycode 58 = Escape
Załaduj mapę klawiszy:
$ sudo loadkeys swap_esc_capslock.kmap
Test: Testowanie klucza CAPSLOCK jest oczywiste. Wystarczy nacisnąć klawisz CAPSLOCK i sprawdzić, czy inne klawisze wychodzą z dużej litery. Aby przetestować klucz ESC, możesz użyć CTRL + V, a następnie ESC. Powinien wydrukować ^[. CTRL + V sprawia, że powłoka wypisuje następny klucz dosłownie zamiast go interpretować.
Aby ta modyfikacja była ładowana przy każdym ponownym uruchomieniu, umieść w swoim /etc/rc.localpliku następujący wiersz :
/usr/bin/loadkeys /path/to/swap_esc_capslock.kmap
Informacje zebrane z różnych stron, w tym między innymi:
/usr/bin/loadkeysw /etc/rc.localponieważ zmienna środowiskowa PATH nie jest gwarantowana być ustawione na tym etapie. I sudonie jest potrzebny w rc.local.
rc.localwykonywana przy każdym uruchomieniu systemu. @ bukzor na sudo setupconto nie w rc.local, to komenda setup jednorazowa, która zastępuje domyślny układ układ klawiatury, bez dodawania jakiegokolwiek kodu startowego wykonawcze. Dodanie loadkeys do rc.localdodaje dodatkowo uruchomić kod i duplikatów, co zostało już zrobione przez domyślny system loadkeys. Ta rc.localmetoda może być mniej bezpieczna, ponieważ zależy od niestandardowej ścieżki do mapy klawiszy.
setupconmetodę. Dodaj własną odpowiedź lub edytuj moją, jeśli chcesz.
setupcon. Wydaje się, że sierpień wykonane przy założeniu, że sudo setupcon --savepójdzie do rc.localktórych ja nie sądzę, to prawda, ale jeśli tak, to nie trzeba sudosię rc.local. Myślę, że potrzebujemy więcej informacji przed zaktualizowaniem twojej odpowiedzi. Główne pytanie brzmi: „Jak zainstalować zmodyfikowaną mapę klawiszy, aby ładowała się automatycznie podczas procesu uruchamiania?” Naprawdę nie wiem, który jest lepszy sposób, rc.localinstalowanie mapy klawiszy, a nawet to, czy instalacja klawiatury będzie działać. Ostatnio to badam i wrócę tutaj.
Użyj „ctrl: nocaps” zamiast „ctrl: swapcaps”, jeśli chcesz mieć tylko dwa klawisze Capslocks (Capslock pod inną nazwą jest nadal bardzo bezużyteczny).
X11: (zobacz też: /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
Konsola tekstowa: (skradziony z 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 --savedo wprowadzenia zmian na stałe, zamiast edytować plik rc.local. Jest to w zasadzie to samo, codumpkeys < /dev/tty1 | gzip > /etc/console-setup/cached.kmap.gz