Dal╣φ P°edchozφ Obsah

4. Lokalizace X Window Systemu

Petr Kolß° Petr.Kolar@vslib.cz; 14. 5. 1999, pou╛φvßnφ mapy cs: Peter Ivanyi Ivanyi@internet.sk: 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 stano@trillian.eunet.sk.

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ßΦ kabi@fi.muni.cz; 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