Hlavní navigace

Upravte si klávesnici - dokončení

Jan Švec 15. 3. 2004

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í:

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í.

Našli jste v článku chybu?

19. 3. 2004 3:05

uživatel si přál zůstat v anonymitě

Nejsem az tak velky Linuxu znalec, abych se pustil do nastinenych experimentu.
A taky (spis) nemam cas neco predefinovavat. Takze v pripadech "nouze" jsem nucen pouzivat Windows.
Tento clanek je ale presne o tom, co dlouhodobe hledam a co v Linuxu jednoznacne chybi.
Nemate nekdo (nebo nevite kdo) uz si predefinoval v Linuxu "ruskou" klavesnici tak, aby byla podle "ceske" normy?
Pred casem jsem zkousel poslat dotaz na "debiani" forum, ale pry nejsem zaregistrovany... "Moderator" ma asi jine p…



18. 3. 2004 21:11

m maruska (neregistrovaný)

Jedine bych si tipnul: nezapinat Num LED.
To jest nakonfigurovat to tak, aby ta Num LED nebyla pouzita. Pak je mozne (tak to pracuje na mem notebooku), ze ta klavesnice notebooku bude posilat 'regularni' scankody.


Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

DigiZone.cz: ČRo rozšiřuje DAB do Berouna

ČRo rozšiřuje DAB do Berouna

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

DigiZone.cz: ČRa DVB-T2 ověřeno: Hisense a Sencor

ČRa DVB-T2 ověřeno: Hisense a Sencor

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně