Ceska klavesnice v X-ech

Jan Krupa 100upa na notorola.sh.cvut.cz
Sobota Leden 17 19:21:20 CET 1998


Dobry den,

patrim mezi zacinajici uzivatele Linuxu a jiz chvili sleduji diskuse v
teto
konferenci na tema cestiny. Rad bych se podelil o vysledky sveho
experimentovani s cestinou podle zde uvadenych doporuceni. Omlovam se,
ze je prispevek ponekud
delsi, ale doufam, ze pomuze trochu se zorientovat zacatecnikum v
moznostech
pocesteni X-ek. Neuvadim, zde popis pocesteni jednotlivych aplikaci
(fonty,
8-bit vstup/vystup apod.). 
Trebaze jsem nize uvadena reseni zkousel na RH-5.0, domnivam se, ze jsou
obecne
pouzitelna i pro jine systemy s novejsimy X servery podporujicimi X
Keyboard
Extension (XFree3.2, XFree3.3).

Zde jsou popisovana reseni:

1)
Pouziti programu xmodmap mi pripadne pomale a zminuji se o nem proto, ze
existuje. Xmodmap premapuje jednotlive klavesy a jeho vyvolani se zavesi
na
nektere klavesy (F11, F12) v okennim manazeru.

2)
Jan Kasprzak vyrobil balicek
ftp://ftp.fi.muni.cz/pub/localization/linux/cs-tools/testing/XKB-cz-X11R6.3-libc6.tar.gz
Po spusteni instalacniho skriptu se nainstaluji ceske a slovenske
klavesnicove
mapy (od S.Meduny) a vyrobi ceske locales. V RH-5.0 jsou totiz locales
pripravene, ale musi se vygenerovat. Rucne se pak musi zmenit v
/etc/X11/XF86Config nastaveni klavesnicove mapy na pozadovanou. V
balicku jsou
k dispozici us-cz/sk-qwerty/z/prog verze. Tady bych poznamenal, ze mi X
server
pri startu pri poziti techto map vypisuje chybovou hlasku:

The XKEYBOARD keymap compiler (xkbcomp) reports:
>Error:       Identifier "AltGr" of type int is unknown
>Error:       The symbol interpretation virtualModifier field must be a virtual
modifier
>             Ignoring illegal asignment in Mode_switch+AnyOfOrNone(all)
Errors from xbcomp are not fatal to the X server

Nezkoumal jsem proc tomu tak je, ale klavesnice funguje.  Prepinani mezi
primarni
a sekundarni klavesnici se provadi pomoci ScrollLocku nebo soucasnym
stiskem obou
shiftu a stav je indikovan ScrollLock ledkou.  Mel bych vyhradu k
prepinani stiskem obou shiftu, v xdosu totiz zpusobi stisk shiftu jeho
"zaseknuti". Mozna
s tim souvisi to, ze program xev vraci pri stisku shiftu symbol
Shift_L(Shift_R), zatimco pri uvolneni vraci symbol
ISO_Prev_Group(ISO_Next_Group). Problem s xdosem se da vyresit volbou
jineho prepinani. V souboru
/usr/X11R6/lib/X11/xkb/symbols/czsk se zmeni radek

      include "group(shift_toggle)"
na treba
      include "group(ctrl_shift_toggle)"

Po prostudovani /usr/X11R6/lib/X11/xkb/symbols/group se daji zjistit
dalsi volby
prepinani. Locales se zapnou nastavenim promenne LANG=cs nebo
LC_CTYPE=cs v
nekterem startovacim souboru X-ek.  Da se tak aplikaci vedet, ze ma
akceptovat
latin2 znaky. Obe promenne funguji trochu jinak, prikladem muze byt
vypis 
ls -la.
Nevyhodou tohoto reseni je, ze aplikace musi locales podporovat. Ty,
ktere namaji podporu zabudovanou, ceske znaky brat nebudou.  Reseni,
ktere jsem nezkousel, je pouzit patch na nejakou knihovnu, ktery je
obsazen v xlib-forcedIM-0.01.tar.gz.

Zaverem bych poznamenal, ze trebaze toto pocesteni X-ek neni tak
jednoduche ani
neprinasi takove vysledky jako dalsi, ktere jsem zkusil, pripada mi
'nejcistsi' a je otazkou casu, kdy se objevi vice programu podporujicich
locales.

3)
Posledni moznost, kterou jsem vyzkousel je na
ftp://sunsite.mff.cuni.cz/OS/FreeBSD/czech/X3.2-cz.tgz . Ve svem
/etc/X11/XF86Config jsem nahradil sekci "Keyboard" odpovidajici sekci ze
souboru
v tomto balicku. Zbyvajici soubory z balicku jsem prekopiroval do
odpovidajicich adresaru k sobe. Balicek obsahuje us_cs a cs_us
klavesnicovou mapu a Compose pro mrtve klavesy. To, ze cestina funguje,
je podle mne diky "spinave finte". Aplikaci, ktera ma cist znaky z ceske
klavesnice (latin2), se ve skutecnosti posilaji odpovidajici symboly
latin1 (zkouseno pomoci xev). Pokud tedy aplikace zobrazuje fonty v
latin2 uvidime ceske znaky. Vyhodou je, ze samotna aplikace locales
nemusi podporovat.


V textu jsem neuvadel vsechny detaily jednotlivych reseni a pokud jsem
se
dopustil pri popisy zasadnich chyb, tak me prosim opravte.


    Jan Krupa


Další informace o konferenci Linux