Dal�� P�edchoz� Obsah

3. Lokalizace textov� konzole

Petr Kol�� [email protected]: 5. 1. 1999; Pavel Jan�k ml. [email protected]: 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