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):

žiadnyShiftAltGrShift-AltGr
ControlShift-ControlAltGr-ControlShift-AltGr-Control
AltShift-AltAltGr-AltShift-AltGr-Alt
Control-AltShift-Control-AltAltGr-Control-AltShift-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�zovV�znamCompose
dead_acutedĺžeň\'
dead_circumflexm�kčeň^
dead_diaeresisdve 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