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.