Odpowiedzi:
Narzędzia do manipulowania układ klawiatury na konsolach wirtualnych są loadkeys
, dumpkeys
i 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. showkey
zakoń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.local
pliku 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/loadkeys
w /etc/rc.local
ponieważ zmienna środowiskowa PATH nie jest gwarantowana być ustawione na tym etapie. I sudo
nie jest potrzebny w rc.local
.
rc.local
wykonywana przy każdym uruchomieniu systemu. @ bukzor na sudo setupcon
to 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.local
dodaje dodatkowo uruchomić kod i duplikatów, co zostało już zrobione przez domyślny system loadkeys. Ta rc.local
metoda może być mniej bezpieczna, ponieważ zależy od niestandardowej ścieżki do mapy klawiszy.
setupcon
metodę. Dodaj własną odpowiedź lub edytuj moją, jeśli chcesz.
setupcon
. Wydaje się, że sierpień wykonane przy założeniu, że sudo setupcon --save
pójdzie do rc.local
których ja nie sądzę, to prawda, ale jeśli tak, to nie trzeba sudo
się 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.local
instalowanie 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 --save
do 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