Dal╣φ P°edchozφ Obsah

3. Lokalizace textovΘ konzole

Petr Kolß° Petr.Kolar@vslib.cz: 5. 1. 1999; Pavel Janφk ml. Pavel.Janik@math.muni.cz: star╣φ verze; a mnozφ dal╣φ

Pro lokalizaci textovΘ konzole je t°eba nastavit ovladaΦ klßvesnice, aby generoval k≤dy znak∙ podle po╛adovanΘho rozlo╛enφ klßves, a ovladaΦ displeje, aby umo╛≥oval zobrazovßnφ nßrodnφch znak∙ vΦetn∞ pφsmen s diakritikou (s akcenty).

AΦkoli jßdro Linuxu podporuje od verze 1.3.? Unicode umo╛≥ujφcφ souΦasnΘ pou╛φvßnφ nejen v╣ech mo╛n²ch pφsmen s akcenty, ale i tΘm∞° v╣ech sv∞tov²ch abeced, v souΦasnosti stßle p°eva╛uje vyu╛φvßnφ osmibitov²ch k≤dovßnφ.

Pro Φe╣tinu, sloven╣tinu, pol╣tinu, ma∩ar╣tinu, rumun╣tinu, slovin╣tinu, chorvat╣tinu, albßn╣tinu a dal╣φ v²chodoevropskΘ jazyky psanΘ latinkou je urΦena znakovß sada ISO-8859-2, znßmß takΘ pod nßzvem ISO LATIN-2. ZßpadoevropskΘ jazyky naproti tomu pou╛φvajφ k≤dovßnφ ISO-8859-1. Ob∞ tato k≤dovßnφ jsou roz╣φ°enφm k≤du ASCII a shodujφ se i v n∞kter²ch dal╣φch znacφch, tak╛e ISO-8859-2 lze pou╛φvat nap°φklad i pro n∞mΦinu.

P°esto╛e k≤dovßnφ ISO-8859-2 je pro zmφn∞nΘ jazyky mezinßrodnφm standardem a preferovan²m k≤dovßnφm, v mnoha neunixov²ch systΘmech se pou╛φvajφ jinß k≤dovßnφ; v MS-Windows sada Windows-1250, kterß se bohu╛el v n∞kolika znacφch odli╣uje od ISO-8859-2, v systΘmu MS-DOS, jeho klonech i v DOSov²ch oknech MS-Windows k≤dovß strßnka 852 naz²vanß tΘ╛ PC LATIN-2, kterß mß ne-ASCII znaky k≤dovßny zcela odli╣n∞. Dal╣φ k≤dovßnφ se pou╛φvajφ v jednotliv²ch zemφch (v ╚eskΘ republice a na Slovensku je stßle populßrnφ sada Kamenick²ch), na jin²ch operaΦnφch systΘmech (Macintosh), pro n∞kterß za°φzenφ (tiskßrny) i programy (k≤dovßnφ Cork v TeXu).

Zatφmco znakovß sada ISO-8859-2 je urΦena pro n∞kolik jazyk∙, rozlo╛enφ klßvesnice je pro ka╛d² jazyk jinΘ. Standardnφ Φeskß nebo slovenskß klßvesnice pro PC vychßzejφcφ z ΦeskΘho psacφho stroje je pro psanφ text∙, v nich╛ se vyskytujφ specißlnφ "poΦφtaΦovΘ" znaky, dosti nepohodlnß. Proto mnoho lidφ pou╛φvß r∙znΘ "programßtorskΘ klßvesnice", kterΘ bohu╛el nejsou standardizovßny a jak ukßzaly diskuse v konferenci linux, ╣ir╣φ dohoda o jejich rozlo╛enφ je tΘm∞° vylouΦena.

P°i zkou╣enφ klßvesnice nezapome≥te, ╛e mnoha program∙m je t°eba pomoci, aby pracovaly s osmibitov²mi znaky --- kapitola Lokalizace r∙zn²ch aplikacφ. ProblΘmy by nem∞ly b²t s editorem vi, proto nov∞ nainstalovanou klßvesnici testujte nejd°φve v tomto editoru v re╛imu vklßdßnφ znak∙.

Distribuce, kterou pou╛φvßte, m∙╛e mφt podporu pro ΦeskΘ prost°edφ u╛ zabudovanou. Proto je vhodnΘ nahlΘdnout nejprve do kapitoly  Jak poΦe╣tit r∙znΘ distribuce a postupy popsanΘ v nßsledujφcφch odstavcφch zkou╣et teprve pokud nenaleznete jednodu╣╣φ °e╣enφ tam.

3.1 Zobrazovßnφ znak∙ v k≤dovßnφ ISO-8859-2

ISO-8859-2 fonty pro konzolu a program setfont, kter²m se zavßdφ, jsou souΦßstφ balφku kbd u╛ od dßvn²ch verzφ Linuxu. Pokud v n∞kterΘ distribuci balφk kbd nenφ, je mo╛nΘ jej zφskat nap°φklad na ftp://ftp.muni.cz/pub/linux/system/keyboards/kbd-0.96.tar.gz.

Pro adaptΘry VGA a lep╣φ staΦφ zavΘst font p°φkazem


setfont lat2-16.psf

(nikoli lat2-08.psf v²╣ky 8, jak je doporuΦovßno v dokumentaci k cs-tools), pro adaptΘry EGA je vhodn² font lat2-14.psf (m∙╛e n∞kdo potvrdit, ╛e na adaptΘru EGA program setfont funguje?). V nov∞j╣φch verzφch kbd jsou pro ISO-8859-2 k dispozici je╣t∞ fonty iso02*. Pokud nenφ pou╛it program vtfontd, zavedenφ fontu se projevφ na v╣ech virtußlnφch terminßlech (konzolßch).

3.2 Nßrodnφ klßvesnice

Pokud na va╣em systΘmu nenφ mapa ΦeskΘ klßvesnice, lze pou╛φt Φßst balφku cs-tools ftp://ftp.muni.cz/pub/localization/linux/obsolete/cs-tools/cs-tools-0.19.tar.gz. Soubory *.map z adresß°e console z tohoto balφku je t°eba zkopφrovat do adresß°e /usr/lib/kbd/keytables. Zvolenß mapa klßvesnice se pak zavede p°φkazem


loadkeys cz-lat2

v n∞kterΘm ze startovacφch skript∙. V distribuci Red Hat staΦφ uvΘst °ßdek KEYTABLE v souboru /etc/sysconfig/keyboard:

KEYTABLE="cz-prog"

Klßvesnice fungujφ jako americkΘ, do ΦeskΘho re╛imu se p°epnou stisknutφm klßvesy Pause nebo dr╛enφm klßvesy AltGr (prav² Alt). Pro zp∞tnΘ p°epnutφ lze pou╛φt op∞t Pause nebo dr╛enφ AltGr.

Klßvesnice z kbd ·dajn∞ nefungujφ s jßdry v²vojovΘ °ady 2.1.x. Na poΦφtaΦφch s v²vojov²mi jßdry je nutnΘ pou╛φvat balφk ucw popsan² dßle.

Jak funguje naΦφtßnφ znak∙ z klßvesnice?

P°i stisku klßvesy, p°i dr╛enφ v rytmu autorepeatu a p°i uvoln∞nφ klßvesy generuje klßvesnice na poΦφtaΦφch PC p°eru╣enφ IRQ 1. Jßdro naΦφtß z portu 0x60 tak zvanΘ scank≤dy klßves, co╛ je jeden nebo celß posloupnost byt∙. Nap°φklad p°i stisku klßvesy 'q' bude naΦteno 0x10 (16 desφtkov∞), p°i uvoln∞nφ k≤d o 0x80 v∞t╣φ, tedy 0x90. N∞kterΘ klßvesy, jako nap°. Delete posφlajφ dvoubajtovΘ escape-scank≤dy 0xe0, 0xNN, klßvesa Pause posloupnost 0xe1, 0x1d, 0x45. Jßdro nejd°φve scank≤dy p°evßdφ na tak zvanΘ keyk≤dy (funkce getkeycode v drivers/char/keyboard.c --- docela zajφmavΘ Φtenφ). Toto mapovßnφ lze m∞nit i na u╛ivatelskΘ ·rovni, ale to mß v²znam snad jenom p°i pou╛φvßnφ exotickΘho hardware. Pro nßrodnφ klßvesnice je zajφmavΘ dal╣φ mapovßnφ, p°i n∞m╛ se keyk≤dy p°evßd∞jφ na k≤dy znak∙. Od jßdra verze 0.99pl10 lze implicitnφ mapu drivers/char/defkeymap.map m∞nit.

3.3 Alternativa: Balφk ucw-cs-1.1.tar.gz

Tento balφk vyu╛φvß schopnosti jßdra Linuxu pracovat se znaky v k≤dovßnφ Unicode. Pro zobrazovßnφ se pou╛φvß zvlß╣tnφ textov² re╛im adaptΘr∙ EGA/VGA, kter² umo╛≥uje souΦasn∞ zobrazit 512 r∙zn²ch znak∙. Jako devßt² bit k≤du znaku se pou╛φvß bit 3 barevn²ch atribut∙. Tak je mo╛nΘ zobrazovat v╣echny znaky podle k≤dovßnφ ISO-8859-1 i ISO-8859-2 souΦasn∞ s rßmeΦky, kterΘ mohou b²t na pozicφch 0xB0 a╛ 0xDF, pro n∞╛ adaptΘr VGA zdvojuje lev² sloupec, aby byla ╣φ°ka znaku 9 bod∙. V budoucnosti by m∞l b²t pou╛it grafick² re╛im. Dφky tomu se tento balφk elegantn∞ vyrovnßvß s problΘmy popsan²mi v kapitole RßmeΦky v~programech MC & spol. se zobrazujφ ╣patn∞.

Balφk se nachßzφ na ftp://atrey.karlin.mff.cuni.cz/pub/local/mj/linux/ucw-cs-1.1.tar.gz, jeho popis je na http://atrey.karlin.mff.cuni.cz/~mj/linuxcs/. Po rozbalenφ balφku se p°epn∞te do adresß°e ucw-cs-1.1 a zadejte


install -c -o root -g root -m 644 fonts/* /usr/lib/kbd/consolefonts
install -c -o root -g root -m 644 keymaps/* /usr/lib/kbd/keytables
install -c -o root -g root -m 755 mapscrnuni/mapscrnuni /usr/local/bin
install -c -o root -g root -m 644 mapscrnuni/latin2.table /usr/lib/kbd/consoletrans

do startovacφch skript∙ /etc/rc* je nutnΘ p°idat p°φkazy


setfont ucw16.psf
mapscrnuni < /usr/lib/kbd/consoletrans/latin2.table
loadkeys cs-head cz-type cs-compose

a do soubor∙ /etc/profile a /etc/csh.cshrc nebo $HOME/.bashrc a $HOME/.cshrc, p°φpadn∞ do /etc/issue je nutnΘ p°idat p°φkaz, kter² zajistφ p°epnutφ na u╛ivatelskΘ mapovßnφ obrazovky:


/bin/echo -en "\033(K"

Pokud se p°i spu╣t∞nφ programu loadkeys objevφ chybovΘ hlß╣enφ jako

Keymap 12: Permission denied

je nutnΘ zadat tento p°φkaz jako root. Zdß se, ╛e loadkeys spu╣t∞n² obyΦejn²m u╛ivatelem neumφ zv∞t╣it konverznφ tabulku pro klßvesnici v jßd°e, a v²sledkem je zmφn∞nΘ hlß╣enφ.

Balφk je zajφmav² tφm, ╛e mapa klßvesnice je rozd∞lena do n∞kolika soubor∙, kterΘ p°φkaz loadkeys spojφ a zavede jako jednu mapu. Na mφst∞ cz-type.map (Φesk² psacφ stroj) lze pou╛φt cs-ucw.map (pφsmena s akcenty se pφ╣ou se stisknut²m Caps Lock), cz-prog.map (Φeskß programßtorskß), sk-type.map (slovensk² psacφ stroj) nebo sk-prog.map (slovenskß programßtorskß), podle toho, komu co vyhovuje.

3.4 Tipy a problΘmy

Vypadnutφ fontu p°i p°epnutφ do X a zp∞t

U n∞kter²ch X-server∙ dojde p°i p°epnutφ z virtußlnφho terminßlu do X a zp∞t k vypadnutφ konzolovΘho fontu. Situaci lze °e╣it op∞tovn²m ruΦnφm zavedenφm fontu, nebo je mo╛nΘ pou╛φt program vtfontd - ftp://ftp.excom.spb.su/pub/linux/Utils/Console/vtfontd-1.0.1.tar.gz, kter² takΘ umo╛≥uje pou╛φvat na jednotliv²ch konzolßch r∙znΘ fonty.

V Midnight Commanderu nelze p°epφnat fonty

Inu tento problΘm vlastn∞ ani nenφ problΘmem, je to samoz°ejmost, proto╛e v mc nejsme na virtußlnφ konzole, ale na normßlnφm terminßlu ttypx, tudφ╛ nemßme prßvo pou╛φt ioctl PIO_FONT, proto╛e nejsme ani vlastnφkem tty, ani superu╛ivatelem (drivers/char/vt.c °ßdek 212 --- op∞t velmi zajφmavΘ Φtenφ).

RßmeΦky v programech MC & spol. se zobrazujφ ╣patn∞

P°i pou╛φvßnφ n∞kter²ch program∙ (jako nap°φklad Midnight Commanderu) b²vajφ problΘmy se zobrazovßnφm rßmeΦk∙. U Midnight Commanderu je mo╛nΘ pou╛φt parametr -a, kter² zp∙sobφ, ╛e mc bude pro zobrazovßnφ rßmeΦk∙ pou╛φvat ASCII znaky +, - a |, co╛ sice nep∙sobφ p°φli╣ esteticky, ale je to rozhodn∞ lep╣φ, ne╛ kdy╛ se mφsto rßmeΦk∙ zobrazujφ pφsmena.

Vzhledem k tomu, ╛e programy pou╛φvajφcφ Φßrovou grafiku jako MC nebo MenuConfig jßdra, jsou po nainstalovßnφ Φesk²ch font∙ na textovou konzolu Linuxu neΦitelnΘ, je nutnΘ pou╛φt font, kter² tyto rßmeΦky obsahuje, a upravit nastavenφ databßzφ termcap a terminfo. Ji╛ upravenΘ databßze jsou ke sta╛enφ na URL http://linux-cz.inecnet.cz/ftp/mc/.

Tyto databßze je nutno zkopφrovat termcap do /etc/termcap a terminfo do /usr/lib/terminfo/l/linux a znovu se p°ihlßsit. Ke konverzi mezi zdrojovou a binßrnφ podobou terminfo slou╛φ p°φkazy infocmp a tic. I potom mohou b²t problΘmy zp∙sobenΘ tφm, ╛e u videoadaptΘru VGA jsou znaky s k≤dy 0xB0 a╛ 0xDF vyhrazeny pro rßmeΦky a VGA p°i zobrazovßnφ zdvojuje prav² sloupec ka╛dΘho z t∞chto znak∙, aby se dosßhlo ╣φ°ky znaku 9 pixel∙, ale u znakov²ch sad ISO-8859-2 jsou na t∞chto pozicφch b∞╛nΘ znaky. Elegantnφm °e╣enφm je pou╛itφ unik≤dov²ch font∙ Pavla Mare╣e popsan²ch v kapitole ucw .

SnadnΘ p°epφnßnφ Φe╣tiny a angliΦtiny

Pokud nepou╛φvßte klßvesnici, kterß umo╛≥uje p°epφnßnφ mezi dv∞ma re╛imy (Φe╣tina nebo sloven╣tina a angliΦtina), m∙╛ete pro p°epφnßnφ pou╛φvat nßsledujφcφ dva skripty, kterΘ zajistφ i p°epnutφ font∙.

Skripty budou samoz°ejm∞ fungovat pouze tehdy, budete-li mφt nainstalovßnu podporu nßrodnφ klßvesnice a ISO-8859-2 znaky pro konzolu. P°itom je nutnΘ pamatovat, ╛e zatφmco klßvesnice se p°epφnß pouze pro jednu virtußlnφ konzolu, fonty (nenφ-li pou╛ito vtfontd) se p°epφnajφ pro v╣echny.

╚esk² text je i po nastavenφ sprßvnΘho fontu neΦiteln²

P°φΦinou m∙╛e b²t, ╛e text je v jinΘm k≤dovßnφ. Text je t°eba p°ek≤dovat pomocφ utility cstocs popsanΘ v kapitole cstocs do k≤dovßnφ ISO-8859-2 a potΘ jej prohlφ╛et a editovat standardnφm zp∙sobem. Nebo p°φpadn∞, vznikl-li tento font na jednom z Billov²ch produkt∙, m∙╛ete pou╛φt k prohlφ╛enφ font upraven² tak, aby zobrazoval sprßvn∞ ΦeskΘ znaky, jak v k≤dovßnφ CP1250 (Windoze), tak i ISO-8859-2 (unixovΘ OS). Tento font op∞t najdete n∞kde na ftp://ftp.inet.cz/.

Lep╣φ konzolovΘ fonty

Vzhled font∙ z balφku kbd je dost ╣patn², velkß pφsmena s akcenty jsou ni╛╣φ ne╛ bez akcent∙, pokud si chce n∞kdo vytvo°it vlastnφ font, m∙╛e mu pomoci tento popis:

Soubory s fontem jsou umφst∞ny v /usr/lib/kbd/consolefonts. Pou╛φvajφ se dva formßty t∞chto soubor∙, formßt psf, kter² je popsßn v souboru file:/usr/lib/kbd/consolefonts/psffiles.doc, a je╣t∞ jednodu╣╣φ formßt, kter² nepou╛φvß ╛ßdnou hlaviΦku, a soubory obsahujφ prost∞ obrazy v╣ech 256 znak∙ ulo╛en²ch v po°adφ podle k≤d∙ znak∙. Pro ka╛d² znak z fontu je v souboru tolik byt∙, kolik bod∙ je v²╣ka fontu (vΦetn∞ voln²ch °ßdk∙ naho°e a dole; nejΦast∞ji 8 a╛ 16 bod∙), prvnφ byte odpovφdß hornφmu °ßdku znaku. Ka╛d² znak mß ╣φ°ku 8 bod∙, nejvy╣╣φ bit se zobrazuje vlevo.

Je takΘ mo╛nΘ pou╛φt editor font∙ chedit, kter² se nachßzφ na ftp://ftp.fi.muni.cz/pub/linux/apps/misc/chedit.tar.gz. Je pon∞kud zastaral² a umφ editovat pouze fonty ve formßtu psf.

Zm∞na qwerty na qwertz

Ob∞ ΦeskΘ klßvesovΘ mapy, tedy cz-lat2.map i cz-lat2-prog.map, majφ standardnφ rozlo╛enφ qwerty, jste-li zvyklφ na rozlo╛enφ qwertz, nenφ nic jednodu╣╣φho ne╛ zam∞nit pφsmenka 'y' a 'z' v klßvesovΘ map∞, tedy v souboru cz-lat2.map, p°φpadn∞ cz-lat2-prog.map:

...
keycode 21 = z
...
keycode 44 = y
...

Jedin² dvojhmat z Woken, kter² znßm, je Alt+Shift...

Ano, tento dvojhmat je m²m prvnφm stisknutφm klßvesnice, jestli╛e jsem nucen sed∞t u poΦφtaΦe s Billov²m OS. (Doufßm, ╛e se auto°i skuteΦn²ch operaΦnφch systΘmu neurazφ.) Slou╛φ k p°epnutφ se mezi primßrnφ a sekundßrnφ klßvesnicφ. Pro n∞kterΘ skalnφ p°φznivce firmy SoftMicro jsem p°ichystal ·pravu cz-lat2.map:

upravφme °ßdek s keycode 42 (klßvesa Shift)

keycode 42 = Shift Shift Shift Shift Shift Shift Shift Shift AltGr_Lock\
 Shift AltGr_Lock Shift Shift Shift Shift Shift Shift

...v╣e samoz°ejm∞ na jednom °ßdku. Potom ji╛ bude kombinace LeftShift+LeftAlt fungovat stejn∞ jako klßvesa Pause, tedy pro p°epφnßnφ klßvesnic.

Zdroje

Pou╛itΘ materißly


Dal╣φ P°edchozφ Obsah