Rozložení kláves, jejich tvorba a úpravy - MujMAC.cz - Apple, Mac OS X, Apple iPod

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Seriály

Více seriálů



Informace

Rozložení kláves, jejich tvorba a úpravy

20. května 2004, 00.00 | V tomto díle se podíváme na systém skriptů v Mac OS X podrobněji a zaměříme se samozřejmě hlavně na rozložení kláves. Nakonec se dostaneme i k tomu, jak takové rozložení upravit nebo vytvořit. Nelekněte se délky textu ani ilustrací, článek je rozdělený tak, abyste si z něj mohli vybrat, co vás zajímá.

V tomto díle se podíváme na systém skriptů v Mac OS X podrobněji a zaměříme se samozřejmě hlavně na rozložení kláves. Nakonec se dostaneme i k tomu, jak takové rozložení upravit nebo vytvořit. Nelekněte se délky textu ani ilustrací, článek je rozdělený tak, abyste si z něj mohli vybrat, co vás zajímá.


Jak fungují skripty

Systém Mac OS vznikl v době, kdy se pro kódování textu používalo 8 bitů (1 bajt) pro jeden znak, to dovoluje pouhých 256 různých znaků. Z toho polovina je definována normou ASCII (to jsou ty znaky, na které se často musíme omezit například v e-mailech). Na národní abecedy zbývá jen 128 znaků a do těch se nevejde ani celá Evropa. Proto byly v Mac OS, stejně jako v jiných systémech, zavedeny různé kódovací tabulky. V západní tabulce (tabulka pro západní Evropu a Ameriku) jsou pak kódům od 128 do 255 přiřazeny znaky západních jazyků, ve středoevropské tabulce jsou jim pak přiřazeny středoevropské znaky. Některé znaky jsou samozřejmě pro obě sady společné, ty jsou pak přiřazeny ve všech tabulkách stejným kódům. Příklad: Ze zkušenosti víte, že pokud v některé ze starších aplikacích změníte písmo ze středoevropského (označení CE) na západní budou znaky jako á nebo é zobrazeny správně, zatímco pouze středoevropské jako č se pokazí. Každé písmo je totiž kódovací tabulkou a znak (s kódem) 139 stále zůstane znakem 139, v jednom písmu (kódovací tabulce) je mu ale přiřazeno č, v jiném a s vlnovkou.

V Mac OS jsou kódování, nebo chcete-li znakové sady, součástí komplexnějšího systému skriptů. Skript lze chápat jako soubor pravidel pro práci s určitými jazyky a typy písma. V Mac OS je takových skriptů asi třicet a mimo západního (Roman), čínského nebo klingonského je podporován i středoevropský skript. My se budeme věnovat pouze prvnímu a poslednímu z uvedených. Mimo kódování je odlišují rozložení kláves, kterých může být pro jeden skript i více. Rozložení je, zjednodušeně řečeno, přiřazení kódů znaků jednotlivým kódům kláves. Příklad: Klávesa 0 má na české i americké klávesnici přiřazen znak 97, který je v západních i středoevropských písmech reprezentován písmenem a (patří do ASCII). Na francouzské klávesnici je této klávese přiřazeno q (113). Proč jsou tedy rozložení vázána na skripty? Klávesa 21 má v českém rozložení přiřazen znak číslo 139. Po přečtení minulého odstavce asi tušíte, kde je problém: ve středoevropských písmech je 139 č, v západních písmech je to však a s vlnovkou.

Proto se používá takzvaná synchronizace písma a klávesnice. To bohužel neznamená, že by se druh písma (např. CE nebo Roman) vybíral podle vašeho rozložení kláves, ale pravý opak: pokud upravujete text v západním písmu, přepnete se vaše rozložení na poslední použité rozložení ve skriptu Roman, což většinou bývá rozložení U.S. Ve skutečnosti ale synchronizace nezvládá ani toto.

Dalším prostředkem, který by měl problém vyřešit, je přepínání rozložení kláves aplikacemi, nikoli uživatelem, pokud aplikace (v dané chvíli) podporuje znaky v jiném než aktivním skriptu.

Podobný systém písem a rozložení kláves vznikl na všech počítačových platformách. Jejich společným jmenovatelem je osm bitů. Počítače si ale v dnešní době hravě poradí i s šestnácti a více bity, takže se nabízelo použít pro znak dva bajty. Odpovídající norma se jmenuje Unicode. V užším smyslu Unicode znamená kódovací tabulku, která přiřazuje znaky téměř všech jazyků a písemných systémů asi pětašedesáti tisícům šestnáctibitových (dvoubajtových) kódů. Písmo Unicode pak obsahuje reprezentace znaků, které dříve musely být v různých kódových tabulkách. Písmo samozřejmě nemusí obsahovat všechny znaky Unicode, jen některá písma tedy obsahují i středoevropské znaky. V takovém případě se znaky zobrazí v co nejbližším písmu, zobrazení a s vlnovkou místo č ale nehrozí. Rozložení kláves Unicode pak přiřazuje klávesám rovnou šestnáctibitové znaky Unicode. Snadno lze s písmy Unicode použít i stará osmibitová rozložení, jen stačí znak převést z kódování daného skriptem rozložení do Unicode. Ve aplikacích nepodporujících Unicode, vidí aplikace z písma jen ty znaky, které jsou v kódování Roman (případně jiném), samozřejmě s kódy převedenými na odpovídající osmibitové.

Už klasický Mac OS, resp. API Carbon, které je alternativou Cocoa i pod Mac OS X, nabízí programátorům možnost pracovat v Unicode. Je ovšem třeba trochu práce navíc, případně při přechodu z původních technologií přepsání často podstatné části kódu. Programátorsky příjemnou práci s Unicode nabízí až nativní rozhraní Mac OS X Cocoa, kde jde o implicitní kódování, programátor ve skutečnosti často ani nemusí vědět v jakém kódování textové řetězce jsou, systém se sám postará, aby se nic nepokazilo a v případě potřeby řetězce převede do jiné znakové sady. Mezi aplikace Cocoa patří například TextEdit a většina aplikací dodávaných s Mac OS X. Výjimky, které stojí za zmínku, jsou Finder, který ač používá rozhraní Carbon, Unicode podporuje, a AppleWorks, které bohužel Unicode stále nepodporují a spoléhají na původní systém skriptů

zpracovani kodu z klavesnice


Jak fungují rozložení kláves

V předchozím textu jsem řekl, že rozložení kláves je zjednodušeně přiřazení kódů znaků jednotlivým kódům kláves. Teď se podíváme na to, jak fungují rozložení ve skutečnosti. Do hry totiž vstupují modifikátory a mrtvé klávesy.

Modifikátory jsou klávesy, které je třeba stisknout současně s plnovýznamovou klávesou. Znak příslušející dané klávese je pak vybrán z tabulky příslušející dané kombinaci modifikátorů. Příklad: Máme například tabulku pro stav bez modifikátorů, pro stav se stisknutým přeřaďovačem (klávesa shift) a pro stav se stisknutým altem (klávesa option). Použijeme-li například české rozložení a stiskneme-li samotnou klávesu s kódem 1, bude jí pomocí první tabulky přiřazen znak (malé) s, bude-li stisknut přeřaďovač, bude jí přiřazeno pomocí druhé tabulky (velké) S, s altem získáme pomocí třetí tabulky ostré s.

Tabulka bývá určena kombinací modifikátorů z nichž některé jsou povolené a některé povinné. Například: musí být stisknuto jablko (command) a může být aktivní zámek velkých písmen (caps lock). Modifikátory jsou (anglicky): command, option, control, shift, caps lock.

Mrtvé klávesy negenerují v okamžiku stisku žádný znak, ale počítač si pamatuje, že byly stisknuty a následující znak převede pomocí tabulky příslušející danému znaku. Příklad: Stiskneme-li mrtvý znak čárka a poté vložíme znak a, a se převede podle tabulky příslušející čárce na á. Důležité je, že stisk plnovýznamové klávesy se nejdříve převede na znak podle stavu modifikátorů a až tento znak se převede na jiný pomocí tabulky mrtvé klávesy, jinak by se ztratila funkce modifikátorů a nešlo by napsat například velké Ó.

Mrtvé klávesy jsou určeny v každém rozložení jinak. Přestože jde většinou o diakritická znaménka, nic nebrání mít například mrtvý znak +, který převede následující znak na znak s kódem o jednu vyšší (z 1 se pak stane 2, z A se stane B). Pokud následující znak není v tabulce mrtvé klávesy, vystoupí řetězec, který by vznikl sekvencí mrtvá klávesa – mezera – plnovýznamová klávesa. V Unicode rozložení jsou mrtvé znaky nahrazeny propracovanějším systémem stavů a akcí, který mimo jiné dovoluje, aby na jeden znak mělo vliv několik za sebou vložených mrtvých znaků, většinou ale není třeba toho využívat.

Od začátku tu mluvíme o tom, že klávesy mají jakési kódy. Jde o virtuální kódy od 0 do 127, které jednoznačně reprezentují určitou klávesu. Často se uvádějí v šestnáctkové soustavě (kde číslice od deseti do šestnácti jsou vyjádřeny písmeny od A do F, například 127 desítkově odpovídá 7F šestnáctkově, tedy 7 x 16 + 15 x 1). Na následujícím schématu jsou uvedeny v soustavě desítkové tak, jak jsou přiřazeny v Evropě běžné klávesnici podle normy ISO (v USA se používá jen mírně odlišná ANSI klávesnice). Aby se na klávesy vešla i čísla 100 a vyšší, byla u nich první jednička nahrazena znakem i.

virtualni kody

Můžete si všimnout jednak, že i modifikátory mají své kódy, nemusí nás ale zajímat, protože modifikátorům se znaky nepřiřazují. Naopak důležité jsou kódy navigačních, mazacích a podobných kláves, kterým jsou vždy přiřazené stejné kódy znaků, přestože při editaci textu žádné znaky nevkládají. Obdobně je tomu u kláves return a enter, které mají vždy přiřazeny znaky 13 a 3, přestože obě většinou způsobí vložení nového řádku, a funkční klávesy, které mají všechny přiřazeny znak s kódem 16.

Virtuální znamená nezávislé na hardwaru: syrový kód, který přijde z klávesnice se totiž nejdříve přemapuje na jednotný virtuální. I do tohoto přemapování lze ve všech systémech Mac OS zasahovat (například prohození command a alt na PC klávesnicích nebo přizpůsobení rozložení na PowerBooku), to je ovšem nad rámec tohoto článku. Pro Mac OS X mohu doporučit program DoubleCommand. Pokud máte straší systém, můžete se obrátit na mě.


Jak vytvořit rozložení kláves pro Mac OS X

Rozložení pro Mac OS X je realizováno jako soubor nebo skupina souborů, umístěných v těchto složkách:

~/Library/Keyboard Layouts/
/Library/Keyboard Layouts/
/Network/Library/Keyboard Layouts

Tím se zpřístupní uživateli s domovskou složkou ~, všem uživatelům daného počítače, nebo uživatelům v síti. Tyto soubory mohou mít více formátů, několika z nich se budeme zabývat podrobněji.

Kufřík – dědictví Mac OS 9 a nižších

Kufříky jsou soubory, ve kterých se ve starém Mac OS uchovávaly především písma a rozložení kláves. Podobně jako u písem jsou v Mac OS X podporovány kvůli zpětné kompatibilitě. Pokud tedy máte nějaké rozložení pro starý systém, stačí k jeho jménu přidat příponu .rsrc, a můžeme ho použít i pod Mac OS X.

Za zmínku stojí, že kufříky jsou vlastně soubory uchovávající prostředky, tzv. resources, které jsou pod Mac OS X ve zvláštní části souboru – resource forku, zatímco data fork, běžnou část souboru, kterou používají i jiné systémy jako Windows a Linux, mají prázdný. V Mac OS X se od resource forku upouští a tak resources mohou (ale nemusí) být i v data forku, tam ale nejdou ResEditem upravovat. (Pokud nevíte, o čem je v tomto odstavci řeč, nelámejte si s tím hlavu, zřejmě to nebudete potřebovat.)

Tato rozložení mohou být osmibitová i Unicode. Mimo vlastního rozložení obsahuje soubor i jeho ikonu případně další (pro nás méně zajímavé) informace.


XML rozložení – jen pro Mac OS X

XML rozložení je uloženo v textovém souboru v jazyce XML s příponou .keylayout. Ikona může být ve stejnojmenném souboru s příponou .icns. XML rozložení jsou vždy Unicode. Jen pokud chceme, mohou se tvářit jako rozložení v určitém skriptu, v tom případě by ale měla používat jen znaky převeditelné do znakové sady toho skriptu.


Balíky s příponou .bundle

Balík je složka s přesně definovanou strukturou podsložek a souborů. V tomto případě mimo jiné obsahuje rozložení v jednom z výše uvedených formátů. Výhodou je především, že s více rozloženími lze manipulovat najednou, včetně ikon pro XML rozložení, a jejich názvy mohou být uvnitř jednoho balíku uvedeny ve více jazycích (lokalizace). Balíky se hodí především pokud chcete dané rozložení distribuovat. Sami zřejmě budete buď upravovat soubory nebo vyvářet rozložení v jednoduchých souborech.


Vybíráme vhodný skript a ID

Ještě než se pustíme do tvorby nebo úpravy rozložení je třeba si vybrat v jakém skriptu dané rozložení bude a podle toho mu vybrat ID (identifikační číslo). Pokud půjde o běžné středoevropské rozložení, je číslo skriptu 29 a jeho ID by mělo být libovolné číslo od 30778 do 31200 (povolena jsou i vyšší, ale vám by to mělo stačit). Pokud budou mít dvě rozložení stejná ID, systém by si s tím měl navíc poradit. Pokud půjde o rozložení ve skriptu Roman, je číslo skriptu 0 a jako ID použijte číslo 300 a vyšší (ale ne o moc, např 301 nebo 456).


Vytváříme a upravujeme XML Unicode rozložení

Tak tedy nejdřív – co je to XML? XML je rozšířený značkovací jazyk příbuzný se známým HTML, který se v Mac OS X používá jako obecný formát některých souborů. Jazyk formálně definuje značky. Samotné značky jsou definovány pro konkrétní formát (například XHTML nebo právě rozložení kláves pro Mac OS X). XML rozděluje značky na párové a nepárové, uveďme si několik příkladů, jak by mohlo vypadat nějaký běžný datový soubor, zapsaný fiktivními elementy XML:

<nakup>
    <hypermarket>  <pecivo> <housky /> <chleb /> </pecivo>   </hypermarket>
    <papirnictvi> <sesity /> <ctvrtky /> </papirnictvi>
</nakup>

Struktura je na první pohled jasná, vidíte párové i nepárové značky ohraničené znaky < a >, kde / se používá u párových značek na začátku uzavírající a nepárových na konci. Ještě si zavedeme jeden důležitý pojem a budeme o XML vědět téměř vše:

<nakup datum="2004/05/05">
    <hypermarket jmeno="hyperplus">
        <pecivo kde="vlevo od vchodu"> <housky pocet="4" /> <chleb /> </pecivo>
    </hypermarket>
    <papirnictvi jmeno="superpaper">
        <sesity format="a4" pocet="3" /> <ctvrtky format="a2" />
    </papirnictvi>
</nakup>

To čím jsme obohatili náš lísteček na nákup se nazývá atributy. Jejich využití i formát je jasný, jen je třeba dbát na to, že pro každý element mohou být definovány jiné atributy s jiným povoleným obsahem. Atributy se neuvádí u uzavírající značky (např. </nakup>).

Tabelátory, odřádkování a mezery (tzv. bílé znaky) mezi značkami a atributy mají zpřehledňující funkci můžeme jich vložit více nebo je tam, kde by nedošlo ke slití dvou sousedících slov (např mezi hypermarket a jmeno), vypustit.

Pro začátek si stáhněte jedno z hotových rozložení (české nebo systémová ve složce /System/Library/Keyboard Layouts/Unicode.bundle). Vlastní soubor s koncovkou .keylayout otevřete v aplikaci TextEdit pomocí položky Open… nabídky File, v dialogovém okně vybereme kódování Unicode UTF-8. Nyní začneme soubor upravovat.

Nejdříve nastavte správně atributy group (číslo skriptu), id (ID) a name (jméno rozložení) u elementu keyboard:

    <keyboard group="29" id="30876" name="Czech (U/CE) by Loki" maxout="2">

Další věc, která nás bude zajímat je sekce ohraničená elementem modifierMap. To jsou deklarace tabulek pro různé kombinace modifikátorů, tyto samotné deklarace měnit nebudeme, ale poslouží nám pro orientaci: v atributu mapIndex máme uveden index, pod kterým tabulku (mapování) najdeme, atribut keys obsahuje seznam modifikátorů (ty s otazníkem mohou ale nemusí být aktivní):

    <modifierMap id="commonModifiers" defaultIndex="7">
        <keyMapSelect mapIndex="0">
            <modifier keys="" />
        </keyMapSelect>
        <keyMapSelect mapIndex="1">
            <modifier keys=" caps? anyShift" />
        </keyMapSelect>
        <!-- ... -->	
    </modifierMap>

Jednotlivé tabulky pak najdeme uzavřené v elementu keyMapSet s atributem id="ANSI" (JIS je pro japonskou klávesnici, keyMapSet s id="ANSI" platí i pro evropské klávesnice ISO). Orientujeme se podle indexů, které jsme našli v sekci modifierMap. Upravovat budeme jednotlivé elementy key, jejichž atribut code je kód klávesy (přehled na ilustraci v části Jak fungují rozložení kláves) a jemu přiřazený kód je v atributu output nebo action. Znaky je možné uvádět ve formátu "&#xXXXX;" to využijeme pro následující znaky:

"&#x0022;
&&#x0026;
<&#x003c;
>&#x003e;

Tyto znaky jsou jinak vyhrazeny pro jiné účely (elementy XML) a nemůžeme je napsat přímo. Dále se tento zápis používá pro řídící znaky přiřazené klávesám enter, return, tab, escape, mazacím, funkčním a navigačním klávesám, u nich ho ale nebudeme měnit. Zkušenější zřejmě tuší, že se jedná o šestnáctkový zápis kódu znaku. Pokud je použit atribut output znak se přímo vypíše. Pokud je použit atribut action, jde o znak, jehož význak jde změnit mrtvou klávesou nebo o mrtvou klávesu samotnou (například v následujícím příkladu, lze čárkou změnit znaky a a s, samotná klávesa čárky má pak akci "acute", stejně tak by mohla být použita akce "carka").

    <keyMapSet id="ANSI">
        <keyMap index="0">
            <key code="0" action="a" />
            <key code="1" action="s" />
            <key code="10" output="<" />
            <key code="24" action="acute" />
            <!-- ... -->
        </keyMap>
    <!-- ... -->
    </keyMapSet>

Dál se přesuneme k sekci označené elementem actions. Nejdříve jsou uvedeny samotné mrtvé klávesy, pak tabulky pro modifikování akcí plnovýznamových znaků, v příkladu je velké U, za pozornost stojí akce "none", tedy bez modifikátorů a akce "caron" (háček), který vytvoří na české klávesnici kroužkované U. Formát je z příkladu jasný:

    <actions>
        <action id="acute">
            <when state="none" next="acute" />
        </action>
        <!-- ... -->
        <action id="caron">
            <when state="none" next="caron" />
        </action>
        <!-- ... -->
        <action id="U">
            <when state="acute" output="Ú" />
            <when state="diaeresis" output="Ü" />
            <when state="caron" output="Ů" />
            <when state="none" output="U" />
            <when state="ringabove" output="Ů" />
        </action>
    </actions>

Pokud vám úvod v tomto článku nestačí, doporučuji kompletní specifikaci formátu.

Vytváříme a upravujeme kufříkové osmibitové rozložení

Pro vytvoření kufříkového rozložení použijeme aplikaci ResEdit (pro Mac OS Classic). Pro začátek doporučuji použít běžná rozložení umístěná v kufříku System v systémové složce Mac OS 9. ResEdit je uživatelsky příjemná aplikace a jediné co potřebujete vědět, je, že jednotlivé prostředky jsou určeny čtyřznakovým typem, který je pro osmibitová rozložení KCHR a číslem ID, o kterém jsme mluvili výše.

Po otevření kufříku s klávesnicí, kterou vyjmete ze souboru System, uvidíte ikony jednotlivých typů, které můžete otevřít jako složky, ID jednotlivých položek (a tím automaticky i skript rozložení) můžete změnit v informačním okně. Samotná úprava prostředku KCHR probíhá graficky a nebude vám činit problémy. Jen je třeba nechat si rozložení zobrazit na modelu ISO Extended klávesnice.

Pro použití pod Mac OS X nezapomeňte přidat kufříku příponu .rsrc.


Odkazy a jak dál

Samozřejmě můžete pokládat dotazy prostřednictvím diskuse pod článkem. A pokud by se vám podařilo vytvořit nějaké šikovné (třeba slovenské) rozložení, neváhejte ho zveřejnit – buď na svých stránkách, nebo ho můžete poslat , zvlášť pokud bude založené na jednom z mých.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » Informace  

 » Rubriky  » Agregator  

 » Rubriky  » Tipy a Triky  

 

 

 

Nejčtenější články
Nejlépe hodnocené články
Apple kurzy

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: