The Linux Keyboard HOWTO: Przykłady użycia loadkeys i xmodmap
Następna strona
Poprzednia strona
Spis treści
16. Przykłady użycia loadkeys i xmodmap
Zamiana Caps Lock i Control na klawiaturze (zakładając że używasz
układów klawiatur 0-15; sprawdź przez dumpkeys | head -1)
% loadkeys
keymaps 0-15
keycode 58 = Control
keycode 29 = Caps_Lock
%
Powyższa zamiana tylko pod X:
% xmodmap .xmodmaprc
gdzie .xmodmaprc zawiera linie
remove Lock = Caps_Lock
remove Control = Control_L
keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L
O co chodzi z tymi numerami klawiszy? Backspace ma 14 pod Linuxem,
a 22 pod X? No cóż, numery najlepiej uważać za przydzielone dowolnie;
linuxowy numer klawisza znaleźć można używając showkey(1), a numer
Xowy przez xev(1). Często numer Xowy będzie o 8 większy niż
linuxowy.
Coś co ludzie chcą zmieniać to przypisania klawiszy funkcyjnych.
Załóżmy że chcesz aby F12 wypisywał ciąg znaków "emacs". Wtedy
% loadkeys
keycode 88 = F12
string F12 = "emacs "
%
zrobi to. Ściślej, procedura wygląda mniej więcej tak: (i) znajdź
kody klawiszy które mają mieć zmienione przypisania, za pomocą showkey(1),
(ii) zachowaj bieżący układ klawiatury, zrób kopię i ją edytuj.
% dumpkeys > my_keymap
% cp my_keymap trial_keymap
% emacs trial_keymap
% loadkeys trial_keymap
%
Format tablicy zgadnąć można patrząc na wynik dumpkeys, a opisuje
go keytables(5). Gdy nowy układ klawiatury działa tak jak tego chcemy,
możesz wstawić wywołanie
loadkeys my_new_keymap
do /etc/rc.local czy coś takiego, żeby wykonywać je automatycznie
w czasie ładowania. Zauważ że zmiana klawiszy modyfikujących jest
zawiła, a nowicjusz może łatwo wplątać się w sytuację z której
wydostać się może tylko ekspert.
Domyślnym katalogiem układów klawiatur jest /usr/lib/kbd/keytables.
Domyślnym rozszerzeniem plików układów jest .map. Tak więc loadkeys uk
załaduje prawdopodobnie /usr/lib/kbd/keytables/uk.map.
(Na moim komputerze) /dev/console jest odnośnikiem symbolicznym
do /dev/tty0, a jądro uważa /dev/tty0 za synonim
bieżącej WK. XFree86 zmienia właściciela /dev/tty0, ale nie
przywraca stanu poprzedniego po zakończeniu. Tak więc polecenie dumpkeys
może się nie powieść, ponieważ ktoś inny jest właścicielem
/dev/tty0; w takim przypadku możesz wpierw uruchomić X.
16.1 "Mogę używać tylko jednego palca do pisania"
Czy klawisze Shift, Ctrl i Alt mogą się zachowywać jak przełączniki?
Tak, po napisaniu:
% loadkeys
keycode 29 = Control_Lock
keycode 42 = Shift_Lock
keycode 56 = Alt_Lock
%
klawisze lewy Control, Shift i Alt będą działać jako przełączniki.
Odpowiednie numery podaje showkey (zwykle są to 29, 97, 42, 54, 56, 100
dla lewego i prawego Control, Shift i Alt odpowiednio), a funkcje to
Control_Lock, Shift_Lock, Alt_Lock, ALtGr_Lock.
Co z klawiszami "sticky" [zachowywanymi w buforze do naciśnięcia
następnego klawisza(y) - przyp. tłum.] ?
Od wersji 1.3.33, jądro wie o modyfikatorach "sticky". Działają one
na następny naciśnięty klawisz. Tak więc, tam gdzie wcześniej trzeba
było trzysymbolowej sekwencji Shift_Lock-a-Shift_Lock można teraz używać
dwusymbolowej sekwencji SShift_Lock-a.
Bieżąca wersja pakietu kbd nie zawiera jeszcze kodu dla "stickies",
tak więc trzeba je wywoływać używając ich kodów szesnastkowych. Na
przykład:
% loadkeys
keymaps 0-15
keycode 54 = 0x0c00
keycode 97 = 0x0c02
keycode 100 = 0x0c03
%
uczyni prawe Shift, Ctrl i Alt wersjami "sticky" klawiszy lewych.
Od wersji 0.93 można napisać
% loadkeys
keymaps 0-15
keycode 54 = SShift
keycode 97 = SCtrl
keycode 100 = SAlt
%
by otrzymać ten sam rezultat. Pozwoli to napisać ci Ctrl-Alt-Del
trzema naciśnięciami klawiszy, używając jednej ręki
to obtain the same result.
Następna strona
Poprzednia strona
Spis treści