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