Linuxdoc Linux Questions
Click here to ask our community of linux experts!
Custom Search

3. Nastavenia konzoly

Táto kapitola by mala čítavou, poučnou a zároveň zábavnou formou pojednávať o veciach medzi prstom a okom. Základnou otázkou nech nám je „Zmysel života, vesmíru a vôbec.“

3.1. Slovenčina na výstupe textovej konzoly

3.1.1. Fonty

Keď zobudíte o polnoci hocikoho, kto vo svojom živote videl počítač a opýtate sa ho, ako rozbehať slovenské znaky, určite spomenie niečo ako fonty. Na zobrazovanie znakov na obrazovku -- či už v textovom alebo grafickom režime -- slúžia skutočne fonty. Fonty pre konzolu a programy určené na manipuláciu s nimi sa nachádzajú v balíku kbd. Po jeho nainštalovaní sú súbory s fontami umiestnené v adresári /usr/lib/kbd/consolefonts/.

Pre nás sú dôležité najmä súbory, ktoré majú v mene iso02, lat2, latin2 alebo číslo 852. To naznačuje, že ide o fonty s podporou ISO-8859-2 (latin2), prípadne DOS codepage 852, čo sú štandardy aj pre slovenskú diakritiku.

Pozor, pôvodný balík sa volá kbd, ale existuje jeho rozšírená verzia, ktorá sa objavuje v distribúciách -- console-tools. Rozdiely medzi nimi sú minimálne, pre kbd budeme používať príkaz setfont, pre console-tools zase consolechars. Taktiež, názvy dodávaných fontov sa trochu odlišujú, takže budem uvádzať ekvivalenty pre oba balíky.

3.1.2. Ako fonty fungujú

Existuje niekoľko súborových formátov na ukladanie fontov, princíp je však rovnaký -- súbor obsahuje 256 obrázkov (glyphs), z ktorých všetky majú rovnaký rozmer (napr. 8x16 bodov -- veľkosť fontu) a každý zobrazuje jeden znak.

Aby nám tých 256 obrázkov bolo na niečo dobrých, je treba font zo súboru zaviesť do znakového generátora videokarty. Na to slúži jeden z príkazov

kbd:

setfont meno-fontu

console-tools:

consolechars -f meno-fontu

meno-fontu môže byť absolútna alebo relatívna cesta k súboru s fontom, alebo meno súboru, pokiaľ sa nachádza v adresári /usr/lib/kbd/consolefonts/, či už s príponou, alebo bez.

Pre ľahšie pochopenie tých obrázkov, skúste nahradiť meno-fontu reťazcom t850 a sledujte výsledok na všetkých virtuálnych konzolách.

Naspäť k štandardnému fontu sa vždy dostanete jedným z príkazov

kbd:
sh$ setfont
                
console-tools:
sh$ consolechars -d
                

Čo sa presne deje? Program setfont/consolechars zavedie všetkých 256 obrázkov do znakového generátora EGA/VGA karty. Od tohto momentu sa na všetkých konzolách bude znak s ASCII kódom napr. 65 vykreslovať ako šesdesiaty piaty obrázok z našeho súboru s fontom. Ešte raz pripomínam a dvakrát podčiarkujem, že font je vždy rovnaký pre všetky virtuálne konzoly, na ktorých zobrazuje znaky ten istý znakový generátor EGA/VGA karty.

Dôležité je uvedomiť si, že interne ide naozaj len o obrázky a tvar niektorého znaku vo fonte nemá nič spoločného s jeho ASCII kódom. Ak by ste si sami vytvorili nejaký font (v dokumentácii ku kbd/console-tools máte informácie o všetkých formátoch), v ktorom by mal ten šesdesiaty piaty obrázok tvar písmena z, po jeho natiahnutí sa vám bude pri zadaní Alt-6-5, čo je ASCII kód písmena A, zobrazovať znak z. Ale ak tento znak uložíte do súboru, v tomto sa bude nachádzať bajt s hodnotou 65, teda písmeno A.

3.1.3. Fonty ISO-8859-2

Toto využíva štandard ISO-8859-2 (a iné) - spoločné znaky s ASCII vykreslí rovnako a znaky špecifické pre tú ktorú abecedu „namapuje“ na menej používané znaky ASCII tabuľky. Kam presne ktorá norma umiestňuje znaky s diakritikou, nás zaujímať nemusí (pokiaľ nevytvárame vlastné fonty), hlavné je, že napr. anglický text je nezmenený (angličtina má všetky znaky spoločné so slovenčinou) a slovenský text už viac neobsahuje hlúpe znaky, ktoré so slovenčinou nemajú nič spoločné.

Slovenské (ISO-8859-2) fonty, ktoré sú súčasťou balíkov kbd a console-tools:

kbd:

lat2-{08,10,12,14,16}, lat2a-16, iso02.{08,14,16}

console-tools:

lat2-{08,10,12,14,16}, lat2u-16, iso02.f{08,14,16}

Na zavedenie fontu použite príkaz

kbd:
sh$ setfont meno-zo-zoznamu
                
console-tools:
sh$ consolechars -f meno-zo-zoznamu
                

Odporúčam používať lat2a-16, resp. lat2u-16. Ostatné fonty majú bezchybné zobrazovanie slovenských znakov, problém však nastáva pri aplikáciách, ktoré využívajú znaky na kreslenie rámčekov (napr. mc).

Čo sa týka fontov iso02.* z balíka kbd, treba pri nich použiť argument príkazu setfont -m latin2u.trans. Takže celý príkaz na zavedenie niektorého z týchto fontov je:

kbd:
sh$ setfont iso02.16 -m latin2u.trans
                
console-tools:
sh$ consoletrans -f lat2u-16 -m iso02
                

V súbore latin2u.trans (iso02.acm) sa nachádza tzv. Aplication-Charset Map (ACM), akási prevodná tabuľka, ktorá obsahuje riadok pre každý znak fontu a jeho podobu v kódovaní UTF-8.

3.1.4. Automatické zavádzanie fontov

Ak ste si našli svoj font, ktorý chcete používať a mať ho automaticky zavedený vždy pri štarte, nie je nič ľahšie. Inicializačný skript rc.sysinit robí asi toto: skontroluje, či existuje súbor /etc/sysconfig/i18n a program (skript) /sbin/setsysfont. Ak áno, spustí setsysfont. Ten načíta /etc/sysinfo/i18n a podľa premenných definovaných v tomto súbore príkazom consolechars alebo setfont zavedie font.

Takže stačí nastaviť správne premenné v súbore /etc/sysconfig/i18n a skript /sbin/setsysfont urobí všetko za nás. Tento skript možno spustiť kedykoľvek chcete zaviesť font nastavený ako štandardný pre systém.

Premenné v súbore /etc/sysinit/i18n sú (používajte len mená súborov bez cesty a bez prípony!):

kbd:
SYSFONT=lat2a-16
                
console-tools:
SYSFONT=lat2u-16
SYSFONTACM=iso02
                

Skriptík setsysfont obsahujú oba balíky a kedykoľvek môžete zaviesť font nastavený ako systémový v súbore /etc/sysinit/i18n jednoduchým zadaním

sh$ /sbin/setsysfont
        

Podľa toho, čo sme si hovorili o tom, že pre všetky virtuálne konzoly môže byť nastavený len jeden spoločný font, nemá veľký zmysel zavádzať nastavovanie fontu zvlášť pre každého užívateľa. S tým súvisí aj fakt, že nastavenie fontu sa vzťahuje k danému počítaču, pri ktorom práve sedíte a nie k tomu, ku ktorému ste pripojení napr. cez ssh.

Predsa len si viem predstaviť prípad, keď niektorý z viacerých používateľov jedného počítača potrebuje odlišný font. V tom prípade môže vložiť príkaz na zavádzanie fontov do svojich skriptov, ktoré vykonáva shell pri prihlásení a odhlásení. Pre bash by to mohlo vyzerať takto:

~/.bash_profile:
if tty 2>/dev/null |grep '/dev/tty[0-9]*$' &>/dev/null && ! [ -f ~/.font ]; then
        setfont -o ~/.font gr928a-8x16
fi
                
~/.bash_logout:
if tty 2>/dev/null |grep '/dev/tty[0-9]*$' &>/dev/null && [ -f ~/.font ]; then
        setfont ~/.font
        rm -f ~/.font
fi
                

Vonkoncom to nie je ideálne riešenie, ale svoj účel splní (minimálne po moment prvého odhlásenia). Trochu sa s tým pozabávajte, aby sa font (a rozloženie kláves) menilo len pri prvom prihlásení a poslednom odhlásení, tiež setfont pod iXami nemá veľmi zmysel a tak... V Tips-HOWTO je uvedený spôsob, ako zistiť, na koľkých virtuálnych konzolách je ešte užívateľ prihlásený.

Ináč, aby bolo jasné, toto vám bude fungovať len na lokálnom stroji - zamyslite sa, prečo asi setfont (aj loadkeys) nefunguje cez vzdialený terminál a či by ste z toho niečo mali, keby to tak nebolo.

Ak to s takýmto riešením myslíte vážne, tak skôr uvažujte nad modifikáciou skriptu /etc/profile.d/lang.sh, kde by sa kontroloval aj obsah užívateľského súboru ~/.i18n a podľa toho by sa zaviedol skript, popis rozloženia kláves, prípadne nejaké premenné...

3.2. Slovenská klávesnica na textovej konzole

Keď je slovenský font na konzole rozbehaný a naše národné znaky sa zobrazujú správne, máme so slovenčinou problém číslo dva - ako tam tie znaky dostať? Keby ste si chceli tento súbor len prečítať bez potreby následnej navštevy psychiatra, stačilo by zaviesť nejaký font so slovenskou podporou. Ale keďže ste uvedomelý linuxák / uvedomelá linuxáčka, hneď chcete do Slovak-HOWTO prispieť a pomocou klávesnice písať slovenský text. Na to potrebujete s tou klávesnicou niečo urobiť.

3.2.1. Popis rozloženia kláves (keymap)

Adresáre /usr/lib/kbd/keymaps/i386/qwertz/ a qwerty/ obsahujú po nainštalovaní balíka kbd/console-tools aj popisy slovenského rozloženia kláves. Pre nás sú zaujímavé súbory

sk-prog-qwerty.map.gz
sk-qwerty.map.gz
sk-prog-qwertz.map.gz
sk-qwertz.map.gz

Tieto súbory obsahujú definície rozloženia kláves pre slovenský jazyk, pričom rozdiely medzi nimi sú v umiestnení kláves Y a Z a počte slovenských znakov, ktoré pomocou nich možno napísať priamo (bez mŕtvych kláves). Najviac sa na slovenský písací stroj podobá sk-qwertz, najmenšie zmeny oproti americkej klávesnici sú zase v sk-prog-qwerty.

Súbory v adresári /usr/lib/kbd/keymaps/i386/include/ obsahujú popis základných rozložení kláves (azerty , qwerty, qwertz ), prídavných kláves (keypad, windowkeys), prípadne problémových kláves ( delete, backspace, ctrl ). Súbory linux-*.inc.gz sú špecifické pre linux (teda nie pre jazyk). Sú to napr. kľúče (F1-F12, kombinovaním s Ctrl a Shift až po F48), Shift-PgUp a Shift -PgDown, atď.

Keymapy *.inc.gz nepopisujú kompletné rozloženie klávesnice, ale len niektorých jej častí. Využívajú sa pri pripájaní (include) zo súborov *.map.gz, čo je výhodné z dôvodu jednoduchšej konfigurácie klávesnice. Napríklad zmenou jedného riadku v súbore s rozložením sk-qwerty môžme dostať rozloženie qwertz, prípadne (to asi využijete) jednoducho odstaviť znaky euro a cent, ktoré (zatiaľ?) nepotrebujeme a zbytočne nám zaberajú znaky E a C.

Na zavedenie súboru s popisom rozloženia kláves slúži nasledovný príkaz:

loadkeys nazov

kde nazov môže byť absolútna alebo relatívna cesta ku keymap súboru, alebo meno súboru, pokiaľ sa nachádza v adresári /usr/lib/kbd/keymaps/, či už s príponou, alebo bez.

Štandardné slovenské popisy rozloženia kláves nájdeme vo vyššie spomínaných *.map.gz súboroch. Ak sa chcete vrátiť k štandardnému rozloženiu, príkaz

sh$ loadkeys -d
        
zavedie pôvodné, ktoré je uložené v súbore defkeymap.map.gz niekde medzi ostatnými keymap súbormi. Predtým ale nikdy nezabudnite zmeniť režim slovenskej klávesnice na US znaky, tzn. 1 dáva 1 a nie + atď. Ak by ste predsa zabudli, je možné, že klávesy, kde sa nachádzali slovenské znaky, nebudú fungovať správne (v skutočnosti budú fungovať správne, ale vám sa to nebude páčiť). Vtedy znovu zaveďte predchadzájúcu keymapu (na nefunkčné klávesy použite AltGr - pravý Alt) a klávesou Pause/Break všetko napravíte. Potom môžete znova zaviesť defkeymap.

Pokiaľ sa vám nepáči ani jeden zo štandardných keymap súborov pre slovenčinu, čo je pravdepodobné vďaka riadku

include "euro"
        
v include súboroch qwerty-layout.inc.gz aj qwertz-layout.inc.gz, môžete kľudne pozmeniť existujúci súbor s popisom rozloženia kláves, prípadne vytvoriť nový. Nebojte sa, je to zložité! Nebudem to tu rozpisovať všetko, prezrite si zopár kmap súborov, prečítajte manuálovú stránku keymaps(5) a mali by ste to ľahko pochopiť.

My si povieme len o základných veciach, ktoré nám pomôžu pozmeniť existujúce kmap súbory s popismi slovenských klávesníc, aby ste si poradili s (mne známymi) komplikáciami, alebo upravili rozloženie kláves podľa svojho gusta.

3.2.2. Include a nesprávna funkcia kláves E a C

Problém s E a C je spôsobený zavedením jednotnej meny v európskej únii. Na vine nie je ani tak EU, ale niekto, kto symboly pre euro a cent umiestnil na AltGr-E a AltGr-C, čo sú naše obyčajné E a C. Totiž, národné klávesnice sú väčšinou riešené tak, že po zavedení súboru naďalej funguje americké rozloženie a na prepínanie do národného režimu sa používa klávesa Pause, alebo môžme zadávať národné klávesy pri súčasnom držaní klávesy AltGr (pravý Alt). Súbor euro.inc, ktorý definuje tieto dva problémové symboly, je pripojený zo súboru qwerty-layout.inc, ktorý zase pripájajú samotné slovenské keymapy (sk-qwerty, sk-prog-qwertz, …).

Riešenie je veľmi jednoduché - zeditujete qwerty-layout.inc (alebo qwertz-layout.inc) a odkomentujete znakom # riadok

include "euro"
        

3.2.3. Keycode a definovanie kláves

Predchádzajúci problém s eurom možno vyriešiť aj definovaním znakov E a C v samotnom súbore sk-qwerty.kmap.gz (alebo inom, ktorý používate) pomocou slova keycode:

keycode 18 = e
keycode 46 = c
        

V keymap súboroch je pre každú klávesu (alebo aspoň pre každú, ktorú chceme predefinovať) jeden riadok približne tohto razenia:

keycode 3 = two at lcaron two nul nul nul nul Meta_two Meta_two...
        

Číslo za keycode označuje určitú klávesu a reťazce za = hovoria o tom, aký znak má ovládač klávesnice generovať pri stlačení tejto klávesy, a to buď samotnej, alebo v kombinácii so špeciálnymi klávesmi Shift, AltGr, Control, Alt, ShiftL, ShiftR, Ctrl a CtrlR. To nám dáva 256 možných znakov na každú klávesu.

Väčšinou sa pozmeňuje len prvých 16 kombinácií modifikátorov. To je význam riadku

keymaps 0-15
        
na začiatku kmap súborov.

V nasledujúcom zozname je týchto 16 kombinácií (po riadkoch):

žiadny Shift AltGr Shift-AltGr
Control Shift-Control AltGr-Control Shift-AltGr-Control
Alt Shift-Alt AltGr-Alt Shift-AltGr-Alt
Control-Alt Shift-Control-Alt AltGr-Control-Alt Shift-AltGr-Control-Alt

Z hľadiska slovenskej klávesnice sú dôležité len prvé štyri - prvé dva sú zvyčajne nezmenené americké znaky, napr. two at, čo je 2 @, a druhé dva sú znaky slovenskej abecedy, ktoré bude ovládač klávesnice posielať aplikáciám ak pri stlačení tejto klávesy budeme súčasne držať klávesu AltGr (pravý Alt), napr. lcaron two, čo je naše ľ 2.

Aby ste mohli vkladať slovenské znaky, nemusíte celý čas pridržiavať AltGr nosom, ale môžete použiť Pause/Break, ktorý v kontexte s národnými klávesnicami funguje ako AltGr Lock. Chápte to tak, že keď sa prepnete do slovenského režimu stlačením Pause/Break, prvé a druhé dva reťazce v každom riadku keycode sa vymenia, napr.

two at lcaron two -> lcaron two two at
        

Vtedy môžete použiť AltGr na zadávanie znakov americkej klávesnice, alebo sa opätovným stlačením Pause/Break prepnúť spät do US režimu.

Riadok pre klávesu s kódom 41 (znaky ` a ~), má v súbore sk-qwerty.map.gz nasledovný tvar:

keycode 41 = grave asciitilde dead_diaeresis dead_circumflex ...
        

Mne osobne sa nepáči, že sú tu umiestnené mŕtve klávesy dead_diaeresis (dve bodky nad znakom) a dead_circumflex (mäkčeň), pretože ich nepotrebujem --- ä aj ô na slovenskej klávesnici predsa je. A keby aj nebolo, na ich písanie môžem kľudne použiť mŕtvy kláves mäkčeň. O tom si bližšie povieme v časti o compose sekvenciách. Teraz chcem mať na tomto mieste znaky ; (semicolon) a ° (degree) tak, ako je to na popiske mojej klávesnice. Zmením teda riadok takto:

keycode 41 = grave asciitilde semicolon degree ...
        

Ináč, ten stupeň asi nie je stupeň, ale mŕtvy znak krúžku nad písmenom, napr. v češtine nad u, ale taký kláves je nám fakt nanič. Radšej budeme písať stupne.

Názvy znakov, ktoré sa používajú pri definovaní jednotlivých kláves si môžete pre znaky ASCII zistiť v súbore us.map.gz. Číselné kódy všetkých kláves vám vypľuje program

showkey

Pravidlá pre názvy znakov špecifických pre slovenčinu v kmap súboroch:

  1. Prvé písmeno v názve určuje ASCII znak, pre ktorý chceme použiť diakritiku.

  2. K nemu pridáme identifikátor diakritického znamienka:

    caron --- mäkčeň
    acute --- dĺžeň
    diaeresis --- dve bodky nad
    circumflex --- vokáň

    Napríklad:

    scaron = š
    uacute = ú
    Ocircumflex = Ô

Názvy ďalších znakov špecifických pre slovenčinu:

0xa7 --- § (paragraf)
degree --- ° stupeň

Pre správnu interpretáciu identifikátorov znakov s diakritikou je nutné na začiatku kmap súboru určiť kódovú stránku, pre ktorú bude určený tento popis rozloženia kláves. Ide o to, že ten istý znak môže mať v rôznych kódových stránkach iný ASCII kód. Implicitná hodnota je iso-8859-1, teda pre slovenské keymapy je nutné vložiť riadok:

charset "iso-8859-2"
        

Ešte jeden príklad: ak chcete používať slovenské rozloženie qwertz a americké rozloženie qwerty, potrebujete vymeniť znaky Y a Z:

keycode 21 = y Y z Z
keycode 44 = z Z y Y
        

Na prvý pohľad to môže fungovať dobre, ale problém sa prejaví pri zapnutom Caps Lock - znaky Y a Z sa stále píšu malými písmenami. Pri písaní popisov rozložení znakov možno takýto problém ošetriť pridaním písmena + pred každé písmeno v keycode riadku danej klávesy. Písmeno + určuje nasledovnému písmenu atribút letter, teda sa bude pri stlačenom Caps Lock písať veľké písmeno. Všetky písmená a-z, A-Z majú tento atribút priradený automaticky, ale to len v prípade, že majú keycode riadok tvaru:

keycode 21 = y
        

V našom prípade teda musíme priradiť tento atribút všetkým znakom explicitne. Takže, konečná úprava keymapy bude:

keycode 21 = +y +Y +z +Z
keycode 44 = +z +Z +y +Y
        

Pre výmenu písmen toto riešenie funguje spoľahlivo, bohužiaľ, ešte stále neexistuje spôsob, ktorým by sa dalo dosiahnuť napríklad písanie veľkých písmen s diakritikou pri zapnutom Caps Lock jednoduchým stláčaním ich kláves, ako je to v slovenskom popise rozloženia kláves pre X Window System.

3.2.4. Mŕtve klávesy a sekvencie compose

S mŕtvymi klávesami súvisia v kmap súboroch riadky tvaru

compose 'c1' 'c2' to 'c3'
        

Predstavme si mŕtve znaky ako úplne obyčajné znaky s tým rozdielom, že ovládač klávesnice ich neposiela aplikáciám, ale zostanú niekde „visieť“, kým z klávesnice nepríde ďalší znak. Ovládač klávesnice nepošle ani tento, ale pokúsi sa spojiť ho s predchádzajúcim mŕtvym znakom a až výsledok spojenia pustí ďalej. No, a ako má to spojenie uskutočniť, to mu presne hovoria riadky compose v keymap súboroch.

V nasledujúcej tabuľke je zoznam mŕtvych znakov používaných v slovenčine, spolu s významom a znakom, ktorým sa označujú v compose sekvenciách.

Tabuľka 2. Mŕtve klávesy

Názov Význam Compose
dead_acute dĺžeň \'
dead_circumflex mäkčeň ^
dead_diaeresis dve bodky nad "

Postup pri písani compose sekvencií

  1. Každá compose sekvencia sa začína kľúčovým slovom compose.

  2. Nasleduje compose znak mŕtvej klávesy (podľa tabuľky Mŕtve klávesy), napríklad \'.

    Druhý je znak, s ktorým chceme mŕtvu klávesu kombinovať, napríklad A.

    Za kľúčovým slovom to nasleduje výsledok spojenia mŕtvej klávesy a znaku bez diakritiky, teda Á.

Je praktické mať pri vytváraní compose sekvencií zavedený slovenský font, aby ste výsledok mohli hneď kontrolovať. Veľkou pomocou je tiež možnosť príkazu loadkeys čítať zo štandardného vstupu. Napríklad:

sh$ loadkeys
include "/usr/lib/kbd/keymaps/i386/include/windowkeys.map.gz"
keycode 41 = grave asciitilde semicolon dead_diaeresis
compose '"' 'a' to 'ä'
# ukončenie zadávania:  EOF  -  Ctrl-D
sh$
        

Popis aktuálneho rozloženia kláves môžete uložiť do súboru príkazom

sh$ dumpkeys > subor
        

Ak nemáte zavedený slovenský popis rozloženia kláves, musíte zadávať tieto znaky ako Alt sekvencie, poprípade vkladať ich hex kódy v tvare 0xed pre í. Výpis znakov aktuálneho fontu spolu s ich hex kódmi vám urobí program

kbd:

showfont

console-tools:

showcfont

Ešte raz naša compose sekvencia a nejaké navyše:

compose '\'' 'A' to 'Á'   # dlhé A cez dĺžeň
compose '^'  'O' to 'Ô'   # O s vokáňom cez mäkčeň
compose '^'  'a' to 'ä'   # široké a cez mäkčeň,
compose '^'  'A' to 0x84  # ...preto nepotrebujeme dead_diaeresis
        

Mimochodom, v súbore /usr/lib/kbd/keymaps/compose/compose.latin2 máte zoznam compose sekvencií pre normu ISO-8859-2.

3.2.5. Automatické zavádzanie keymap súboru

Na nastavenie rozloženia klávesnice, ktoré chceme zaviesť pri štarte systému, nám slúži súbor /etc/sysconfig/keyboard. Pre Slováka ako repa by mal vyzerať minimálne takto:

KEYTABLE=sk-qwerty     # zavedie rozloženie kláves sk-qwerty
KBCHARSET=iso-8859-2   # ...a spomínaný súbor compose.latin2
        

Nastavenie klávesnice pri štarte má na starosti skript keytable, ktorý je volaný priamo z rc.sysinit, takže netreba vytvárať linky v adresároch pre runlevel 3/multiuser, prípadne 5/X.

V dokumentácii k initscripts sa píše: „Ak uložíte popis rozloženia kláves (použitím dumpkeys) do súboru /etc/sysconfig/console/default.kmap, zavedie sa pri štarte systému ešte pred pripájaním/kontrolou súborových systémov. To môže byť užitočné, ak potrebujete zadať heslo roota v prípade problémov. Musí to byť ‚dumpnutý‘ popis rozloženia kláves a nie skopírovaný súbor z /usr/lib/kbd/keytables/, pretože tie často ešte vkladajú (include) iné popisy z tejto adresárovej štruktúry.“

Po pripojení súborových systémov, v prípade, že existuje spustiteľný súbor /etc/rc.d/init.d/keytable a adresár /usr/lib/kbd/keymaps/, vykoná sa príkaz

sh# /etc/rc.d/init.d/keytable start
        

Tento už zavedie popis rozloženia kláves tak, ako to máte určené premennými v súbore /etc/sysconfig/keyboard, preto nemusíte vytvárať odkazy v jednotlivých rc[1-5].d/ adresároch.

To, čo sme si hovorili o zmene fontu pri prihlásení nejakého užívateľa na virtuálnej konzole, sa dá aplikovať aj na rozloženie kláves. Úplne najjednoduchšie riešenie (ktoré sa pri prvom odhlásení pošle do kríkov) je asi takéto:

~/.bash_profile:
if tty 2>/dev/null |grep '/dev/tty[0-9]*$' &>/dev/null && ! [ -f ~/.keymap ]; then
        dumpkeys > ~/.keymap
        loadkeys gr.map
fi
                
~/.bash_logout:
if tty 2>/dev/null |grep '/dev/tty[0-9]*$' &>/dev/null && [ -f ~/.keymap ]; then
        loadkeys ~/.keymap
        rm -f ~/.keymap
fi
                

3.3. Zhrnutie nastavení konzoly

Pokiaľ som sa niekde nesekol, tak minimálne v distribúciách RedHat a Mandrake by po týchto zmenách mala do pohody zašlapať slovenská podpora (fonty + klávesnica).

/etc/sysconfig/i18n:
kbd:
SYSFONT=lat2a-16
                    
console-tools:
SYSFONT=lat2u-16
SYSFONTACM=iso02
                    
/etc/sysconfig/keyboard:
KEYTABLE=sk-qwertz
KBCHARSET=iso-8859-2
              

Tiež, ak zadávate rootovské heslo s použitím iného rozloženia kláves ako je štandardné (us), vložte si jeho popis do súboru /etc/sysconfig/console/default.kmap. Pozor, nesmiete len tak skopírovať súbor, alebo vytvoriť link! Ak chcete použiť napríklad rozloženie sk-qwertz, urobte to takto:

sh$ loadkeys sk-qwertz
sh# dumpkeys >/etc/sysconfig/console/default.kmap
      

Ak chcete nastaviť slovenský font a klávesnicu len jednorazovo, tieto príkazy by to mali dokázať:

kbd:
sh$ setfont lat2a-16
sh$ loadkeys sk-qwertz
              
console-tools:
sh$ consolechars -f lat2u-16 -m iso02
sh$ loadkeys sk-qwertz
              

...a naspäť na štandardné nastavenia:

kbd:
sh$ setfont
sh$ loadkeys -d
              
console-tools:
sh$ consolechars -d
sh$ loadkeys -d