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.
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φ |
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.
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.
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
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).
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∙.
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
.
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.
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.
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.