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