Jump to content
Theriel

Konfiguracja Klawiatury - Fedora 10

Recommended Posts

Konfiguracja klawiatury - Fedora 10

Witam!
Temat wydawać się może dosyć banalny, ale trochę czasu spędziłem ostatnio nad tym, aby skonfigurować swoją klawiaturę dokładnie według własnych upodobań. Może komuś się przyda ten mały poradnik.

Modyfikacja układów klawiatury

Czasami zdarza się, że ktoś sprowadził laptopa z USA, kupił klawiaturę w Niemczech albo jest tłumaczem i często korzysta ze znaków pochodzących z różnych języków. W takiej sytuacji żadne domyślne ustawienia klawiatury nie pomogą, ale rozwiązanie jest proste - sami stwórzmy sobie layout.

Najprostszym sposobem jest skorzystanie z X keyboard extension [xkb].

0. Wstęp - podstawy.
konfiguracja XKB siedzi w /usr/share/X11/xkb/ i jest bardzo otwarta na nasze wszelkie propozycje. W katalogu mamy foldery/moduły:
  • keycodes - zamienia scancode w jakieś "ludzkie" oznaczenie. To dzięki tym plikom będziemy mogli swobodnie korzystać z oznaczeń takich jak SPCE, RTRN, TAB itd. Niezależnie od modelu klawiatury.
  • types - ustawia modyfikatory. Np: shift, alt, win (super key) itd., czyli dodatkowe klawisze, które zmieniają znaczenie innych przycisków.
  • compat - ustawia zachowanie modyfikatorów
  • symbols - układy klawiatury, czyli jaki znak ma się wyświetlić po naciśnięciu danego przycisku

1.Tworzenie layoutu
Możemy stworzyć layout of zera (nie polecam, wymaga znacznie większego nakładu pracy), albo po prostu oprzeć nasz układ o jakiś podstawowy - np: mamy laptopa kupionego w Wielkiej Brytanii, przyciski są z układu brytyjskiego, ale chcielibyśmy mieć polskie znaki pod altGr (np: alt+s -> ś). Zmiana ustawień klawiatury na "polski" nie pomoże zbytnio - wszystkie znaki specjalne, przecinki etc. będą zupełnie w innych miejscach niż fizycznie nadrukowane na klawiaturze.

Jak już wiemy ze wstępu, pliki z gotowymi layoutami znajdują się w katalogu xkb "symbols". Załóżmy, że będziemy chcieli stworzyć layout w oparciu o układ brytyjski, czyli interesuje nas plik gb, który otwieramy ulubionym edytorem (np: sudo gedit /usr/share/X11/xkb/symbols/gb).

2.Struktura pliku z konfiguracją układu klawiatury
2.1.Podstawy
Każdy plik definiujący klawiaturę alfanumeryczną składa się z kilku wariantów. Tzn., dany układ może być np: polski, ale może to być klawiatura polska QWERTY, QWERTZ, Dvorak etc.

Analizując jeden wariant:

partial alphanumeric_keys
xkb_symbols "nazwa_wariantu" { <---- definiuje nazwę naszego wariantu
include "latin" <---- informuje, że chcemy wczytać domyślny układ łaciński (patrz plik /symbols/latin)
jakieś informacje o klawiszach
include "level3(ralt_switch)" <---- informuje, że jako przełącznik 3 poziomu (patrz niżej) ma być wykorzystywany prawy alt (altGr)
};

Z ważniejszych rzeczy:
  • tylko jeden wariant może mieć parametr "default", tzn. partial default alphanumeric_keys. Jak się można domyślić, jeśli ktoś będzie chciał uruchomić ten układ (np: gb) to domyślnie dostanie taki a nie inny wariant.
  • Jak łatwo zauważyć, większość wariantów jest opartych o jakiś inny układ - najpierw wczytwany jest jakiś domyślny układ (w tym przykładzie "latin"), a następnie podlega on modyfikacji w dalszej części.
  • W promocji dostajemy kilka innych powiązań klawiszy, dorzucanych z okazji wykrycia przez Linuksa klawiatury (w zależności od wykrytego sprzętu). Najczęściej jest to plik "pc".

Jeżeli chcemy stworzyć własny wariant - dodajemy całą nową sekcję (kopiuj/wklej) i zmieniamy odpowiednio nazwę wariantu. Jeśli chcemy skorzystać np: z domyślnego brytyjskiego, ale dodać tylko polskie znaki, to zaczynamy include "gb(basic)".

2.2.Informacje o klawiszach
Teraz czas przyszedł na konkrety, czyli chcemy ustawić jak ma działać dany klawisz. Weźmy przykład:
key <AD03> { [ e, E, eogonek, Eogonek ] };

2.2.1.Określenie klawisza
Każdy klawisz ma swój "kod" - współrzędne na klawiaturze (np: AD03) bądź własne oznaczenie (BKSL, SPCE, RTRN, TAB etc.).
Współrzędne składają się z 3-4 znaków. Najpierw mamy informację, o którą część klawiatury chodzi: może to być A (alfanumeryczna) lub KP (keypad). Później:
  • w wypadku alfanumerycznej: druga litera oznacza rząd, licząc od dołu (od spacji) do góry (czyli rząd ze spacją ma numer A, rząd z cyframi ma numer E), później jest numer klawisza w rzędzie, licząc od lewej strony. Czyli, w wypadku klawiatury QWERTY oznaczenie AD03 mówi: klawisz jest w części alfanumerycznej, w rzędzie D (czyli zaczynającego się od qwert...), pod numerem 3. Liczymy, patrzymy - jest to przycisk "e".
  • w wypadku keypada: po "KP" możemy znaleźć 1 lub 2 znaki, w zależności od przycisku. Np: KP3 oznacza przycisk na keypadzie "3". KPDL oznacza przycisk delete etc.

To jest tylko konwencja, jaką zastosowali developerzy - konkrety oczywiście znajdziemy w folderze "keycodes".

Jak już wiemy o jaki przycisk chodzi, czas aby go ożywić. Każdy przycisk może mieć ustawionych kilka poziomów - domyślnie 4 (odpowiadają one kolumnom między znacznikami -> {[1,2,3,4]} ). (Ale nic nie stoi na przeszkodzie aby zdefiniować inną ilość poziomów dla danego przycisku). Informują one o tym jaki znak ma być wyświetlony gdy przycisk zostanie wciśnięty.
Poziomy (najpopularniejsze ustawienia dla grupy 4 elementowej):
1 - sam klawisz
2 - klawisz + shift
3 - klawisz + modyfikator 3 poziomu
3 - klawisz + shift + modyfikator 3 poziomu

2.2.2.Modyfikator (najczęściej 3 poziomu):
Takim przełącznikiem najczęściej jest AltGr. Ustawienie pre-definiowanego przełącznika najczęściej jest na końcu opisu wariantu. Możliwości jest wiele, dokładne informacje znajdziemy w (..)/xkb/types oraz (..)/xkb/symbols/group, (..)/xkb/symbols/level3.

Często wykorzystywane: include "level3(ralt_switch)" - plik level3 zawiera definicję ralt_switch, która, jak można się domyślić, ustawia prawy alt jako przełącznik 3 poziomu. level3(lwin_switch) ustawi lewy przycisk windowsa jako przełącznik itd.

2.2.3.Ustawienie znaku
Jak łatwo się domyślić, poszczególne symbole umieszczone w nawiasach {[]} to znaki, które zostaną wyświetlone na ekranie gdy zajdzie dane zdarzenie z danym klawiszem. Ważniejsze oznaczenia konwencjonalne:
-litery i cyfry są takie same (s wyświetli s, 3 wyświetli 3)
-dodanie "acute" na końcu litery dodaje kreskę nad nią (np: sacute, Sacute -> ś, Ś)
-dodanie "ogonek" dodaje... ogonek ;) (eogonek, Eogonek -> ę, Ę)
-dodanie "diaeresis" dodaje umlaut (dwie kropki nad znakiem) (np: udiaeresis -> ü)

I jak to zwykle bywa - to tylko konwencja. Po konkrety zapraszam do /usr/include/X11/keysymdef.h. Jeśli nie podobają nam się te konwencje to zawsze możemy skorzystać bezpośrednio z unicode, np: 0x1000038 lub U430.

3.Sprawdzamy, czy wariant działa.
Aby zmienić układ klawiatury wykorzystujemy komendę:
setxkbmap XY -variant ZZZZ
gdzie:
XY - mapa klawiatury, np: gb
ZZZZ - nasz wariant (np: "polski")

Czyli wpisujemy w konsolę na przykład: "setxkbmap gb -variant polski". Jeśli zaskoczy - wszystko jest OK. Jeśli nie - coś gdzieś namieszaliśmy (uwaga na niepozamykane nawiasy itp.)

4.Ustawienie układu klawiatury "na stałe"
Jak już stworzyliśmy własny layout czas go aktywować. Istnieją 3 sposoby.

4.1.Wygodne ustawienie. Dla leniwych.
Tworzymy skrypt:
gedit ~/.key_layout.sh

Jako zawartość pliku wpisujemy:
#!/bin/bash
setxkbmap XY -variant ZZZZ


Oczywiście komenda setxkbmap z odpowiednimi parametrami (patrz wyżej), np: "setxkbmap gb -variant polski"

Teraz wystarczy uruchomić to przy starcie naszych okienek:
Gnome:
-System->Preferences->Personal->Sessions
-Dodaj. Wpisujemy nazwę (np: "Ustaw Klawiaturę"), jako komendę wpisujemy "~/.key_layout.sh"

-KDE:
ln -s ~/.key_layout.sh ~/.kde/Autostart/

4.2. Kulturalne rozwiązanie.
Sprawiamy, że nasza nowa konfiguracja będzie ogólnie rozpoznawalna w konfiguratorach.

Edytujemy najpierw:
/usr/share/X11/xkb/rules/evdev.lst
Dodając w sekcji ! variant:

"polski gb: Polskie znaki"



Mówi to konfiguratorowi graficznemu mniej więcej tyle: istnieje wariant o nazwie "polski", który znajduje się w układzie klawiatury "gb" i ma opis "Polskie znaki". Poźniej w pliku: /usr/share/X11/xkb/rules/evdev.xml znajdujemy odpowiednia sekcje layout (np: gb) szukamy podsekcji <variantlist> i dodajemy:

<variant>
   <configItem>
      <name>polski</name>
      <description>Polskie znaki</description>
   </configItem>
</variant>


Powtarzamy to samo dla plików base.lst i base.xml (istnieją opinie, że base.lst i base.xml już dłużej nie są wykorzystywane, ale... zmienić nie zaszkodzi).

Teraz możemy wejść:
Gnome: System - Preferences - Hardware - Keyboard
KDE: Regional & Accessibility -> Keyboard Layouts -> Enable Keyboard Layout
i dodać tam nowy layout z naszym wariantem.

4.3. Ogólne rozwiązanie (wymaga uprawnień roota).
edytujemy plik /etc/X11/xorg.conf
Należy dodać do sekcji "InputDevice" (a jak ktoś jej nie ma - stworzyć) takie opcje:

Option "XkbLayout" "gb"
Option "XkbVariant" "polski"


Oczywiście parametry wg uznania. Można się trochę pobawić ustawieniami: np chcemy aby była ładowana klawiatura gb z naszym wariantem "polski" oraz klawiatura niemiecka ze standardowym ustawieniem, a dodatkowo chcielibyśmy móc przełączać między nimi z pomocą alt+shift.
Piszemy:

Option "XkbLayout" "gb,de"
Option "XkbVariant" "polski,"
Option "XKbOptions" "grp:alt_shift_toggle"


--------

Mam nadzieję, że komuś się przyda. Opis konfiguracji HALa oraz mapowania klawiszy multimedialnych może niedługo tu również się znajdzie...

Share this post


Link to post
Share on other sites

Programik z GUI to przypisywania akcji klawiszom których inne programy nie widzą (np xbindkeys, konfiguratory skrótów z KDE, GNOME i reszty). Szkoda tylko że qt twierdzi że niektórych przypisanych klawiszy nie obsługuje (funkcje dodatkowe CUT, PASTE itp.) a w GNOME nie ma tak rozbudowanego konfiguratora skrótów ;]

 

http://keytouch.sourceforge.net/

Paczki do fedory są, tylko trochę stare, ale działają. Może Ktoś by umiał zrobić nowe paczki?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...