Dal�� P�edchoz� Obsah

4. Lokalizace X Window Systemu

Petr Kol�� [email protected]; 14. 5. 1999, pou��v�n� mapy cs: Peter Ivanyi [email protected]: 1. 1. 1999

Z�kladem lokalizace X Window Systemu je instalace font� a kl�vesnicov�ch map pou�iteln�ch v programech v tomto prost�ed�. D�le je mo�n� lokalizovat jednotliv� programy, zejm�na window mana�ery.

4.1 Fonty v X Window System

Aplikace pod X mohou pou��vat jak rastrov� (bitmapov�) tak vektorov� fonty, pokud je podporuje X-server (nov�j�� X-servery um� Type1 a Speedo fonty, pro TrueType fonty je nutn� zvl�tn� fontserver). Vektorov� fonty je mo�n� snadno zv�t�ovat a zmen�ovat na r�zn� velikosti (�k�lovat); nov�j�� X-servery um� �k�lovat i rastrov� fonty, ale v�sledn� kvalita je velmi odpuzuj�c�. Rastrov� fonty jsou ulo�eny, jak n�zev napov�d�, v podob� dvoubarevn�ch bitov�ch map. I kdy� je mo�n� vytv��et fonty p��mo jako bitov� mapy, profesion�ln� rastrov� fonty jsou zpravidla vyrastrovan� �k�lovateln� fonty. V principu lze pou��t i fonty z TeXu (zkonvertovan� programem pk2bm), ov�em tyto fonty (zejm�na Computer Modern) jsou navr�eny pro v�t�� rozli�en�, obsahuj� vlasov� ��ry a proto jsou p�i vyrastrov�n� na rozli�en� obrazovky (75 nebo 100 dpi) dosti nevzhledn�.

Fonty mohou b�t bu� ulo�eny p��mo na disku X-serveru (nebo v pam�ti ROM u X-termin�l�), nebo mohou b�t zp��stupn�ny po s�ti pomoc� tak zvan�ho fontserveru. Hlavn� v�hodou fontserveru je, �e pom�rn� velk� soubory s fonty nemus� b�t nainstalov�ny na ka�d�m X-serveru; na pomal�ch stroj�ch (386) m��e b�t pou�it� vn�j��ho font serveru v�hodn� i proto, �e p�i v�po�etn� n�ro�n�m zpracov�v�n� font� do�asn� zamrzne jen p��slu�n� program a ne cel� X-server. TrueType fonty jsou dostupn� pouze p�es fontserver.

Rastrov� fonty se distribuuj� zpravidla v textov�m form�tu .bdf (Bitmap Distribution Format). X-server ov�em rychleji pracuje s fonty v bin�rn�m tvaru. Preferovan�m bin�rn�m form�tem font� pro servery X11R6 a X11R5 je form�t .pcf, star�� X-servery (X11R4) pou��valy jin� bin�rn� form�ty font� (�asto z�visl� na endianit�) --- nap��klad .snf. Pro u�et�en� diskov�ho prostoru b�vaj� soubory s fonty zkomprimovan� programem gzip nebo compress. Pro konverzi r�zn�ch form�t� font� jsou v distribuci X11 programy jako bdftopcf, bdftosnf a dal��.

Soubory s fonty jsou ulo�eny v n�kolika adres���ch, jejich� jm�na mus� b�t uvedena v konfigura�n�m souboru X serveru (u XFree86 v ��dc�ch FontPath v sekci Files v souboru /etc/X11/XF86Config) nebo zad�na p��kazem xset fp, kter� umo��uje, aby si u�ivatel� nainstalovali sv� vlastn� fonty. V ka�d�m z adres��� mus� b�t soubor fonts.dir, kter� se vytvo�� (p��padn� aktualizuje) p��kazem


mkfontdir [ adres�� ]

Proto�e jm�na font� jsou velmi dlouh� (viz d�le), lze pou��vat p�ezd�vky, kter� se definuj� v souboru fonts.alias pomoc� ��dk� tvaru:

fixed        -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1

V na�ich podm�nk�ch je v�znamnou vlastnost� mo�nost pou��v�n� font� v r�zn�ch k�dov�n�ch. Soubory s fonty pro r�zn� k�dov�n� se zpravidla um�s�uj� do samostatn�ch adres���. P�itom u n�kter�ch program� z�le�� na po�ad�, v jak�m jsou adres��e uvedeny v konfigura�n�m souboru (je vhodn� m�t adres��e s ISO-8859-2 fonty na za��tku). Maj�-li b�t naopak fonty s r�zn�m k�dov�n�m v jednom adres��i, je pot�eba d�t pozor, aby se soubory obsahuj�c� stejn� fonty v r�zn�m k�dov�n� nep�epsaly (d�t jim r�zn� jm�na).

Neprivilegovan� u�ivatel, kter� nem� mo�nost m�nit konfigura�n� soubor X-serveru, si m��e nainstalovat vlastn� fonty tak, �e soubory s fonty um�st� do libovoln�ho adres��e, a zad� p��kazy


mkfontdir adres��
xset +fp adres��
xset fp rehash

Prvn� p��kaz vytvo�� soubor fonts.dir, kter� obsahuje seznam font� v adres��i. P��kaz xset +fp adres�� zajist� p�id�n� zadan�ho adres��e na za��tek seznamu adres��� s fonty (alternativou je xset fp+ adres��, kter� p�id� adres�� na konec seznamu; p��kaz xset -fp adres�� naopak adres�� ze seznamu odebere). Posledn� p��kaz zajist� nov� na�ten� seznamu font� po jejich zm�n� bez restartov�n� X serveru. Aby vzaly nov� fonty na v�dom� i jednotliv� programy, je nutn� je znovu spustit.

Pro jednozna�n� popis fontu se pou��v� jm�no, kter� se skl�d� ze 14 slo�ek --- nap��klad -adobe-times-medium-r-normal--12-120-75-75-p-64-iso8859-2.


slo�ka
p��klad v�znam
foundry adobe v�robce (doslova p�smolijna)
family times rodina
weight medium tu�nost
slant r sklon
setwidth normal ���ka p�sma
addstyle dodate�n� styl
pixels 12 velikost v pixelech
points 120 velikost v desetin�ch tiska�sk�ho bodu
resx 75 rozli�en� ve sm�ru osy x
resy 75 rozli�en� ve sm�ru osy y
spacing p mezerov�n�
avgwidth 64 pr�m�rn� ���ka znaku v desetin�ch tiska�sk�ho bodu
registry iso8859 registr znakov� sady
encoding 2 k�dov�n�
Slo�ky jm�na fontu v X11

N�zev fontu vych�z� z toho, �e jeden v�robce m��e dod�vat v�ce rodin p�sem. Rodina zpravidla obsahuje n�kolik �ez� p�sma v r�zn�ch velikostech. Jednotliv� �ezy se li�� tu�nost� (tlou��kou tah�), ���kou, sklonem, t�m, zda znaky maj� pati�ky (serif) nebo jsou bez nich (sans serif), a ka�d� �ez m��e b�t dostupn� v n�kolika velikostech.

Pro pou��v�n� v X je d�le�itou charakteristikou p�sma jeho mezerov�n�. U proporcion�ln�ch p�sem (spacing=p), kter� se b�n� pou��vaj� p�i tisku knih a �asopis�, maj� r�zn� znaky r�znou ���ku, nap��klad znak 'i' je u��� ne� znak 'm'. Tato p�sma jsou vhodn� nap��klad pro zobrazov�n� WWW str�nek. Pro pou�it� v termin�lov�ch emul�torech jako je xterm je t�eba pou��vat p�sma pevn� ���ky jako u psac�ho stroje. Tato p�sma jsou vhodn� nap��klad pro v�pisy program�, kde je pot�eba, aby znaky v r�zn�ch ��dc�ch byly pod sebou. I u p�sma pevn� ���ky mohou n�kter� znaky p�e�n�vat z prostoru, kter� je jim vymezen (spacing=m), ov�em pro xterm a dal�� programy, kter� na obrazovce p�episuj� jednotliv� p�smena, je nutn� p�smo, kter� m� nejen pevnou ���ku, ale jeho� v�echny znaky se vejdou do vymezen�ho prostoru, tak zvan�ho cellboxu (spacing=c). P�itom n�kter� p�sma v X (nap��klad nesklon�n� p�sma Adobe Courier) maj� chybn� uvedeno spacing=m, i kdy� ve skute�nosti vyhovuj� podm�nk�m pro spacing=c a je tedy mo�n� je pou��vat i jako fonty pro xterm.

Rastrov� fonty pro X

X11R6 jsou standardn� dod�v�ny s n�kolika m�lo nebo zcela bez ISO-8859-2 font�. ISO-8859-2 fonty lze z�skat podle informac� na http://www.biz.net.pl/english/x-fonts/index.html nebo na ftp://ftp.agh.edu.pl/pub/utils/x11/fonts/pl/, ve form�tu *.rpm na ftp://ftp.muni.cz/pub/linux/distributions/redhat/contrib/i386/ nebo ftp://sunsite.mff.cuni.cz/MIRRORS/ftp.redhat.com/pub/contrib/i386/ soubory ftp://ftp.muni.cz/pub/linux/distributions/redhat/contrib/i386/ISO-8859-2-X11-fonts-75dpi-970301biznet-3.i386.rpm, ftp://ftp.muni.cz/pub/linux/distributions/redhat/contrib/i386/ISO-8859-2-X11-fonts-100dpi-970301biznet-3.i386.rpm a ftp://ftp.muni.cz/pub/linux/distributions/redhat/contrib/i386/ISO-8859-2-X11-fonts-basic-970301biznet-3.i386.rpm a ve form�tu *.deb na ftp://ftp.debian.org/debian/hamm/hamm/binary-all/x11/xfntil2*.deb. Neproporcion�ln� fonty z bal�ku misc nejsou p��li� kvalitn�, lep�� je mo�n� z�skat z bal�ku cs-tools z adres��e X11/fonts/xfonts. Tyto fonty ov�em �dajn� nejsou free.

P�esto�e rozli�en� v�t�iny displej� je okolo 75dpi, pokud je dostatek m�sta na disku, je vhodn� nainstalovat i fonty v rozli�en� 100dpi, zv�t�� se t�m po�et dostupn�ch velikost� jednotliv�ch p�sem.

U mnoha program� lze parametrem -fn stanovit, jak� maj� pou��vat font:


xterm -fn '-misc-fixed-medium-r-normal--14-*-iso8859-2'

Znak hv�zdi�ka je �ol�k, kter� nahrazuje jednu nebo v�ce slo�ek jm�na. U v�t�iny program� je mo�n� nastavit pou��van� fonty tak� pomoc� atribut� (resources). To m��e prov�st bu� spr�vce po��ta�e �pravou souboru z adres��e /usr/X11R6/lib/X11/app-defaults, nebo libovoln� u�ivatel t�m, �e zkop�ruje soubor ze zm�n�n�ho adres��e do sv�ho domovsk�ho adres��e, a na za��tek jm�na souboru p�id� te�ku.

Vektorov� fonty pro X

4.2 Kl�vesnice v X pomoc� XKB

Pro pou��v�n� �esk� kl�vesnice v X Window System mus�te m�t nainstalovan� a nastaven� locales (viz kapitola locales), tak�e prvn� z p��kaz�


printenv LC_ALL
printenv LC_CTYPE
printenv LANG

kter� n�co vyp��e, mus� vypsat cs_CZ, cs_CZ.k�dov�n� nebo czech (pouze v p��pad�, �e m�te �esk� locale pro kategorii LC_CTYPE v adres��i cs, m��e b�t vyps�no cs). V KDE je pro nastaven� kl�vesnice p��mo menu, v ostatn�ch prost�ed�ch je t�eba vybrat vhodnou mapu kl�vesnice p��kazem


setxkbmap -symbols 'czsk(us_cz_qwertz)' -compat group_led

kter� m��e b�t um�st�n v souboru $HOME/.Xclients jednotliv�ch u�ivatel�, aby se provedl automaticky p�i ka�d�m spu�t�n� X. Mapa us_cz_qwertz m� dva re�imy �innosti. V prvn�m funguje americk� rozlo�en� kl�vesnice, ve druh�m se chov� jako �esk� psac� stroj. P�ep�n�n� mezi ob�ma re�imy se prov�d� kl�vesou ScrollLock nebo sou�asn�m stisknut�m obou kl�ves Shift. Chvilkov�ho p�epnut� do opa�n�ho re�imu lze dos�hnout dr�en�m prav� kl�vesy Alt. Kl�vesa = funguje jako mrtv� ��rka, se Shiftem jako mrtv� h��ek, kl�vesa ` (vlevo od kl�vesy 1) funguje jako mrtv� p�ehl�ska a se Shiftem jako mrtv� krou�ek, tj. pro naps�n� mus�te stisknout Shift+= a potom n. Krom� mapy us_cz_qwertz je k dispozici je�t� mapa us_cz_qwerty, kter� m� oproti �esk�mu psac�mu stroji p�ehozen� kl�vesy z a y, a mapa us_cz_prog, u kter� horn� �ada kl�ves s ��slicemi produkuje p�smena s h��ky a ��rkami jako na �esk�m psac�m stroji, funguj� ob� mrtv� kl�vesy, ale jinak se kl�vesnice chov� jako americk�. Existuj� i mapy cz_us_*, kter� maj� implicitn� zapnutou jednu z uveden�ch �esk�ch kl�vesnic a lze je p�epnout na americkou kl�vesnici. Tyto mapy ov�em p�sob� probl�my p�i komunikaci s nelokalizovan�mi po��ta�i. Ke v�em �esti map�m existuj� i slovensk� varianty, v jejich� jm�n� je cs nahrazeno sk.

Pro pou��v�n� v��e uveden�ch map kl�vesnice mus� m�t sekce Keyboard souboru /etc/X11/XF86Config tento obsah:

  Protocol        "Standard"
  AutoRepeat      500 5
  XkbModel        "pc102"

--- nesm� obsahovat ��dek XkbDisable, a aby bylo mo�n� m�nit mapy kl�vesnice p��kazem setxkbmap, mus� b�t pou�it ��dek XkbModel (samoz�ejm� s uveden�m spr�vn�ho modelu kl�vesnice). P�id�n�m ��dk�

  XkbKeymap       "xfree86(us_cz_qwertz)"
  XkbCompat       "group_led"

je mo�n� zajistit zapnut� zadan� mapy kl�vesnice p�i ka�d�m startu X bez pou�it� p��kazu setxkbmap.

V�echny v��e uveden� mapy kl�vesnice jsou standardn� sou��st� bal�ku XFree86 a� od verze 3.3.3.1 z roku 1999, tak�e pokud m�te star�� verzi nebo X jin� produkce, budete muset tyto mapy doinstalovat (nyn� jsou pravd�podobn� dostupn� pouze jako sou��st bal�ku XKB-czsk-forcedIM). nebo se mus�te spokojit s mapou cs, kter� je sou��st� X11 ji� od verze R6.1 Mapa cs se zap�n� p��kazem setxkbmap cs -option grp:shift_toggle nebo ��dky

  XkbLayout       "cs"
  XkbOptions      "grp:shift_toggle"

v souboru /etc/X11/XF86Config. Parametr grp:shift_toggle umo��uje p�epnut� na americkou kl�vesnici sou�asn�m stiskem obou Shift�, co� je nezbytn�, proto�e mapa cs sama o sob� neumo��uje zad�vat n�kter� speci�ln� znaky, nap��klad k���ek # a zavin�� @.

Verzi X je mo�n� zjistit p��kazem

X -showconfig

Mo�n� probl�my

Lokalizace kl�vesnice v X byla a� doned�vna jedn�m z nejtvrd��ch o���k� p�i lokalizaci Linuxu. Pokud nepou��v�te nejnov�j�� verzi X11 (a nepou��v�te KDE, v n�m� je �esk� kl�vesnice u� pom�rn� dlouho funk�n�), je t�m�� jist�, �e v�m kl�vesnice fungovat nebude, ale ani v nejnov�j�� verzi X11 nebude fungovat v ka�d�m programu. Pokud m�te tu sm�lu, �e v�m kl�vesnice nefunguje v�bec nikde, pou�ijte n�sleduj�c� postup pro odhalen� a odstran�n� chyb:

Zkontrolujte, zda m�te spr�vn� nastaven� prom�nn� prost�ed� pro locales, jak je pops�no na za��tku t�to kapitoly, otev�ete si textov� termin�lov� okno a zkuste zapnout kl�vesnici p��kazem


setxkbmap -symbols 'czsk(us_cz_qwertz)' -compat group_led

Pokud nen� p��kaz setxkbmap nalezen (m�l by b�t v /usr/bin/X11/setxkbmap), pak pravd�podobn� m�te velmi starou verzi X a budete muset prov�st upgrade nebo pou��t kl�vesnici popsanou v podkapitole Kl�vesnice v X pomoc� xmodmap �i se spokojit s po�e�t�n�m kl�vesnice pouze v programu xterm popsan�m v kapitole Lokalizace jednotliv�ch aplikac�. Jestli�e se vyp��e XKB extension not present on :0.0, znamen� to, �e nem�te zapnut� XKB (v souboru /etc/X11/XF86Config je nevykomentovan� ��dek XkbDisable). Jestli�e se vyp��e Couldn't interpret _XKB_RULES_NAMES property, chyb� v�m v sekci Keyboard souboru /etc/X11/XF86Config ��dek XkbModel nebo nem�te nainstalov�ny �esk� mapy kl�vesnice.

Mapy kl�vesnice jsou sou��st� bal�ku ftp://ftp.muni.cz/pub/localization/linux/X11/XKB-czsk-forcedIM-0.04.tar.gz, kter� v�ak obsahuje tak� knihovnu forcedIM, pro "opravu" n�kter�ch aplikac� nefunguj�c�ch s �eskou kl�vesnic�. Tato knihovna m��e s n�kter�mi programy a verzemi X11 zp�sobovat probl�my. Pokud budete instalovat soubory s mapami kl�vesnice z tohoto bal�ku ru�n�, nezapome�te, �e po p�id�n� souboru do n�kter�ho z adres��� v /usr/X11R6/lib/X11/xkb je nutn� aktualizovat p��slu�n� .dir soubor, nap��klad takto:

cd /usr/X11R6/lib/X11/xkb/keymap
xkbcomp -llphfR '*' -o ../keymap.dir

Pokud se mapu kl�vesnice poda�ilo nastavit, nastavte prom�nnou prost�ed� XKB_DEBUG a v okn� s termin�lov�m emul�torem zadejte ru�n� p��kaz


xterm &

V p�vodn�m okn� se mus� vypsat XKEYBOARD (version 1.00/1.00) OK!. Pokud se vyp��e XKEYBOARD extension not present je op�t probl�m s XkbDisable.

Pokud se v p�vodn�m okn� vyp��e Warning: locale not supported by C library, locale unchanged, je to chyba v nastaven� locales --- n�kterou z v��e uveden�ch prom�nn�ch prost�ed� m�te nastavenu na locale, kter� na va�em po��ta�i nen� nainstalovan� nebo je nastavena na alias, jemu� v souboru /usr/share/locale/locale.alias nen� p�i�azeno existuj�c� locale (v adres��i, kter� se vyp��e p��kazem localedef --help nen� podadres�� s p��slu�n�m jm�nem).

Jestli�e se v p�vodn� okn� vypisuje Warning: locale not supported by Xlib, locale set to C nen� nastaven� locale zn�m� knihovn� Xlib. Obvykle to je cs_CZ; konkr�tn� hodnotu lze zjistit ru�n�m startem programu netscape (vyp��e se n�co jako netscape-navigator: locale `cs_CZ' not supported by Xlib; trying `C'.). Pro inkriminovan� locale je nutn� doplnit nebo upravit v souboru /usr/X11R6/lib/X11/locale/locale.alias ��dek

cs_CZ                   cs_CZ.ISO8859-2

Tato chyba je opravena a� v XFree86 3.3.3.1. Tak� je chybn� ��dek pro czech --- spr�vn� m� b�t

czech                   cs_CZ.ISO8859-2

ale tato chyba se p�i norm�ln� instalaci libc/glibc neprojev� (czech je alias na cs_CZ.ISO8859-2 a locales jsou um�st�n� v adres��i cs_CZ, tak�e X pou�ij� cs_CZ). ��dek pro czech je opraven v X11R6.4.

Je-li v�e v po��dku, p�epn�te se do nov� otev�en�ho okna programu xterm, zadejte p��kaz vi test, stiskn�te kl�vesu i, a p�epn�te na �eskou kl�vesnici stisknut�m kl�vesy Scroll Lock. Pokud byla mapa kl�vesnice nastavena s -compat group_led, m�la by se kontrolka Scroll Lock rozsv�cet a zhas�nat nejen p�i ma�k�n� kl�vesy Scroll Lock, ale i stisknut�m obou kl�ves Shift, a mus� tak� blikat v rytmu ma�k�n� prav� kl�vesy Alt. P�i rozsv�cen� kontrolce Scroll Lock m��ete zkontrolovat, zda funguje psan� �esk�ch znak�. M�ly by se vypisovat h��kovan� znaky ����, ��rkovan� ����� i znaky s akcenty po pou�it� mrtv�ch kl�ves. Fungovat znamen�, �e se n�co vypisuje. Jestli�e se vypisuj� podivn� znaky, bude probl�m v tom, �e xterm nepou��v� ISO-8859-2 fonty nebo tyto fonty ani nem�te nainstalovan�. �e�en� naleznete v kapitole Fonty v X Window System.

Pokud kl�vesnice funguje ve vi, ale ne v p��kazov�m ��dku, nem�te pravd�podobn� zkonfigurovan� shell pro pr�ci s osmibitov�mi znaky. N�prava je pops�na v podkapitol�ch bash a tcsh.

Pokud v nov� otev�en�m okn� �esk� kl�vesnice funguje, ale jinde ne, zkontrolujte, zda m�te pot�ebn� prom�nn� prost�ed� nastaveny u� p�ed startem X a zda ostatn� okna nepat�� jin�mu termin�lov�mu emul�toru ne� programu xterm. Jin� termin�lov� emul�tory nemus� s �eskou kl�vesnic� pracovat.

Nefunguj� kl�vesy '����', ale '�����' funguj�: nem�te nastavenou prom�nnou prost�ed� LC_ALL nebo LC_CTYPE, p��padn� LANG na czech nebo cs_CZ (ne� jste do�etli sem, byli jste n�kolikr�t nab�d�ni k jejich nastaven�).

Nefunguj� kl�vesy '�����', tyto znaky v�ak lze napsat pomoc� mrtv� kl�vesy ��rka a 'yaieu': toto je dlouho zn�m� chyba, kter� je odstran�na a� v XFree86 3.3.3.1. Na�t�st� ve star��ch verz�ch X je mo�n� ji obej�t �pravou textov�ch soubor� popsanou v podkapitole Nefunguj�c� �����.

Krou�kovan� '�' se na program�torsk� kl�vesnici p��e stisknut�m mrtv� kl�vesy Shift+obr�cen� apostrof n�sledovan�m stiskem kl�vesy u. Pokud jste zvykl� ps�t krou�kovan� '�' jako mrtv� h��ek a 'u', p�idejte do souboru /usr/X11R6/lib/X11/locale/iso8859-2/Compose ��dky

<dead_caron> <U>                        : "\331"        Uring
<dead_caron> <u>                        : "\371"        uring

(velk� mezery jsou vytvo�eny tabel�tory).

V tomto okam�iku by v�m �esk� kl�vesnice v X m�la v z�sad� chodit. Bohu�el st�le existuje mnoho program� pod X, kter� s �eskou kl�vesnic� nepracuj�. Je to chyba aplikace. �e�en�m je chybn� aplikaci opravit nebo n�koho znalej��ho slu�n� po��dat o pomoc s opravou. Ne� bude aplikace korektn� opravena, m��ete se pokusit o do�asnou n�pravu popsanou v podkapitole Probl�m mrtv�ch kl�ves a XKB. Pokud aplikace na��t� �esk� znaky, ale nepracuje s mrtv�mi kl�vesami, je t� mo�n� pou��vat kl�vesnici cz-komp-qwerty nebo cz-komp-qwertz, kde se akcentovan� znaky p��ou se stisknut�m prav�m Alt (nap��klad '�' se dostane jako AltGr-o, '�' se dostane kombinac� Alt-Shift-R).

Nefunguj�c� �����

Tato chyba se projevuje t�m, �e nen� mo�n� vkl�dat z kl�vesnice ne-ASCII znaky, kter� pat�� z�rove� do ISO-8859-1 i do pr�v� pou��van� znakov� sady (pro �e�tinu sada ISO-8859-2 a znaky �����), bez pou�it� mrtv�ch kl�ves. Vkl�d�n� pomoc� mrtv� kl�vesy ��rka n�sledovan� aeiuy p�itom funguje. Chyba se projevuje ve v�ech aplikac�ch v X, a je opravena a� v XFree86 3.3.3.1.

Ve star��ch verz�ch je mo�n� tuto chybu n�kolika zp�soby obej�t. Pravd�podobn� ��dn� z nich nen� zcela korektn�, ale chybu odstra�uj�.

Asi nejlep�� je do souboru /usr/X11R6/lib/X11/locale/iso8859-2/Compose p�idat n�sleduj�c� ��dky:


<yacute>                               : "\375"        yacute
<aacute>                               : "\341"        aacute
<iacute>                               : "\355"        iacute
<eacute>                               : "\351"        eacute
<uacute>                               : "\372"        uacute

Druhou mo�nost� je opravit ��dek

        ct_encoding     ISO8859-2:GR

t�m�� na konci souboru /usr/X11R6/lib/X11/locale/iso8859-2/XLC_LOCALE na

        ct_encoding     ISO8859-2:GR; ISO8859-1:GR

Prvn� metoda opravy je pravd�podobn� o n�co lep��, proto�e u druh� p�i uveden� n�zvu symbolu pat��c�ho do ISO-8859-1 a ne do ISO-8859-2 v definici kl�vesnice bude p�i stisknut� p��slu�n� kl�vesy na�ten znak s p��slu�n�m k�dem, p�esto�e se v sad� ISO-8859-2 nevyskytuje.

Star�� opravy t�to chyby pou��valy v map�ch kl�vesnice pro dot�en� znaky symboly il2_* definovan� v souboru Compose (il2_aacute m�sto aacute) nebo p��mo ��seln� k�dy t�chto znak�.

Probl�m mrtv�ch kl�ves a XKB

Dal�� probl�my s �eskou a slovenskou kl�vesnic� vznikaj� t�m, �e se pro psan� n�kter�ch znak� s akcenty pou��vaj� mrtv� kl�vesy (kl�vesy odpov�daj�c� samostatn� ��rce a h��ku na psac�m stroji, kter� vyp��ou akcent bez posuvu v�lce, tak�e dal�� napsan� znak bude na t�e pozici). Na po��ta�i je pot�eba p�i stisknut� mrtv� kl�vesy pozdr�et zpracov�n� znaku a� do stisknut� dal�� kl�vesy, a pak nap��klad m�sto kr�tk�ho 'a' vr�tit dlouh� '�'. Bohu�el podpora mrtv�ch kl�ves byla a� do verze X11R6 z�le�itost� X-serveru, a n�kter� X-servery mrtv� kl�vesy v�bec nepodporovaly. Standardn� podpora mrtv�ch kl�ves se objevila a� ve verzi X11R6.1 spolu s nov�m mechanismem pro pr�ci s n�rodn�mi kl�vesnicemi zvan�m X Keyboard Extension (XKB) pou��vaj�c�m tak zvan� vstupn� metody (input methods). Tyto vstupn� metody mus� jednotliv� aplikace inicializovat a pou��vat, tak�e star�� aplikace s XKB nefunguj�. XFree86 --- free implementace X11 pou��van� ve v�t�in� distribuc� Linuxu podporuje mrtv� kl�vesy pomoc� XKB od verze 3.3, do t� doby bylo mo�n� pou��vat mrtv� kl�vesy pouze pomoc� xmodmap.

V sou�asnosti je st�le mnoho star��ch aplikac�, kter� s XKB nefunguj�. Koncep�n�m �e�en�m je tyto aplikace upravit, aby pou��valy vstupn� metody. Ne� k tomu dojde, je nutn� se v neupraven�ch programech vzd�t pou��v�n� n�rodn�ch kl�vesnic nebo pou��vat r�zn� �pinav� triky, kter� jejich pou��v�n� umo�n�.

Nejroz���en�j��m z t�chto trik� je patch Stano Meduny na knihovnu libX11, zn�m� pod n�zvem forcedIM. Tento patch zajist�, �e pokud aplikace spr�vn� neinicializuje vstupn� metody, provede jejich inicializaci p��mo zm�n�n� knihovna. Pou��v�n� patchovan� knihovny m� v�ak n�kolik nev�hod:

N�kter� z nev�hod forcedIM odstra�uje bal�k http://www.fi.muni.cz/~kabi/linux/LibI18Nforce.tar.gz, kter� obsahuje upraven� verze pouze n�kolika m�lo funkc� z libX11 a nav�c je mo�n� jej pou��vat selektivn� pouze pro aplikace, kter� s n�rodn� kl�vesnic� nepracuj�. Takov� aplikace se startuj� n�sleduj�c� d�vkou:


#!/bin/sh
LD_PRELOAD=LibI18N/lib/libI18Nforce.so.0.0
export LD_PRELOAD
chybna_aplikace $*

(p�ed libI18Nforce.so.0.0 a chybna_aplikace je t�eba doplnit spr�vn� cesty, pro libc5 je t�eba pou��t libI18Nforce-c5.so.0.0). Instalace bal�ku spo��v� v rozbalen� archivu a vytvo�en� startovac�ch skript� pro v�echny X11 programy, kter� nefunguj� s mrtv�mi kl�vesami (a kter� s knihovnou libI18Nforce funguj�). Bal�k neobsahuje mapy kl�vesnice.

P�vodn� bal�k forcedIM od Stano Meduny lze z�skat na ftp://ftp.fi.muni.cz/pub/localization/linux/X11/XKB-czsk-forcedIM-0.04.tar.gz. Tento bal�k ovliv�uje v�echny X11 aplikace (n�kter� bohu�el negativn�). Zahrnuje v sob� star�� bal�ky XKB-cz-X11R6.3.tar.gz s mapami kl�vesnic us_cz_qwertz atd., xlib-forcedIM-0.01.tar.gz (kter� obsahuje i p�elo�enou patchovanou knihovnu z  ftp://ftp.levonet.sk/pub/linux/localization/libX11.so.6.99), cs_CZ locale (u� obsa�en� v glibc 2.0.7, ale chyb�j�c� v glibc 2.0.5), sk_SK locale a patch na soubor XLC_LOCALE. Bal�k by m�l fungovat na v�ech distribuc�ch Linuxu pou��vaj�c�ch XFree86 s XKB roz���en�m (lze zjistit podle existence adres��e /usr/X11R6/lib/X11/xkb). RPM tohoto bal�ku je na ftp://rak.isternet.sk/pub/linux/localization/mirrors/salstar.award.sk/RPMS/XKB-czsk-forcedIM-0.04-2.i386.rpm.

Rozbalen� bal�k se nainstaluje spu�t�n�m skriptu install.sh. Skript je nutn� spustit jako root z konzole (ne z X). Pokud v� po��ta� startuje p��mo do X (runlevel 5), je vhodn� zm�nit pro instalaci implicitn� runlevel v ��dku id:5:initdefault: v souboru /etc/inittab na 3, a hodnotu 5 vr�tit a� po ov��en�, �e X skute�n� funguj�. Popis, jak p�ep�nat jednotliv� mapy kl�vesnice, je uveden na za��tku kapitoly Kl�vesnice v X pomoc� XKB. Pro zaji�t�n� funk�nosti aplikac�, kter� neinicializuj� vstupn� metody, je t�eba nastavit prom�nnou XLIB_FORCE_I18N na hodnotu 2 nebo 1.

V p��pad� probl�m� s konkr�tn� aplikac� p�i pou��v�n� knihovny forcedIM nastavte p�ed spu�t�n�m probl�mov� aplikace prom�nnou prost�ed� XLIB_FORCE_I18N_DEBUG na hodnotu 2 a po�lete v�stup s popisem, po kter� akci n�sledovaly konkr�tn� ��dky v�pisu, na adresu [email protected].

4.3 Kl�vesnice v X pomoc� xmodmap

Tato kl�vesnice je pou�iteln� i na X-serverech, kter� nepodporuj� XKB. Aby fungovaly mrtv� kl�vesy, je nutn� jejich podpora na X-serveru.

�e�en� z cs-tools

Jedn� se o zastaral� �e�en�, kter� je zde uvedeno pouze pro �plnost. Neobt�ujte pros�m jeho autora ani s ��dostmi o pomoc nebo radu.

�e�en� je obsa�eno v bal�ku cs-tools, v adres��i X11/Xlib-Compose-1.1. Ka�d� kl�vesnicov� mapa obsahuje dv� kl�vesnice; na druhou kl�vesnici je mo�n� p�epnout dr�en�m AltGr (prav� kl�vesa Alt) nebo p�e�azova�em ScrollLock.

�e�en� od Zde�ka Kabel��e

Zden�k Kabel�� [email protected]; 16. 9. 1998

Jedn� se o pokra�ov�n� modifikace varianty s pomoc� Xmodmap (Viz nap� http://www.fi.muni.cz/~kabi/linux/linux.html); p�vodn� Xmodmap se nahrad� nov�j�� variantou http://www.fi.muni.cz/~kabi/Xmodmap, ��m� je v provozu p�ep�n�n� mezi 3 kl�vesnicemi (zat�m nev�m jak to inteligentn� hl�sit --- sv�t�c� scroll-lock p�i variant� B i C nen� p��li� srozumiteln�):

Varianta A --- �ist� US kl�vesnice Scroll-lock p�ep�n� kl�vesnici --- Win95 kl�vesa tak�. (Pro z�jemce p�ep�n�n� Ctrl+Shift :-))

Varianta B --- moje "klasick�" �esk� --- tj. �esky pouze 2, 3, ..., 0 jinak standard (tj. v�etn� +/=), v�e ostatn� p�es mrtv� kl�vesy - vyu��v� jednak standardn� mrtvoly rozm�st�n� na F9-F12 (nejsou v�echny) a vyu��v� dead_iota na PrintScrn ve spojen� s hack-em Compose - ned�vno publikovan�m na http://www.fi.muni.cz/~pekon/Compose.

Varianta C --- hnusn� �kared� o�kliv� hack --- nicm�n� funguje - m�l by umo�nit vkl�dat �esk� znaky tam, kde je to nezbytn� nutn� a program to prost� jinou cestou nepodporuje --- nap�. star� verze netscape aj. (lze na to pou��t i LD_PRELOAD s n�kolika hacknut�mi patchnut�mi funkcemi, ale tato varianta je p�ece jen jednodu���). Proto�e v t�to variant� nelze pou��vat mrtv� kl�vesy, musel jsem naskl�dat standardn� �esky pou��van� kl�vesy na F-keys --- velk� p�smena se p��� se shiftem --- tj. kl�vesnice nep��e !@#$%^&*()_ a F1-F20 --- pokud jsou pot�eba tyto znaky je pot�eba se p�epnout, napsat je, a p�epnout se zp�t.

Samoz�ejm� nelze o�ek�vat, �e program s�m od sebe neschopn� pracovat s ISO-8859-2, za�ne tyto symboly korektn� implementovat. Jde o hack, kter� prost� vrac� m�sto dcaron -> idiaeresis, co� je symbol le��c� na stejn� pozici, ale v sad� ISO-8859-1. Aby tedy bylo vid�t spr�vn� v�stup je pot�eba �patn� napsan�mu programu vnutit font --- co� se nemus� v�dy poda�it - pak tedy sice budete ps�t spr�vn�, jen�e uvid�te �patn� :-)

V�em se tu omlouv�m, �e jsem tu publikoval tento hack --- jsem proti n�mu, ale je to tak jednoduch� a primitivn�, �e by bylo �koda se o t�to mo�nosti nezm�nit.

Pokud chce n�kdo n�jak� standardn� rozm�st�n� psac�ho stroje, nech� si uprav� Xmodmap, a pokud si mysl�, �e to ud�lal fakt sq�le, a� mi jej mailne.


Dal�� P�edchoz� Obsah