Keďže väčšinu času používam počítač na programovanie a podobné činnosti, tak používam americkú klávesnicu. Ale keď občas musím napísať niečo po slovensky nastáva problém – neviem, kde sa nachádzajú zátvorky, úvodzovky a mnohé iné znaky, musím hľadať dokonca aj slovenské znaky nadchádzajúce sa v hornom rade na klávesnici. Najhoršie je, že keď sa vrátim k americkej klávesnici, tak si znovu všetko mýlim. Takže som sa rozhodol urobiť s tým koniec a vytvoriť si vlastne rozloženie klávesnice.
Svoje rozloženie klávesnice si predstavujem ako doplnenie americkej klávesnice o znaky s diakritickými znamienkami, ktoré sa budu zadávať stlačením AltGr (pravého Alt) a príslušného znaku bez diakritiky (napríklad AltGr+a je „á“).
V tomto článku chcem opísať vytvorenie takéhoto rozloženia klávesnice. Môžete ho samozrejme upraviť podľa vlastných potrieb, alebo vytvoriť úplne iné rozloženie.
Vytvorenie rozloženia klávesnice
Takže začnime. Nastavenia klávesnice systému X Window sa väčšinou nachádzajú v adresári /etc/X11/xkb/
. Nás bude zaujímať najmä adresár symbols
, v ktorom sa nachádzajú definície rozložení klávesníc. Pre počítače PC je určený podadresár pc
. V ňom som vytvoril súbor s mojim rozložením. Nazval som ho sk_sergejx
. Definícia môjho rozloženia vyzerá tak:
partial default alphanumeric_keys
xkb_symbols "basic" {
name[Group1]= "Slovak by sergejx";
include "pc/latin"
key <AD01> {[ q, Q, adiaeresis, Adiaeresis ]};
key <AD03> {[ e, E, eacute, Eacute ]};
key <AD05> {[ t, T, tcaron, Tcaron ]};
key <AD06> {[ y, Y, yacute, Yacute ]};
key <AD07> {[ u, U, uacute, Uacute ]};
key <AD08> {[ i, I, iacute, Iacute ]};
key <AD09> {[ o, O, oacute, Oacute ]};
key <AD10> {[ p, P, ocircumflex, Ocircumflex ]};
key <AC01> {[ a, A, aacute, Aacute ]};
key <AC02> {[ s, S, scaron, Scaron ]};
key <AC03> {[ d, D, dcaron, Dcaron ]};
key <AC09> {[ l, L, lcaron, Lcaron ]};
key <AB01> {[ z, Z, zcaron, Zcaron ]};
key <AB03> {[ c, C, ccaron, Ccaron ]};
key <AB06> {[ n, N, ncaron, Ncaron ]};
key <SPCE> {[ space, space, nobreakspace, nobreakspace ]};
include "level3(ralt_switch_multikey)"
};
Poďme si vysvetliť jednotlivé časti tohto súboru. Na začiatku som dal svojmu rozloženiu meno „Slovak by sergejx“. Na ďalšom riadku je pripojenie štandardnej latinskej klávesníce (include "pc/latin"
), ktorá je podobná americkej klávesnici a je základom pre väčšinu európskych klávesníc.
Ďalšie riadky už obsahujú definície kláves, význam ktorých chcem mať iný oproti pc/latin
. V lomených zátvorkách sú označenia kláves, tie označujú buď polohu klávesy (napríklad <AC01>
je prvé písmeno v treťom riadku (riadky sa počítajú zdola a označujú sa písmenami: A, B, C, D…)) alebo jej názov (napr. <SPCE>
znamená space – medzerník). Za tým nasleduje zoznam znakov priradených danej klávese. Prvý znak je pri normálnom stlačení klávesy, druhy pri stlačenom Shift, tretí – pri stlačenom klávese „multikey“ a štvrty – pri stlačení Shift aj „multikey“. Názvy znakov sa dajú najjednoduchšie zistiť z iných rozložení (napríklad z pc/sk
). Znaky s dĺžňom máju k názvu pridané „acute“, znaky s mäkčeňom – „caron“.
Na predposlednom riadku som nastavil, že „multikey“ bude AltGr (pravý Alt).
Ako vidíte znaky s diakritikou sa dajú napísať stlačením AltGr a príslušného znaku bez diakritiky (fungujú samozrejme aj veľké písmena). Výnimkou sú znaky „ô“ a „ä“, ktoré som dal na „p“ a „q“, keďže „o“ a „a“ už boli obsadené. Okrem toho som nastavil, aby medzerník pri stlačenom AltGr generoval pevnú medzeru.
Mŕtve klávesy
Mŕtvym klávesom sa nazýva kláves, ktorý generuje len diakritické znamienko, ktoré sa spojí s znakom, ktorý zadáte za nim. Na slovenskej klávesnici sú napríklad mŕtve klávesy pre dĺžeň a mäkčeň. Ja som do svojho rozloženia žiadne mŕtve klávesy nepridával, lebo som využil tie, ktoré sú definované v pc/latin
. Asi najdôležitejšie z nich sú v tabuľke.
Kláves | Pri stlačenom AltGr | Pri stlačenom AtlGr a Shift |
---|---|---|
; | dĺžeň (í) | dve čiary (ű) |
‘ | strieška (ô) | mäkčeč (ň) |
[ | dve bodky (ü) | krúžok (ů) |
V pc/latin
sú tieto klávesy definované takto:
key <AC10> {[ semicolon, colon, dead_acute, dead_doubleacute]};
key <AC11> {[apostrophe, quotedbl, dead_circumflex,dead_caron]};
key <AD11> {[bracketleft,braceleft,dead_diaeresis, dead_abovering]};
Pridanie nového rozloženia do systému
Teraz, keď je rozloženie klávesnice už hotové, je potrebné dať systému vedieť o jeho existencii – musíme ho pridať do súboru v ktorom sú popisy rozložení. Tento súbor sa zväčša nachádza v adresári /etc/X11/xkb/rules
. Pokiaľ používate server X.org tak potrebný súbor sa vola xorg.xml
, v prípade, že používate XFree86, je to xfree86.xml
. V danom súbore je v časti ohraničenej <layoutList>
a </layoutList>
potrebne pridať opis nového rozloženia, ktorý môže vyzerať takto:
<layout>
<configItem>
<name>sk_sergejx</name>
<shortDescription>Skx</shortDescription>
<description>Slovak by sergejx</description>
<description xml:lang="sk">Slovenské od sergejx</description>
</configItem>
<variantList/>
</layout>
Užitočné môže byť tiež pridať opis rozloženia do súboru xorg.lst
(resp. xfree86.lst
), ktorý môžu používať staršie aplikácie. V tomto súbore za riadkom
! layout
nasleduje zoznam rozložení, do ktorého je potrebné pridať riadok opisujúci nové rozloženie, napríklad takýto:
sk_sergejx Slovak by sergejx
Teraz je potrebné už len reštartovať X server a môžeme vybrať nové rozloženie klávesnice v nastaveniach Gnome alebo KDE, alebo si ho môžete nastaviť v /etc/X11/xorg.conf
(pripadne /etc/X11/XF86Config
, ak používate XFree86) ako štandardné rozloženie klávesnice.
Odkazy
Aktualizácia (29.8.2006)
V X.org 7.0 sa zmenili cesty ku konfiguračným súborom. Nastavenia rozložení klávesnice sa presunuli z /etc/X11/xkb/
do /usr/share/X11/xkb/
. Okrem toho tu už nie je adresár symbols/pc/
a súbory s rozloženiami sú priamo v symbols/
, preto treba aj v definícii rozloženia zmeniť riadok
include "pc/latin"
na
include "latin"
Ďalej je potrebné zmeniť aj riadok
include "level3(ralt_switch_multikey)"
na
include "level3(ralt_switch)"
Môžete si stiahnuť aktualizované rozloženie aj s inštalačným skriptom. Viac informácii o inštalačnom skripte je v samostatnom článku.