Upravte si klávesnici - dokončení

15. 3. 2004
Doba čtení: 6 minut

Sdílet

V předchozí části jsme si popsali principy XKB a ukázali jsme si vzorovou konfiguraci rozložení klávesnice. Dnes nás čeká dokončení. Povíme si o tom, jak pracovat se skupinami, a uvedeme si pár ukázek. A nakonec jeden tip na hardwarovou úpravu.

Skupiny

Jak jsme si již řekli v minulém dílu, XKB umožňuje nakonfigurovat symboly, které generuje klávesnice, pomocí dvou množin – úrovní a skupin. Zatímco úrovně jsme použili v předchozí části, nyní se podíváme na to, jakým způsobem použít skupiny.

Skupiny se používají, pokud chceme definovat větší část klávesnice, což většinou potřebujeme u různých jazyků. Takový konfigurační soubor používající více skupin se příliš neliší definice rozložení uvedené v předchozím díle. Uveďme si tedy příklad. Bude se jednat o doplnění rozložení libovolné klávesnice o řecké klávesy:

default partial alphanumeric_keys
xkb_symbols "basic" {
  name[Group2]= "honza/greek";

  key <AD02> { [], [ Greek_sigma,   Greek_SIGMA   ] };
  key <AD03> { [], [ Greek_epsilon, Greek_EPSILON ] };
  key <AD04> { [], [ Greek_rho,     Greek_RHO     ] };
  key <AD05> { [], [ Greek_tau,     Greek_TAU     ] };
  key <AD06> { [], [ Greek_upsilon, Greek_UPSILON ] };
  key <AD07> { [], [ Greek_theta,   Greek_THETA   ] };
  key <AD08> { [], [ Greek_iota,    Greek_IOTA    ] };
  key <AD09> { [], [ Greek_omicron, Greek_OMICRON ] };
  key <AD10> { [], [ Greek_pi,      Greek_PI      ] };


  key <AC01> { [], [ Greek_alpha,   Greek_ALPHA   ] };
  key <AC02> { [], [ Greek_sigma,   Greek_SIGMA   ] };
  key <AC03> { [], [ Greek_delta,   Greek_DELTA   ] };
  key <AC04> { [], [ Greek_phi,     Greek_PHI     ] };
  key <AC05> { [], [ Greek_gamma,   Greek_GAMMA   ] };
  key <AC06> { [], [ Greek_eta,     Greek_ETA     ] };
  key <AC07> { [], [ Greek_xi,      Greek_XI      ] };
  key <AC08> { [], [ Greek_kappa,   Greek_KAPPA   ] };
  key <AC09> { [], [ Greek_lamda,   Greek_LAMDA   ] };

  key <AB01> { [], [ Greek_zeta,    Greek_ZETA    ] };
  key <AB02> { [], [ Greek_chi,     Greek_CHI     ] };
  key <AB03> { [], [ Greek_psi,     Greek_PSI     ] };
  key <AB04> { [], [ Greek_omega,   Greek_OMEGA   ] };
  key <AB05> { [], [ Greek_beta,    Greek_BETA    ] };
  key <AB06> { [], [ Greek_nu,      Greek_NU      ] };
  key <AB07> { [], [ Greek_mu,      Greek_MU      ] };

  key <MENU> {     [ Menu, ISO_Next_Group] };
  }; 

Začali jsme opět jako v minulé části – hlavičkou a pojmenováním naší skupiny. Dále jsme všem klávesám dodefinovali jejich skupinu číslo dvě. To lze opět vícero způsoby, buď jak vidíte v ukázce:

  key <AC09> { [], [ Greek_lamda,   Greek_LAMDA   ] }; 

nebo také:

  key <AC09> { symbols[Group2] = [ Greek_lamda, Greek_LAMDA]}; 

Oba zápisy jsou co do funkce ekvivalentní. Nakonec musíme někam namapovat klávesu se symbolem ISO_Next_Group, která po svém stistku změní aktuální skupinu na další (toto chování vyčtete ze souboru compat/iso9995). V tomto případě jsme ji namapovali na wokenní klávesu Menu v kombinaci se Shiftem.

Opět se jedná o částečnou definici, čili musíme ji sloučit s nějakou další (pokud to neuděláte, budou vám fungovat pouze tyto klávesy). Vypomůžeme si již klasickým příkazem:

setxkbmap -symbols en_US\(pc104\)+GRK

Pokud jsme naši konfiguraci uložili do podadresáře symbols/GRK v hlavním adresáři XKB (pro Woodyho je to /etc/X11/xkb), můžeme pozorovat požadované chování – po stisku Shift+Menu se přepne skupna a klávesnice píše řecky. Bohužel tyto klávesy pracují pouze v některých aplikacích. Nevyužijete je v GVIM, Konsoli apod., zato třeba v KWrite a OpenOffice si jich užijete dosytosti:


(Všiměte si jména souboru, po dotazu na uložení jsem ho zkusil napsat řecky a KWrite ho jako naoko vzal, na disku ale byly same otazníky.)

Spojme to dohromady

Nyní již máme tři soubory – z minula US a CZ a dnes přibyl GRK. Ty uložíme do adresáře symbols (jako vždy je to relativní umístění vzhledem k adresáři XKB) a můžeme přikročit k dalšímu kroku. Tyto soubory integrujeme do XKB.

V první řadě je přidáme do seznamů, které určují obsah jednotlivých adresářů. Jistě jste si již všimli souborů *.dir v hlavním adresáři XKB. V těch jsou uvedeny všechny konfigurace, které jsou v příslušných adresářích uvedeny. To umožňuje velice rychlé vyhledávání jednotlivých komponent. Pro naše tři soubory tedy do souboru symbols.dir přidáme:

  -dp----- a------ US(basic)
  -dp----- a------ CZ(basic)
  -dp----- a------ GRK(basic)

Obecně jde o kombinaci následujících příznaků:

  hdp----- amkfg-- jmeno(varianta)

Na význam jednotlivých příznaků odkáži do An Unreliable Guide to XKB Configuration. My jsme použili pouze d – default, p – partial, a – alphanumeric_keys (vidíte tu souvislost s příznaky v hlavičce konfigurace?). Pokud je v souboru více variant, uvedeme všechny.

Nyní již XKB ví, kde naše soubory hledat, ale pokud se podíváte do konfigurace programu kxkb, zatím je tam stále neuvidíte. Musíme změnit ještě dva soubory – rules/xfree86 a rules/xfree86.lst

Začňeme se souborem rules/xfree86.lst. Pokud se na něj pořádně podíváme, uvidíme zde výpis modelů klávesnic (sekce model), jejich rozložení (layout), varianty (variant) a možností (option). Každá sekce začíná vykřičníkem a následuje název sekce. V každé sekci je vždy varianta a její „human readable“ jméno. Doplníme tedy

  ! layout
    CZ                Moje ceska klavesnice
    US                Moje americka klavesnice

  ! option
    moje_ext          Moje dalsi volby
    moje_ext:use_GRK  Pouziti reckeho klavesnice

Zde stojí pouze za zmínku uvedení popisku skupiny možností moje_ext. Kromě této skupiny zde najdete třeba i skupiny grp (upravuje přepínání skupin, nemusíme tedy používat naši berličku se Shift+Menu), ctrl (chování klávesy Ctrl) a další.

Popisky tedy máme, zbývá vyřešit, jakým způsobem má kxkb vše složit dohromady. To zajistíme úpravou souboru rules/xfree86. Tento soubor má trochu složitější strukturu než předchozí, ale stále se v něm lze orientovat. Určuje, který řetězec pro nastavení kláves se použije, pokud chceme takové a takové rozložení klávesnice určité varianty a k tomu používáme určitý typ klávesnice (fyzické provedení). V tomto souboru pouze přidáme do oddílu option (opět ho symbolizuje vykřičník) následující řádek:

  ! option
    moje_ext:use_GRK  =  +GRK

Ten říká, že pokud budeme požadovat volbu moje_ext:use_GRK, přidá se k řetězci určujícímu klávesnice řetězec +GRK, čili aktivování naší řecké klávesnice. Pokud stejně jako já používáte prostředí KDE a program kxkb, ukončete ho a opět spusťte a v nastavení již uvidíte naše nové možnosti konfigurace:


Sw/hw úprava

V úvodníku jsme si slíbili jednu lehkou HW úpravu. Ta je užitečná hlavně pro uživatele editoru VIM. Také vám při jeho používání vadí, jak je Escape daleko od ostatních kláves a že při jeho stisknutí musíte levou ruku zvednout z klasické písařské pozice? Pak zkuste následující trik.

Něktré klávesnice umožňují jednotlivá tlačátka vytáhnout z jejich „šachtičky“. To je k ledasčemu užitečné. Vždy jednou za půl roku všechny klávesy vyndám a vyčistím (nemám rád téměř černá tlačítka). Ale hlavně – teď, když již umíme modifikovat rozložení kláves, nám nic nebrání ve fyzickém i programovém prohození klávesy Escape a klávesy se symbolem tildy (~). Bude se nám k tomu hodit následující rozložení:

bitcoin_skoleni

partial alphanumeric_keys
xkb_symbols "basic" {
  name[Group1]= "honza/vim";

  key <TLDE> { [ Escape                ] };
  key <ESC>   { [ quoteleft, asciitilde ] };
};

Obdobně (a možná elegantněji) by se to dalo vyřešit upravením vrstvy keycodes – prohozením keycodů a jejich symbolických jmen. Uvedená úprava je ale funkční a zcela postačující.

Závěr

Na závěr ještě přiložím své vlastní konfigurační soubory tak, jak je používám na své pracovní stanici. Všechny jsou zařazeny do public domain, každý je tedy může upravovat a používat dle svého uvážení.

Autor článku