Skocz do zawartości

Konfiguracja Klawiatury - Fedora 10


Theriel

Rekomendowane odpowiedzi

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...

Odnośnik do komentarza
Udostępnij na innych stronach

  • 5 months later...

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?

Odnośnik do komentarza
Udostępnij na innych stronach

  • 14 years later...

Potrzebuję własnie pomocy w tym zakresie. Na komputerach z windows jest do tego gotowe narzędzie proste w uzyciu jak parasol, tu jest to strasznie skomplikowane w porównaniu. Często potrzebuję pisać po niemiecku za pomocą polskiej klawiatury, na windows utworzyłem w 2 minuty własny layout klawiatury niemieckiej wraz z instalatorem MSI który jest odpowiednikiem polski programisty z tą różnicą że alt+a daje ä, alt+o daje ö, alt+s daje ß itd. W Fedora próbowałem różnych instrukcji, ale układ klawiatury nie pojawia się na liście podczas dodawania nowego układu, co ciekawe jest nawet układ o nawie "custom user layout", ale jest pusty i brak jakiegokowiek narzędzia do obsługi tego. O co chodzi? Może mi ktoś pomóc. Jednocześnie chciałbym to uczynić na przyszłośc proste w aplikowaniu na kolejnych komputerach tak jak to jest w windows. Chciałbym aby to służyło do pracy bez potrzeby dłubania godzinami przy trywialnych sprawach. Dziękuję i serdecznie pozdrawiam.

Odnośnik do komentarza
Udostępnij na innych stronach

Ale archeologia. (-: Nie jestem pewien, czy dobrze rozumiem.

Zmiana układu klawiatury jest jak najbardziej możliwa i mamy do tego gotowe miejsce w ustawieniach. Potem można się między nimi przełączać klikająć WIN+SPACJA na klawiaturze.

Chyba, że potrzebna jest zasadniczo polska klawiatura, ale z dodanymi niemieckimi krzaczkami, na przykład w miejsce klawiatury numerycznej. To też może być możliwe, ale pod pewnymi warunkami. Daj znać, że o to właśnie chodzi i napiszę wówczas, jak to zrobić.

ustawienia.jpg

Odnośnik do komentarza
Udostępnij na innych stronach

Potrafię sobie dodać niemiecki układ klawiatury, tylko że on nie jest zgodny z klawiaturą fizyczną co jest sporym kłopotem użytkowym. Jak juz pisałem w windows stworzyłem włąsny układ , nazwijmy go "niemiecki-programisty" i to samo chcę zrobić na kompuetrach z Fedora. Litery charakterystyczne niemieckie są osiągane dokładnie jak w języku polskim polskie, jak napisałem poprzednio. alt+a ma dawać ä, alt+o ma dawać ö, alt+s ma dawać ß itd.  Cała reszta ma być idealnie jak w polski-programisty, czyli zgodnie z fizyczną klawiaturą angielski-USA której używa się w polsce. Nie wiem jak to napisac jaśniej.

Odnośnik do komentarza
Udostępnij na innych stronach

No to po prostu kwestia wyboru odpowiedniego układu klawiatury. Dla przykładu ja mam do wyboru (spośród wielu, wielu innych) m.in. takie układy. Na górze domyślny Polski. Na dole po prawej domyślny Niemiecki, po lewej Niemiecki (USA), który jak się domyślam jest układem, który chcesz mieć u siebie.

image.thumb.png.40be7271d4a6b8ed903fd2bae3c83511.png 

PS. Takie fajne podglądy i tak szeroki wybór mam w KDE, nie wiem, czy Gnome też ma coś takiego.

  • Like 1
Odnośnik do komentarza
Udostępnij na innych stronach

Na liście wyboru układów.

image.thumb.png.86c2b993deff2ea387617b9d4764dfd3.png

Alternatywnie jest opcja ustawienia klawiatury przez localectl. Zakładając, że korzystasz ze zwykłej klawiatury generic z 104 klawiszami (taka jak moja na screenie z poprzedniego postu) polecenie powinno wyglądać mniej więcej tak. Minus, że to nie zapewni ci takiego wygodnego przełączania układów jak to, co masz zintegrowane w DE.

localectl set-x11-keymap de pc104 us

 

Odnośnik do komentarza
Udostępnij na innych stronach

Ok, znalazłem! Dzięki za pomoc, z tym powalającym intuicyjnością interfejsem nigdy bym tego nie znalazł, nawet nie wiedziałbym że istnieje taki układ klawiatury. Spełnia to oczywiście w 100% moje oczekiwania. 

Dla zainteresowanych - aby uzyskać dostęp do układu German (US) trzeba najpierw kliknąć pozycję German (Germany). Wyszukiwarka dostępna na dole okna niestety tak głęboko nie szuka.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...