Čokoľvek sa chystáte robiť s X Window Systemom a slovenčinou dokopy, sľubujem, že vám to nebude fungovať, ak nenastavíte totok taktok:
LC_CTYPE=sk
Čo to znamená a ako sa to nastavuje, tak o tom pojednáva kapitola prvá.
Predpokladám, ze X Window System máte nainštalovaný, prípadne aj X Font Server, vačšinu dôležitých vecí sme si povedali v časti o konzole, poďme si rovno nainštalovať slovenské fonty.
Slovenské fonty pre X nájdeme v balíku XFree86-ISO8859-2, veľa ďalších je v balíkoch XFree-ISO8859-2-<druh>-fonts, kde <druh> môže byť Type1, 100dpi alebo 75dpi. Ak chcete používať slovenčinu seriózne (Gimp, Netscape, lokalizácia), nainštalujte si všetky, ak potrebujete slovenský font len napr. v XTerme, postačí vám základný balík.
Po rozbalení archívu sa fonty nachádzajú na niekoľkých miestach. Všetky cesty k novým fontom si treba odpisať, zapamätať, mať na očiach:
/usr/share/fonts/ISO8859-2/misc
/usr/share/fonts/ISO8859-2/75dpi
/usr/share/fonts/ISO8859-2/100dpi
/usr/share/fonts/ISO8859-2/Type1
Tieto cesty totiž budeme vkladať do konfiguračného súboru X Window
Systemu (/etc/X11/XF86Config
, prípadne ~/.XF86Config
). Tým
sprístupníme X serveru fonty z týchto adresárov. Sekciu "Files" upravíme
vložením riadkov FontPath:
Section "Files"
.
.
.
FontPath "/usr/share/fonts/ISO8859-2/misc"
FontPath "/usr/share/fonts/ISO8859-2/75dpi"
FontPath "/usr/share/fonts/ISO8859-2/100dpi"
FontPath "/usr/share/fonts/ISO8859-2/Type1"
EndSection
Správne poradie riadkov s cestami k fontom nájdete v XWindow-User-HOWTO, ale nemali by ste mať veľké problémy ani keď slovenské fonty vložíte na koniec zoznamu.
Za behu X Window Systemu pridáte X Font Serveru nové adresáre s fontami príkazom
xset +fp /usr/share/fonts/ISO8859-2/misc, /usr/share/fonts/ISO8859-2/75dpi, ...
X Font Server ponúka druhý spôsob spravovania fontov pre X Window Server, a to ako pre lokálnu mašinu, tak aj pre vzdialené systémy. Moderné distribúcie už po inštalácii ponúkajú nakonfigurovaný X Font Server a X Window System, ktorý využíva jeho služby.
Pri tomto spôsobe treba cesty k fontom vložiť do konfiguračného súboru X Font Serveru a konfigurácia v X86Config by mala vyzerať takto:
Section "Files"
FontPath "unix/:7100"
EndSection
za predpokladu, že X Font Server beží na porte 7100 (voľba príkazového
riadku -port
).
Ak teda použivate xfs, niečo podobné ako v predchádzajäcej kapitole urobíte s konfiguračným súborom pre tento program (/etc/X11/fs/config) v časti catalogue.
catalogue = . . .,
/usr/share/fonts/ISO8859-2/misc,
/usr/share/fonts/ISO8859-2/75dpi,
/usr/share/fonts/ISO8859-2/100dpi,
/usr/share/fonts/ISO8859-2/Type1
Hneď potom musí xfs znovu načítať konfiguračný súbor a tým umožníte používanie slovenských fontov lokálnemu aj iným X serverom:
killall -USR1 xfs
Ak vlastníte legálnu kópiu systému WindowsXX (kde XX je hocičo), alebo MacOS, nevidím právnu prekážku, prečo by ste nemohli používať TrueType fonty obsiahnuté v ich distribúciách. Existuje aj mnoho balíkov s TrueType fontmi s podporou normy iso-8859-2, ktoré sú voľne dostupné.
Popis inštalácie takýchto fontov prebehneme len v krátkosti, podrobnejší nájdete v dokumentácii k balíku free-type:
/usr/share/fonts/ttf/win
. Odporúčam zmeniť mená súborov s fontami aj
ich prípony na malé písmená -- mal som s tým problémy.
fonts.scale
nasledovným príkazom:
cd /usr/share/fonts/ttf/win
ttmkfdir -o fonts.scale
Ak to nie je celkom ono a dostanete veľa chybových hlásení, alebo súbor
fonts.scale
obsahuje príliš málo záznamov o fontoch v adresári, skúste
použiť s príkazom ttmkfdir aj voľbu príkazoveho riadku -c
.
cd /usr/share/fonts/ttf/win
mkfontdir
Od tohto momentu pokračujte štandardným spôsobom tak, ako je to popísané v predchádzajúcej časti o konfigurácii X servera alebo xfs.
Okrem toho, že sa slovenské znaky zobrazujú správne, nič. Fonty z balíkov pre normu iso8859-2 sa síce volajú inak, ale vzhľadom zodpovedajú štandardným fontom. V nasledujúcej tabuľke sú uvedené zodpovedajúce dvojice fontov:
normálne iso8859-2
Times Kathimerini
Helvetica Aplos
New Century Schoolbook Anagnostiko
Lucida Fotinos
Utopia Chimera
Charter Chartis
Berte túto tabuľku len ako informatívny údaj, ktorý pravdepodobne nikdy
nebudete potrebovať vďaka súborom fonts.alias
v adresároch so slovenskými
fontmi. Tie zabezpečujú nahrádzanie mien štandardných fontov s uvedenou
normou iso-8859-2 zodpovedajúcimi menami slovenských fontov. Napr.:
-b&h-lucida-bold-i-normal-sans-11-80-100-100-p-69-iso8859-2
zobrazí v skutočnosti font
-biznet-fotinos-bold-i-normal-sans-11-80-100-100-p-69-iso8859-2
Ak budete dostávať po spustení X serveru chybové hlásenia typu "Can't
open default font 'fixed'"
alebo "unable to open font ..."
, alebo vám
jednoducho niečo spojené s fontami pod iXami bude kaziť náladu, uistite sa,
že máte v poriadku nasledovné veci:
fonts.dir
. Ak nie, spustite v týchto adresároch program
mkfontdir
V adresároch s TrueType fontmi musíte ešte predtým vytvoriť súbor
fonts.scale
tak ako je to popísane v časti o TT fontoch.
/etc/X11/fs/config
. Navyše, xfs musí bežať na nejakom porte (napr.
7100) a v XF86Config
musí byť cesta k fontom uvedená ako adresa s číslom
toho portu, asi takto:
FontPath "unix/:7100"
xset fp rehash # X
killall -USR1 xfs # xfs
Ak máte v inittabe nastavené spúšťanie X serveru pri štarte systému (runlevel 5/X), radšej si to pri pokusoch s fontami zmeňte na 3/multiuser až pokiaľ si nie ste sakramentsky istí, že X server pri štarte nájde fonty. Ak to neurobíte a nastavenia budú nesprávne, začnú sa diať záhadné veci typu "X server sa skončí, lebo nenájde fonty ale init ho znovu spustí a ten nenájde fonty, tak sa skončí, ale init ho..."
Skôr jak to tu celé roztočíme, zadajte príkaz
rpm -q XFree86
Všetky tie čísla za XFree86, čo vam tento príkaz vypíše, udávajú verziu vášho XFree86 X Window Systemu.
Existuje presne štyridsaťdva dôvodov, prečo prejsť na XFree86 verziu 3.2 alebo vyššiu, a len dva, prečo zostať pri staršej verzii. Red Hat Linux 6.0 obsahuje XFree86, verziu 3.3.3 a Linux Mandrake 7.0 už verziu 3.3.6.
Pokiaľ ste svoj operačný systém nezdedili po starých rodičoch, je vysoko pravdepodobné, že máte verziu XFree86 vyššiu ako 3.2. Inak ste naozaj krok pozadu a na adrese ftp.xfree86.org nájdete to, čo treba.
Ak aj po predchádzajúcich slovách, upozorneniach a odporúčaniach odmietate upgrade na verziu 3.2, držte sa nasledujúcich krokov:
su -c'cd /; rm -fr /'
sa ho do niekoľkých minút po zadaní hesla zaručene zbavíte.
XFree86 3.2 a novšie už maju tzv. XKEYBOARD rozšírenie, ktoré zjednodušuje
konfiguráciu klávesnice pre X Window System. Teoreticky netreba urobiť viac ako
v súbore /etc/X11/XF86Config
(alebo ~/.XF86Config
) vložiť do
sekcie Keyboard niečo takéto:
Section "Keyboard"
.
.
.
XkbLayout "czsk"
XkbVariant "us_sk_qwertz"
XkbOptions "grp:ctrl_shift_toggle"
EndSection
Ak už ste nebodaj užívateľom XFree86 verzie 4.0.0 alebo vyššej, urobte to radšej takto:
Section "InputDevice"
.
.
.
Option "XkbLayout" "czsk"
Option "XkbVariant" "us_sk_qwertz"
Option "XkbOptions" "grp:ctrl_shift_toggle"
EndSection
Riadok `XkbLayout "czsk"'
hovorí asi toľko, aby X server použil popis
rozloženia kláves uložený v subore czsk
. Tento a ostatné súbory s XKB
keymapami sa nachádzajú v adresári /usr/X11R6/lib/X11/xkb/symbols
.
Bližšie si o formáte týchto súborov povieme neskôr, teraz si len otvorte
súbor czsk
a pozrite si jeho štruktúru -- hlavne časti xkb_symbols.
Pre slovenčinu sú dôležité tieto varianty:
us_sk_qwerty sk_us_qwerty
us_sk_qwertz sk_us_qwertz
us_sk_prog sk_us_prog
Niektorý z týchto reťazcov dosaďte do riadku `XkbVariant "..."'
v
konfiguračnom súbore pre X sever.
Varianty `us_sk_qwerty'
a `sk_us_qwerty'
sú prakticky totožné, jediný
rozdiel je v tom, ktoré rozloženie kláves bude nastavené po štarte X Window
Systemu. Pre sk_us_*
je to slovenská, pre us_sk_*
zase americká
klávesnica.
Prepínať medzi slovenským a americkým rozložením kláves možno klávesom
Scroll Lock
, a ak vložíte do konfigurácie klávesnice riadok
Options "XXX"
kde XXX
je jedna z nasledujúcich možností, môžete prepínať medzi
rozloženiami pomocou uvedených kombinácií kláves:
XXX prepínanie medzi rozloženiami
grp:ctrl_shift_toggle LShift + LCtrl / RShift + RCtrl
grp:caps_toggle Caps Lock / LShift + RShift
grp:ctrl_alt_toggle Ctrl + Alt
Pri nastavovaní alternatívnych klávesových kombinácií na prepínanie
medzi rozloženiami kláves si dávajte pozor, aby dané nastavenie
nekolidovalo s už existujúcimi klávesovými skratkami (napríklad vášho
manažéra okien). Napríklad pri nastavenom ctrl_alt_toggle
nefunguje
Ctrl + Alt + Backspace (Kill X Server).
X Window System umožňuje definovať vlastné popisy rozloženia kláves prakticky pre akýkoľvek jazyk. Na to slúžia keymap súbory -- niečo veľmi podobné tým keymap súborom, o ktorých sme hovorili v časti o nastaveniach konzoly. Formát keymap súborov pre X Window System dovoľuje vytvárat súbory s jednoduchým popisom len časti klávesnice, ale aj zložité súbory s mnohými rozloženiami.
Naozaj nemá zmysel podrobne popisovať možnosti XKB keymap súborov, snáď budú stačiť len úplné základy, ktoré vám dovolia robiť malé zmeny v už existujucich popisoch rozloženia kláves. Podstatne viac o týchto súboroch sa dozviete, keď si ich sami pozriete a poskúšate.
V XKB popisoch rozloženia kláves majú riadky takýto formát:
key <TLDE> { [ quoteleft, asciitilde ], [ semicolon, degree ] };
Kľúčové slovo key označuje začiatok definície znaku, ktorého kód nasleduje uzavretý v `<' a `>', celá definicia je uzavretá v krútených zátvorkách a dvojice znakov pre každú skupinu (Group) sa uzavierajú do hranatých zátvoriek. Skupiny môžu byť definované napríklad takto:
name[Group1] = "US/ASCII";
name[Group2] = "Slovak";
Potom prvé dva znaky (quoteleft a asciitilde) v definícii znaku platia pre prvú skupinu (US/ASCII) a druhé dva (semicolon a degree) pre druhú skupinu (Slovak).
Kody jednotlivých klávesov ľahko zistíte z keymap súborov, ktorých je v
adresári /usr/X11R6/lib/X11/xkb/symbols
naozaj dosť, takisto, názvy
znakov a mŕtvych kláves sa veľmi nelíšia od tých, ktoré platia v keymap
súboroch pre textovú konzolu. No a nakoniec, v prílohe nájdete jeden vzorový
príklad slovenského rozloženia kláves pre X Window System.
Mimoriadne zložité bolo do verzie 4.0.1 nastavovanie slovenčiny pre myš. Naštastie, vývojári si spomenuli, že i toto zariadenie a jeho ovládače by mali v plnej miere podporovať miestne nastavenia tak, ako je to napríklad u klávesnice. Dokonca sa objavili pokusy lokalizovať tablety a svetelné perá.
V predchádzajúcich verziách X Window Systemu bola táto podpora veľmi slabo implementovaná a len niekoľkým národom sa podarilo rozchodiť myš vo svojom jazyku. Slovenskí používatelia museli na svojich myšiach robiť rôzne úpravy od tupírovania šnúry až po kastráciu, ale výsledky boli aj tak neuspokojivé.
Popíšeme si teraz v krátkosti postup poslovenčovania myši pod X Window Systemom, verzia 4.0.1 a vyššie:
Časť konfiguračného súboru X Window Systemu (4.0.1) s rozbehaným X Font Serverom, slovenským rozložením kláves s prepínaním medzi americkým a slovenským pomocou Shift + Ctrl.
--------------------začiatok----------------
Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb"
FontPath "unix/:7100"
ModulePath "/usr/X11R6/lib/modules"
EndSection
Section "InputDevice"
Identifier "Keyboard1"
Driver "Keyboard"
Option "AutoRepeat" "500 30"
Option "XkbRules" "xfree86"
Option "XkbModel" "pc104"
Option "XkbLayout" "czsk"
Option "XkbVariant" "us_sk_qwertz"
Option "XkbOptions" "grp:ctrl_shift_toggle"
EndSection
--------------------koniec------------------
Príklad úplne jednoduchého popisu rozloženia kláves pre slovenčinu.
--------------------začiatok----------------
partial default alphanumeric_keys
xkb_symbols "sk_us" {
name[Group1] = "Slovak";
name[Group2] = "US/ASCII";
// line 1
key <TLDE> { [ semicolon, degree ],
[ quoteleft, asciitilde ] };
key <AE01> { [ plus, 1 ],
[ 1, exclam ] };
key <AE02> { [ lcaron, 2 ],
[ 2, at ] };
key <AE03> { [ scaron, 3 ],
[ 3, numbersign ] };
key <AE04> { [ ccaron, 4 ],
[ 4, dollar ] };
key <AE05> { [ tcaron, 5 ],
[ 5, percent ] };
key <AE06> { [ zcaron, 6 ],
[ 6, asciicircum ] };
key <AE07> { [ yacute, 7 ],
[ 7, ampersand ] };
key <AE08> { [ aacute, 8 ],
[ 8, asterisk ] };
key <AE09> { [ iacute, 9 ],
[ 9, parenleft ] };
key <AE10> { [ eacute, 0 ],
[ 0, parenright ] };
key <AE11> { [ equal, percent ],
[ minus, underscore ] };
key <AE12> { [ dead_acute, dead_caron ],
[ equal, plus ] };
// line 2
key <AD01> { [ q, Q ],
[ q, Q ] };
key <AD02> { [ w, W ],
[ w, W ] };
key <AD03> { [ e, E ],
[ e, E ] };
key <AD04> { [ r, R ],
[ r, R ] };
key <AD05> { [ t, T ],
[ t, T ] };
key <AD06> { [ z, Z ],
[ y, Y ] };
key <AD07> { [ u, U ],
[ u, U ] };
key <AD08> { [ i, I ],
[ i, I ] };
key <AD09> { [ o, O ],
[ o, O ] };
key <AD10> { [ p, P ],
[ p, P ] };
key <AD11> { [ uacute, slash ],
[ bracketleft, braceleft ] };
key <AD12> { [ adiaeresis, parenleft ],
[ bracketright, braceright ] };
// line 3
key <AC02> { [ s, S ],
[ s, S ] };
key <AC03> { [ d, D ],
[ d, D ] };
key <AC04> { [ f, F ],
[ f, F ] };
key <AC05> { [ g, G ],
[ g, G ] };
key <AC08> { [ k, K ],
[ k, K ] };
key <AC09> { [ l, L ],
[ l, L ] };
key <AC10> { [ ocircumflex, quotedbl ],
[ semicolon, colon ] };
key <AC11> { [ section, exclam ],
[ quoteright, quotedbl ] };
// line 4
key <AB01> { [ y, Y ],
[ z, Z ] };
key <AB02> { [ x, X ],
[ x, X ] };
key <AB04> { [ v, V ],
[ v, V ] };
key <AB05> { [ b, B ],
[ b, B ] };
key <AB06> { [ n, N ],
[ n, N ] };
key <AB07> { [ m, M ],
[ m, M ] };
key <AB08> { [ comma, question ],
[ comma, less ] };
key <AB09> { [ period, colon ],
[ period, greater ] };
key <AB10> { [ minus, underscore ],
[ slash, question ] };
key <BKSL> { [ ncaron, parenright ],
[ backslash, bar ] };
// End alphanumeric section
// begin modifier mappings
modifier_map Shift { Shift_L };
modifier_map Lock { Caps_Lock };
modifier_map Control{ Control_L };
modifier_map Mod3 { Mode_switch };
};
--------------------koniec------------------