XFree86 4.1 a ceska klavesnice [long]
Kamil Toman
ktoman na email.cz
Úterý Srpen 28 18:50:10 CEST 2001
Dostavam v posledni dobe hodne emailu ohledne klavesnice cz (sk) v XFree 4.1.x.
Byl jsem take pozadan, abych se k tematu vyjadril i na linux na linux.cz, ze
se tady aktualne probira.
Poznamka: v konferenci linux na linux.cz jsem byl prihlaseny, ale nekdy koncem
jara mi prestaly chodit prispevky. Protoze jsem mel docela dost prace (a na
cteni konference stejne nemel cas), tak jsem to ignoroval. Doufam, ze po
nekolika prikazech unsubscribe/subscribe, ktere jsem poslal se to ted spravi.
;)
Zkusim popsat svuj pohled na vec:
* Novou ceskou klavesnici cz (a sk) jsem se do XFree86 4.1.x implementoval,
protoze starsi implementace xkb, locales, soubory Compose pro latin2 a
klavesnicove mapy nebyly vyhovujici. I kdyz vetsina veci (na rozdil od, bez
dalsich zaplat, temer nefunkcnich v 3.3.x) v 4.0.x fungovala docela dobre,
stale zde byly nektere problemy (chybny fallback mechanizmus apod.). I kdyz slo
o veci spise okrajove (nekoho treba nezajima, ze v korektne napsanem programu
XYZ nebudou chodit urcite kombinace klaves), jako finalni reseni se to mi to
prilis dobre nejevilo.
Verze XFree86 4.1.0 neni, jak mi opet nekolik lidi vnucovalo, bugfixovou
verzi 4.0.x. Obsahuje nektere zpetne uplne nekompatibilni veci: napr.
napr. nove schema ovladacu pro DRI, ktere potrebuje i jine podpurne
ovladace v jadre (jsou tam az od verze 2.4.9) a podobne. Podobne zmeny
jsou i ve fontech a xfs a jinych klavesnicich. Na opravu designu ceske
klavesnice to byla tedy, podle meho nazoru, docela dobra doba.
Nebyl to tedy duvod, ze jsem agent komercnich firem, ktery se svevolne snazi
Linux znicit, jak mi nekolik lidi (kupodivu se nekdy ani nepodepsali) velmi
nevybiravym zpusobem snazilo naznacit v e-mailech.
* Design cz je odlisny od predesleho czsk a pojetim se blizi daleko vice
ostatnim klavesnicim xf86, napr. nemecke (de) a anglicke (en).
Co lide patrne nejvic postradaji v klavesnici cz oproti czsk, je "hack",
ktery umoznoval prehazovani keymap urcitou (ale ne libovolnou) kombinaci
klaves definovanou v XF86Configu. Jak to fungovalo? czsk mela dve skupiny
(xkb group) klaves. V jedne byla normalni ceska klavesnice, ve druhe
byla znovu nadefinovana americka. "Zaseknutim" skupiny, pripadne "nakouknutim"
do druhe se pak daly vkladat dalsi symboly, ktere v aktualni skupine
vubec nebyly. Vyhoda je jasna - lze se dostat k americke i ceske klavesnici,
dokonce bez podpory dalsich programu. Ale ma to i svoje nevyhody. Krom toho, ze
jsou tam nektere (na prvni pohled zaludne ukryte) problemy, jako zminovany
fallback klaves, i treba:
- Zmeny americke klavesnice bud nebudou reflektovany ceskou (to se tyka
i zmenych a pridanych funkcnich klaves), anebo muze dochazet k zavlecenych
chybam pri zmene puvodni us klavesnice nebo ji podrizenych.
- Definice czsk byly spatne udrzovatelne, rozsahle a opakovaly zbytecne
spoustu definic.
- czsk zpusobovala dost vrasek autorum ruznych konfiguracnich utilit a
instalacnich programu, nebot (zne)uzivala okrajove mechanizmy xkb k necemu
jinemu, nez byl puvodni vyznam (varianty klavesnic bez mrtvych klaves).
Vubec nebylo napr. jasne, ktera z klavesnic czsk se ma pouzit a jakym
zpusobem ji nabizet uzivatelum. Rozumne to umelo jen nekolik (v .cz/.sk)
upravenych utilit, ktere pro zmenu umely spravne jen tu cestinu/slovenstinu.
- Ze strany vyvojaru core-teamu navic existoval dost silny tlak, aby
takove "hacky" z distribuce zmizely.
* Pouzity "hack" czsk fungoval jen "natvrdo" pro americkou klavesnici,
kdo potreboval analogicke chovani napr. pro Nemcinu nebo Francouzstinu
(vicejazycna gymnazia) mel jednoduse smulu. Nemluve o vice kombinacich.
Z klavesnicovych map jako us_de_fr, ktere uzivatele posilali do XFree86
vstavaly vyvojarum vlasy na hlave. Pridat vsechny permutace opravdu
neni reseni.
Cistsi, byt (jak vidno ;) bolestive reseni, je prepinani layoutu klavesnic
pres treti program. Tim muze byt napriklad setxkbmap nebo jiny, ktery
umi stejnym zpusobem prehodit layout klaves na povel kombinace klaves.
KDE a Gnome takovym programem disponuji. V twm a jinych manazerech
osobne pouzivam napr. tento trivialni skriptik skript:
---
#!/bin/sh
PFILE=$HOME/.switch_xkb.cz.state
if test -f $PFILE; then
setxkbmap -layout us
rm -rf $PFILE
else
setxkbmap -layout cz
touch $PFILE;
fi;
---
ktery lze na nejakou kombinaci klaves bez nejakych potizi namapovat.
Problem je jen, pokud wm nebo desktop prostredi "vyzira" nebo nepovoli
programu odchytit programu klavesovou kombinaci, ktera by prepnuti
zaridila. Pak je nutne takovy program window manageru predradit.
(Uvazuji i nad zmenou konfigurace xkb, ktera by takovou vec umoznila
primo, ale zatim nemam ohlas od core-vyvojaru XFree86.)
I kdyz je to docela neprijemna vec, nejevi se mi to jako neprekonatelny
problem.
* Z diskuze nad navrhovanou implementaci do XFree86 4.1 vyplynuly jeste dalsi
veci:
- Predchozi verze XFree86 obsahovaly czsk i cs, cs_qwerty + jejich
varianty pro sun a sgi (zcasti chybejici). Kazda z nich mela sve specificke
chyby i prednosti. Krom toho existovala jeste klavesnice programatorska ( a k
ni nejmene dalsi tri neoficialni). Kdo chce namitat, ze se pouzivala jen
czsk, hrube se plete. Neni to pravda, pomerne dost lidi pouzivalo i
klavesnici cs nebo varianty pro sun a sgi. Jako nejcistsi reseni se nam zdalo
stare mapy vymazat (protoze na jejich opravy a dalsi udrzbu nikdo nema cas) a
nahradit je univerzalne pouzitelnou klavesnici cz. Problemem byla klavesnice
qwerty, kterou pouziva asi vetsina programatoru.
Vysledne reseni tedy obsahuje klavesnici cz a klavesnici cz_qwerty, ktera
ja tataz s tim, ze ma prehozene _jen_ klavesy x a y (tedy ne napr. kopirujici
klavesnici qwerty z Windows). Byla za tim i snaha usnadnit orientaci
ve zbytecnem mnozstvi vsemoznych ceskych klavesnic -- verte nebo ne,
je to minimalne casty problem cizincu, kteri je z nejakeho duvodu chteli
pouzit.
To vsechno s tim, ze dalsi klavesnice by v podstate nemel byt problem
kdykoliv pridat napr. formou nejakeho balicku (chyby v locales a Compose
jsou z velke casti opraveny uz pro cz/cz_qwerty). Programatorske klavesnice
si IMO muze kazdy upravit sam presne podle sveho gusta.
- Do nove 'cz' klavesnice pribyla cela sada novych klavesovych kombinaci,
ktere maji za cil co nejvice usnadnit prechod do XFree86 uzivatelum
Windows a Macu. Zlepsila se i ergonomie (ubylo zbytecneho shiftovani),
pritom ale zvyky puvodniho uzivatele czsk nebo cs omezuje jen v minimalni
mire. Klavesnice je kompromisni, neco mozna nevyhovuje uplne vsem,
ale diskuze nad novym layoutem byla dost ostra a vysledek by snad nemel
byt tak spatny. Vetsina nekompatibilit mela za snahu, co nejvetsi pohodli,
snadnou dostupnost symbolu na klavesnici. Napr. '#' se dosahne ralt-3
(ne ralt-shift-3), klavesa '.del' na numericke klavesnici dava carku, ale s
pravym altem tecku a podobne. Kvuli tomu, jak Microsoft a IBM definovali
(a Compaq uz i potiskuje) ceskou klavesnici pribyly navic jeste kombinace
jako ralt-x -> '#', ralt-v -> '@' a podobne. Proste proto, ze rada puvodnich
uzivatelu Windows jine kombinace ani nezna...
Obrazek celeho noveho layoutu cz (sk hnede) posilam v priloze (standard pro
cesky psaci stroj je samozrejme dodrzen).
To je tak asi vsechno, co me zrovna ted napada. Dalsi diskuzi se samozrejme
nebranim. Taky bych prosil, oddelujte veci okolo implementace klavesnice
cz a xkb od problemu, ktere maji nektere instalacni a distribucni programy
(napr. tusim novy Slackware ma potize...).
Hezky den,
Kamil Toman
Další informace o konferenci Linux