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.
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).
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.
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.
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.
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.
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�).
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
.
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�.
loadkeys cz-lat2
setfont lat2-16.psf
loadkeys us
setfont
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.
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/.
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.
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
...
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.