Navrh vseobecneho lokalizatoru pre Linux

Stanislav Meduna stano@trillian.eunet.sk
Sat, 15 May 1999 16:35:41 +0200


On Sat, May 15, 1999 at 02:19:19PM +0000, Miroslav Vasko wrote:

> > Daj pokoj s pythonom :-) a aj ten perl by som nerad videl.
> :) ja mam python rad!
> ale mozeme sa dohodnut na bash, textutils a gawk?

Aj ten gawk by som vypustil. bash a textutils su jasne,
ale su ludia, co awk neinstaluju.

> > Mam nejaku predstavu o XKB klavesniciach, ale netlacte
> > na mna - este to potrebuje dozriet.
> dobre, takze zatial ostava dobrovolnik Juraj :-))) staci, ked spracujes
> Xy a nejake to pekne Xove rozhranie - ciste Xy, nic viac.

Narychlo som zosmolil som nejake idey - precitajte,
skritizujte, navrhnite lepsie, ...


Nastavovanie XKB klavesnic - draft

1. Ciele

- odstranit nutnost zmien suborov patriacich do X distribucie
  v pripade definicie novych klavesnic

- poskytnut rovnake rozhranie pre vyber klavesnice
  bez ohladu na to, ci sa nachadza v X distribucii,
  alebo bola doplnena inak

- definovat priradenie doplnujucich informacii
  k XKB klavesniciam, ako je komentar, pixmapa a.p.

- umoznit ovladanie prostrednictvom:

  - command line
  - skriptu spusteneho z .Xclients
  - skriptu spusteneho prostrednictvom window managera
    (menu, hotkey, ...)
  - grafickeho rozhrania

- umoznit automaticky vyber podla aktualneho locale

- umoznit systemove defaulty a pouzivatelske nastavenie


2. Definicia klavesnic

Systemovy konfiguracny adresar balika ma rovnaku
strukturu ako /usr/X11R6/lib/X11/xkb s podadresarmi
compat, geometry, keycodes, keymap, ...

xkbcomp umoznuje jednoduche pouzitie takejto "dualnej"
struktury bez problemov (aktualny adresar ma prednost
pred systemovym). Az v xkbcomp opravia bug, bude mozne
definovat adresarov viac a umoznit tak napr. predefinovanie
aj na pouzivatelskej urovni (uzitocne, pokial pouzivatel
nema moznost zapisovat do systemovych adresarov).
V prvej verzii to bud nepojde, alebo bude existovat
moznost prehodit cely adresar aplikacie do svojho
stromu.

Pozadovana mapa klavesnice je definovana relativnou
cestou k suboru v adresari keymap a nazvom keymapy,
ktora sa v tomto subore vyskytuje.

Syntax zdrojoveho suboru pre xkbcomp bude rozsirena
o prikazy prostrednictvom specialnej formy komentaru.
Tak sa bude dat priradit ku konkretnej klavesnici
- kratke meno
- dlhe meno
- pixmapa
ktore budu pouzitelne pre programy pre vyber klavesnice.
Toto priradenie bude mozne aj pre klavesnice z povodnej
X distribucie.

Pre urychlenie pristupu bude zavedeny caching - klavesnica,
ktora uz raz bola pozadovana, sa predkompiluje do .xkm
formatu. Tato cache bude niekde vo /var/lib, pripadne
(pokial pribudne aj predefinovanie pouzivatelom)
v pouzivatelskom adresari.


3. Vyber klavesnic

Vzdy je mozne vybrat klavesnicu specifikaciou jej
plneho mena (relativna cesta + nazov mapy) prostrednictvom
command line toolu. Systemovy administrator vsak ma
moznost zadefinovat skrateny zoznam, ktory bude
pouzivatelovi ponuknuty pri vybere prostrednictvom GUI.
Pouzivatel ma moznost tento zoznam predefinovat
alebo doplnit.

V tomto konfiguracnom subore ide ciste o priradenie
identifikator -> specifikacia klavesnice, urcenie
systemoveho defaultu a defaultu podla nastaveneho
locale. Co sa zobrazi v grafickom rozhrani, je zadane
v definicii klavesnice.


4. Priklad

Adresar XKB:    /usr/X11R6/lib/X11/xkb
Adresar balika: /usr/lib/xkbsel

/usr/lib/xkbsel/symbols/    obsahuje subor czsk
/usr/lib/xkbsel/compat/     obsahuje group_led
/usr/lib/xkbsel/keymap/czsk obsahuje nieco ako

xkb_keymap "cz" {
    xkb_keycodes        { include "xfree86"             };
    xkb_types           { include "default"             };
    xkb_compatibility   { include "group_led"           };
    xkb_symbols         { include "czsk(cz)"            };
    xkb_geometry        { include "pc"                  };
    //%xkbsel% short   "CZ"
    //%xkbsel% long    "Ceska standardna klavesnica"
    //%xkbsel% pixmap  "cz.xpm"
};


xkb_keymap "sk" {
    xkb_keycodes        { include "xfree86"             };
    xkb_types           { include "default"             };
    xkb_compatibility   { include "group_led"           };
    xkb_symbols         { include "czsk(sk)"            };
    xkb_geometry        { include "pc"                  };
    //%xkbsel% short   "SK"
    //%xkbsel% long    "Slovenska standardna klavesnica"
    //%xkbsel% pixmap  "sk.xpm"
};


A radi by sme doplnili aj nieco pre americku klavesnicu
(subor sa nemoze volat keymap/xfree86, lebo potom by xkbcomp
nenasiel ten spravny xfree86).
/usr/lib/xkbsel/redefs/xfree86:

//%xkbsel% us short  "US"
//%xkbsel% us long   "US keyboard layout"
//%xkbsel% us pixmap "us.xpm"


Systemovy konfiguracny subor bude:

[XKeyboard]
map[us] = xfree86/us
map[cz] = czsk/cz
map[sk] = czsk/sk

default    = xfree86/us

locale[cz] = czsk/cz
locale[sk] = czsk/sk


Pouzivatelia budu mat v .Xclients nieco ako:

xkbsel            ... default
xkbsel sk         ... natvrdo slovenska klavesnica
xkbsel czsk/sk    ... natvrdo slovenska klavesnica (plna cesta)
xkbsel xfree86/de ... nemecka (identifikator nemame)
xkbsel --locale   ... zvoli podla locale


Zdravi
-- 
				Stano