ReAmiga 4091 project


Zájem o využití SCSI řadičů na amigách oživil příchod redukcí od Acardu, SCSI2SD či ZuluSCSI. Rychlé SCSI na Amize existuje na turbo kartách, pomalejší pro Zorro II sloty a pro Zorro III? V podstatě dvě karty, FastlaneZ3, která navíc umí i rozšířit paměť, a pak - Commodore A4091. A když se dva firmwaroví inženýři setkají v garáži v Silicon Valley a začnou společně vytvářet hardware, vznikne z toho co? ReA4091!

Číst dále...

Amiblaster Deluxe


Amiblaster Deluxe je 16-bitová zvuková karta určená pro Zorro sloty. Je to evoluční následovník zvukové karty Prelude od A.C.T (Albrecht Computer Technik), přesněji repliky Prelude (první repliky). Právě replika Prelude a její možná omezení vedla Alexandera Engelhardta (Alf24de) k vytvoření Amiblasteru. Na práci na kartě se dále podíleli Matthias Hampel (Mattymuc) a Thomas Wenzel (TomSoniq).

Číst dále...

Access (Refit)


Access je dílem firmy Index Information Ltd., konkrétně Steva Rencontra a Micka Tinkera. V době svého vzniku (1997) se jednalo o unikátní zařízení. Tato unikátnost vycházela nejen z jeho stavby, ale také z použité technologie FPGA. Celé zařízení je totiž základní deska, kterou lze díky svým rozměrům umístit do standardní 5,25" pozice libovolné skříně/toweru, přesněji řečeno - pokud se tam vleze.

Číst dále...

Keymapy - o co jde?

Napsal Prober on .

Keymap (mapa klávesnice) je soubor určující, jak počítač reaguje na stisky jednotlivých kláves. Už na prvních Amigách bylo třeba řešit podporu různých národních klávesnic. Již AmigaOS 1.x umožňoval používání odlišných keymap - např. britské Amigy používaly mapu klávesnice gb - a uživatelé mohli přepnout rozložení pomocí nástroje SetMap. S příchodem AmigaOS 2.0 (1991) se systém lokalizoval: keymapy dostaly ikonky a globální rozložení kláves se nastavovalo v editoru Prefs / Input (Input Preferences), případně příkazem SetKeyboard pro aktuální konzoli. Keymapy se ukládají v adresáři DEVS:Keymaps (příp. na instalačních diskách ve složce Storage/Keymaps). To umožňuje mít v systému více rozložení a snadno mezi nimi přepínat.

V 80. a 90. letech vzniklo pro Amigu mnoho národních rozložení. České prostředí na starších verzích AmigaOS nepoužívalo standardní kódování znaků (např. KOI8-CS nebo tzv. Latin-2 E2), což si vyžadovalo i speciální fonty. Mnozí čeští uživatelé si tak museli obstarávat upravené fonty i keymapy. S vydáním AmigaOS 3.2 však došlo ke sjednocení: nový systém nyní pracuje s normou ISO-8859-2 (Latin-2) pro češtinu. Tato standardní osmibitová znaková sada pokrývá všechny české znaky a je kompatibilní s knihovnou freetype2.library a moderními fonty (TrueType / OpenType) v tomto kódování. Prakticky to znamená, že nová česká keymapa by měly generovat kódy znaků dle normy ISO-8859-2, aby odpovídaly znakům ve fontech - například stisk klávesy pro písmeno „Š“ vygeneruje byte 0xA9 (169 decimálně) definovaný pro „Š“ v Latin-2 apod. Díky tomu lze v AmigaOS 3.2.x plně využít české znaky s běžnými TrueType fonty. Historická řešení s odlišnými kódováními (Kamenických, KOI-8, „E2“ aj.) tak postupně ustupují ve prospěch standardu ISO-8859-2.

Struktura keymapy a její fungování

Keymapa určuje převod raw kódů kláves (číselné kódy generované klávesnicí) na výsledné znaky nebo akce v systému. Představit si ji můžeme jako tabulku, kde řádky odpovídají fyzickým klávesám (rozlišeným svým kódem) a sloupce různým modifikacím (bez modifikátoru, s klávesami Shift, Alt apod.). Ve skutečnosti je keymapa v paměti rozdělena na dvě části: tabulku pro kódy 0x00-0x3F (běžné klávesy) a 0x40-0x7F (speciální klávesy jako mezerník, Enter, F1 - F10, šipky atd.). Každá část má kromě hlavní tabulky výstupů i pomocné pole určující typy kláves a pole s příznaky pro Caps Lock a opakování kláves.

Modifikační klávesy (také kvalifikátory či modifier keys) jsou Shift, Alt a Ctrl. Tyto klávesy samy o sobě znak negenerují, ale ovlivňují výstup jiných kláves. Kombinace fyzické klávesy a modifikátoru tvoří konkrétní vstup - např. q je jedna klávesa, Shift+q je odlišná kombinace (má generovat velké „Q“), stejně tak Alt+q atd.. Systém keymap Amigy však z historických důvodů neumí definovat výstup pro všechny tři modifikátory zároveň samostatně. Pro běžné klávesy (tzv. vanilla keys) se pro jednu fyzickou klávesu ukládají pouze čtyři výstupy: bez modifikátoru, se Shiftem, s Altem a se Shift+Alt. Kombinace s Ctrl se neukládá - pokud stisknete klávesu spolu s Ctrl, systém u vanilla kláves vezme výstup bez Ctrl a pouze v něm vynuluje 6. a 7. bit výsledného kódu. Tím vznikne obvykle řídicí znak (např. Ctrl+C z klávesy c generuje kód 0x03, protože malé „c“ má ASCII kód 0x63 a vynulováním horních bitů vznikne 0x03). Toto chování platí pouze pro klávesy, které nejsou definovány jako speciální (viz níže). Pro běžná písmena tedy platí, že Ctrl+klávesa vyšle daný kontrolní znak. Historické omezení pouhých 4 byte na klávesu způsobuje, že nelze v keymapě přímo specifikovat rozdílné výstupy pro kombinace zahrnující Ctrl - ale díky uvedenému pravidlu to většinou není třeba.

Poznámka: Firma Commodore kdysi mohla použít 8 bajtů na klávesu a pokrýt všechny modifikace, ale nestalo se tak.

Každá fyzická klávesa má v keymapě také nastaveno, zda je opakovatelná (držená po delší dobu se automaticky opakuje) a zda podléhá Caps Lock. Například písmena jsou nastavená jako opakovatelná, zatímco Return nebo Esc se obvykle neopakují. Obdobně Caps Lock ovlivňuje jen některé klávesy - typicky písmena. U kláves označených jako capsable zařídí zapnutý Caps Lock výstup ve formě, jako by byl stisknut Shift (např. klávesa pro „q“ bude dávat „Q“ i bez držení Shiftu). Naopak číslice a další znaky zůstávají stejné bez ohledu na Caps Lock. Tyto vlastnosti (opakování a Caps Lock) jsou definovány samostatnými bitovými poli uvnitř keymapy.

Keymapa u Amigy umí kromě prostého mapování kláves na jednotlivé znaky také pokročilejší věci: klávesy mohou generovat řetězce znaků (tedy po stisku jedné klávesy se napíše více znaků najednou, vhodné třeba pro makra nebo často psané výrazy). Tuto funkci však nelze kombinovat s funkcí tzv. mrtvých kláves na téže fyzické klávese - buď je klávesa obyčejná (s výstupy pro kombinace, případně řetězec), nebo je použita pro mrtvé / modifikovatelné znaky.

Mrtvé klávesy a modifikovatelné znaky

Pro podporu diakritiky a dalších zvláštních znaků využívá AmigaOS koncept mrtvých kláves (dead keys) a modifikovatelných kláves (modifiable keys). Mrtvá klávesa je taková, která po stisku neprovede žádný viditelný výstup, ale nastaví se určitý „příznak“ v systému, že následující klávesa má být modifikována. Typickým příkladem je mrtvá klávesa pro přízvuk (akut): stiskem této klávesy se nic nestane, ale když poté stisknete např. a, systém místo běžného „a“ vygeneruje znak „á“. V tomto příkladu tedy Alt+F funguje jako mrtvá klávesa (nastaví přízvuk) a písmeno a je modifikovatelná klávesa, protože umí přijmout tento přízvuk a změnit svůj výstup na „á“. Ne všechny klávesy jsou modifikovatelné - jen ty, u kterých to keymapa definuje. Pokud stisknete mrtvou klávesu a poté znak, který modifikovatelný není (např. q v našem příkladu), výsledek bude prostě dané písmeno bez změny (Alt+F → [příznak akutu], poté q → výstup „q“).

Mechanismus funguje tak, že keymapa přiřazuje každé mrtvé klávese určitý kód prefixu (interní číslo přízvuku) a u každé modifikovatelné klávesy (písmene) je tabulka výsledků pro jednotlivé prefixy. Například můžeme mít prefix 1 = „čárka“ (akut), prefix 2 = „háček“. Pak modifikovatelná klávesa A může mít definováno, že pro prefix 1 vydá „á“ a pro prefix 2 vydá „ǎ“ (v případě české abecedy by to bylo spíše využito pro písmeno E: prefix 1 → „é“, prefix 2 → „ě“ atd.). Pokud po mrtvé klávese nenásleduje žádná platná kombinace (např. uživatel stiskne jen accent a pak mezeru nebo klávesu, která není modifikovatelná), obvykle keymapa zajistí, že se vloží samotný znak diakritiky nebo nic. Mrtvé klávesy lze také kombinovat - typicky v některých jazycích musí uživatel stisknout dvě různé diakritické klávesy za sebou (např. nejprve ˝ a pak ¨ pro tzv. dvojitý akut). Keymapa to řeší možností dvojitého prefixu - definice, že určitá kombinace dvou mrtvých kláves dá jiný výsledný příznak. Pro češtinu ale zpravidla stačí jednofázové mrtvé klávesy (čárka, háček, kroužek).

Technickou zajímavostí je, že jakmile je fyzická klávesa označena jako mrtvá nebo modifikovatelná, přestává pro ni platit omezení pouhých 4 výstupů. Tyto klávesy totiž používají odlišnou strukturu v keymapě, kde lze pokrýt více kombinací a definovat výstup i pro klávesu s Ctrl apod.. To dává tvůrcům keymap větší flexibilitu - např. mrtvá klávesa může mít definován vlastní výstup při stisku s různými modifikátory (třeba odlišné prefixy pro Alt vs. Shift+Alt) a modifikovatelné klávesy mohou mít uvedeny výsledné znaky zvlášť pro malá i velká písmena s diakritikou.

Shrneme-li si funkce keymapy: Umožňuje přiřadit libovolné znaky jednotlivým klávesám (včetně celých řetězců), určit které klávesy se opakují a ovlivňuje je Caps Lock, a definovat systém mrtvých kláves pro psaní diakritiky. Vše je uloženo v binárním souboru keymapy, který načítá keymap.library při startu nebo při změně rozložení (přes Prefs / Input nebo SetKeyboard).

Poznámka: V AmigaOS lze mít současně načtenou jen jednu keymap jako výchozí. Příkaz SetKeyboard mění rozložení pouze pro aktuální konzoli (okno). Trvalou změnu pro celý systém provedete v Input Preferences nebo zkopírováním příslušného souboru keymapy do DEVS:Keymaps a nastavením v Prefs. Keymapy jsou nezávislé na nastavení Locale - můžete mít např. anglické prostředí, ale německou klávesnici.

Nástroje pro úpravu a tvorbu keymap

Vzhledem k binární struktuře není praktické editovat keymapu v běžném textovém editoru. V minulosti proto vzniklo několik utilit pro pohodlnou tvorbu a editaci těchto souborů:

EditKeys (David Kinder)

EditKeys je pokročilý editor keymap pro Workbench i CLI, poprvé vydaný okolo roku 1991 a postupně vylepšovaný (verze 1.63 v roce 1995). Autor uvádí, že k vytvoření EditKeys ho vedla absence nástroje, který by umožnil plnou editaci všech funkcí keymap - dostupné programy tehdy uměly jen přidávat výstupní řetězce na klávesy, ale neumožňovaly měnit vše. EditKeys proto nabízí kompletní správu: můžete načíst existující keymapu z DEVS:Keymaps, zobrazí se vám interaktivní obraz klávesnice, kde lze klikat na jednotlivé klávesy a měnit jejich výstupy. Program dovoluje přepínat různé režimy zobrazení: definice znaků, nastavení Caps Lock citlivosti, opakovatelnosti, modifikovatelnosti a mrtvých kláves. V každém režimu lze graficky označit, které klávesy jsou např. nastaveny jako capsable nebo dead, a snadno to změnit. 

EditKeys (David Kinder)

Podporována je editace všech 96 možných kláves (včetně těch, které na některých klávesnicích fyzicky nejsou - EditKeys je v rozložení zobrazí jako „klávesy navíc“). Jakékoliv změny je možné uložit do nového souboru keymapy. EditKeys tak pokrývá kompletně vše od přiřazení jednotlivých znaků (včetně vícenásobných řetězců) po definice mrtvých kláves a modifikovatelných znaků. Výhodou je přívětivé GUI a možnost experimentovat a hned vidět, co klávesa generuje (program zobrazuje aktuální znak při stisku na virtuální klávesnici). EditKeys je freeware a běží i na AmigaOS 3.x (vyžaduje u OS1.3 knihovnu arp.library, na novějších systémem standardní asl.library pro requestery). Pro vývojáře je dostupný i jako assemblerový zdrojový kód. Jedinou nevýhodou dnes může být starší GUI (klasické Intuition gadgety), ale funkčně pokrývá vše potřebné.

KeyMapEd (Tim Friest)

KeyMapEd (Key Map Editor) je jeden z prvních editorů keymap, vzniklý kolem roku 1989 - 1990 (známá verze 1.1i z 1990, později 1.2). Jedná se o freeware nástroj od Tima Friesta. KeyMapEd umožňuje nahrát existující mapu, provádět úpravy a uložit ji. Uživatelé oceňovali, že již v OS1.3 umožnil relativně snadno lokalizovat klávesnici. Ovšem vzhledem k době vzniku neuměl některé pokročilejší manipulace.

KeyMapEd (Tim Friest)KeyMapEd (Tim Friest)

Podle zkušeností komunity se KeyMapEd hodí k základním úpravám (např. přemapování pár kláves), ale v některých specifických operacích je omezený. Např. mohl mít omezení v manipulaci s mrtvými klávesami nebo nezvládal všech 96 pozic u různých typů klávesnic. I proto se objevily novější nástroje jako KME či EditKeys. V kombinaci s KME však byl dlouho oblíben - jak uvidíme dále, někteří uživatelé používali oba programy doplňkověchingu.asia, aby využili jejich silné stránky.

KME (Christian Stiens)

KME (Keymap Editor) od Christiana Stiense je další populární editor, šířený například na Fish discích a Aminetu (verze 1.2 v roce 1992, později update 1.7). Na rozdíl od KeyMapEd měl KME modernější pojetí a rozhraní. Umožňoval editovat keymapy s plnou kontrolou nad modifikátory, mrtvými klávesami apod. Uživatelé si chválili jeho funkce a stabilitu - v mnoha recenzích je zmiňován jako „velmi dobrý KeyMap editor“.

KME (Christian Stiens)KME (Christian Stiens)

KME nabízí grafické prostředí podobné klávesnici, podporuje načtení existující mapy i začátek od prázdné (NOMAP). Je zajímavé, že například Mikko Hirvonen (autor jedné finské keymapy) ve své dokumentaci děkoval právě Christianu Stiensovi, protože „bez KME by tato keymapa nešla vytvořit“. To naznačuje, že KME umožnil některé pokročilé nastavení, které ostatní nástroje tehdy ne. Podobně Tygre (autor francouzsko-kanadské keymapy) uvádí, že musel kombinovat KME 1.7 a KeyMapEd 1.2, protože každý z nich měl silné a slabé stránky při editaci určitých kláves. Z toho lze soudit, že KME třeba lépe řešil některé specifické klávesy či kódy, zatímco KeyMapEd mohl mít snadnější ovládání v jiných ohledech. Dnes jsou oba volně dostupné, takže při tvorbě vlastní keymapy nic nebrání využít více nástrojů - např. hrubý základ nastavit v KeyMapEd a doladit detaily v KME.

KeyComp a KeyRes (Martin Mareš - MJSoft)

Poslední dvojici tvoří KeyComp (Keymap Compiler) a KeyRes (Keymap Resourcer) od Martina Mareše. Tyto nástroje vznikly v roce 1994 v ČR a řeší problém jiným přístupem - převodem keymapy do textové podoby a zpět. KeyRes umí disassemblovat binární keymapu do čitelného zdrojového textu (tzv. .kms soubor), který můžete upravovat ručně v textovém editoru. KeyComp pak vezme takový zdroj a zkompiluje z něj binární keymapu použitelnou v systému. Výhodou je, že vývojář či pokročilý uživatel může pohodlně editovat rozložení jako text - to je praktické například pro verzování (diff změn), hromadné úpravy nebo tvorbu variant (odvození jedné keymapy z jiné). Oba programy jsou malé CLI utility (lze je dát resident do paměti) a vyžadují knihovnu ss.library (součást balíčku na Aminetu).

KeyRes (Martin Mareš - MJSoft)KeyRes (Martin Mareš - MJSoft)

KeyRes se používá tak, že zavoláte KeyRes <soubor> - jako vstup zadáte jméno existující keymapy (např. cz.keymap z Devs:Keymaps) a nástroj vygeneruje textový výpis. Pokud neuvedete název výstupu, implicitně se vytvoří soubor se stejným jménem a příponou .kms. Zdrojový text má strukturovanou syntaxi: postupně jsou v něm uvedeny bloky pro jednotlivé klávesy. Každý blok začíná řádkem s definicí klávesy, např.:

DEAD KEY APOSTROPHE {SHIFT} CAPS

Tím se říká: fyzická klávesa Apostrophe (apostrof/"uvozovky" klávesa na klávesnici) je definována jako mrtvá klávesa; má speciální význam při stisku se Shiftem; a Caps Lock ji ovlivňuje (Caps). Následují řádky popisující konkrétní významy:

'<0>'            ; výstup při samotném stisku (tady 0 = žádný znak)
PREFIX 1     ; při stisku generuje prefix kód 1 (např. akut)
SHIFT '<´>'  ; Shift+Apostrof vloží samotný znak ´ (apostrof s čárkou)

Toto je jen ilustrativní příklad, ale ukazuje formát. Pro běžné klávesy (Key bez klíčového slova DEAD/STRING) by blok vypadal například:

KEY A CAPS
    '<a>'
    SHIFT '<A>'
    ALT '<@>'
    ALT SHIFT '"'
    MOD { '<á>', '<Á>' }

Tady KEY A CAPS značí písmeno A, ovlivňované Caps Lockem. Jsou definovány výstupy: samotné A = "a", Shift+A = "A", Alt+A = "@", Alt+Shift+A = uvozovka " (jen příklad). Dále je uvedeno MOD { '<á>', '<Á>' }, což znamená, že klávesa A je modifikovatelná mrtvými klávesami a v poli jsou dva znaky - první pro prefix 1 (akut) = „á“, druhý pro prefix 2 (řekněme háček) = „Á“ (zde by spíše dávalo smysl malé/velké, ale záleží na definici prefixu 2). Každý modifikovatelný znak má v MOD poli tolik položek, kolik různých mrtvých prefixů keymapa využívá.

KeyComp se pak používá na zpracování takového textu zpět do binární formy. Syntaxe je KeyComp <zdroj.kms> [<výstup>]. Pokud cíl neuvedete, vytvoří soubor jména podle zdroje bez přípony. Typicky tedy: KeyComp ram:cz.kms DEVS:Keymaps/cz vytvoří soubor cz (případně s koncovkou .keymap dle konvence) v Devs:keymaps. KeyComp/KeyRes usnadňují i migraci map mezi systémy: stačí disassemblovat stávající mapu, upravit text (například změnit kódování výstupních znaků) a zkompilovat.

KeyComp (Martin Mareš - MJSoft)KeyComp (Martin Mareš - MJSoft)

Obecně kombinace KeyRes/KeyComp je skvělá pro zkušené uživatele, co chtějí detailní kontrolu. Začátečníkům může přijít složitější kvůli nutnosti porozumět formátu, ale naštěstí dokumentace od autora vše vysvětluje a člověk se to rychle naučí.

Vytvoření české keymapy krok za krokem

Nyní se zaměříme konkrétně na tvorbu české keymapy pro AmigaOS 3.2.3 v kódování ISO-8859-2. Popíšeme postup a důležité tipy, včetně tvorby dvou variant rozložení - QWERTZ (tradiční české rozložení) a QWERTY (tzv. „programátorské“ rozložení, oblíbené u uživatelů zvyklých na anglickou klávesnici, kde Z a Y jsou naopak). Předpokládáme, že máte k dispozici vhodné české fonty v Latin-2 (např. fonty dodané s lokalizací nebo TrueType fonty s češtinou).

Analýza a příprava výchozí mapy

Nejprve si rozmyslete, z jaké existující keymapy vyjít. Můžete začít s prázdnou (pokud používáte EditKeys či KME a zvolíte NOMAP), ale snazší je vzít podobné rozložení a to upravit. Pro českou QWERTZ variantu se nabízí použít jako základ německou keymapu (de), protože německá klávesnice má shodné rozložení písmen (QWERTZ) a podobné místní znaky (Umlauty) - ty pak vyměníme za české. Pro QWERTY variantu lze vyjít z americké (us) či britské (gb) mapy. Můžeme také použít starší českou keymapu (pokud ji máme) a převést ji do ISO-8859-2 - k tomu ideálně poslouží KeyRes / KeyComp.

Tip: Máte-li k dispozici neoficiální českou keymapu pro OS3.1 (která používala tzv. Kamenické nebo E2 kódování), můžete ji pomocí KeyRes rozložit a poté v textu nahradit kódy českých znaků za odpovídající ISO-8859-2 hodnoty. Tím získáte základ pro OS3.2. Pokud žádnou nemáte, začněte s EN/DE mapou a přidejte češtinu „ručně“.

Úprava rozložení písmen a symbolů

Naším cílem je, aby při psaní bez modifikátorů dávala klávesnice česká písmena a základní symboly. V QWERTZ variantě ponecháme prohozené Y/Z (což už německá mapa má). V QWERTY variantě naopak zajistíme, že na fyzické klávese Z bude písmeno Z atd. - to můžeme udělat buď tak, že vezmeme US mapu (ta je QWERTY) a přidáme diakritiku, nebo z QWERTZ mapy prostě prohodíme hodnoty u kláves Y a Z. Dále zkontrolujeme řadu číslic a symbolů: česká PC klávesnice tradičně vyžaduje pro napsání číslic držet Shift (bez Shiftu píše různé symboly s diakritikou), ale tzv. „programátorská“ varianta má číslice přímo. Na Amize většinou preferujeme druhý přístup (číslice přímo bez Shiftu, podobně jako US klávesnice), protože je to praktičtější pro programování. Takže v keymapě nastavíme horní řadu kláves tak, aby bez Shiftu dávaly číslice 0-9 a se Shiftem odpovídající symboly (výkřičník, uvozovky, atd.), případně české specifické znaky. Pokud chcete napodobit PC standardní českou klávesnici, nastavte to opačně (bez Shiftu písmeno s diakritikou nebo symbol, se Shiftem číslici). To je na volbě uživatele.

Konkrétně upravíme následující klávesy (pro QWERTZ varianta příklad):

  • Klávesa pro Y (na fyzické pozici Z) bude dávat Y bez Shiftu a Z s Shiftem v QWERTY variantě, zatímco v QWERTZ variantě naopak.
  • Klávesa pro Z (na fyzické pozici Y) analogicky.
  • Klávesy s interpunkcí kolem písmen: česká klávesnice potřebuje navíc „ů“ (ů/Ů) a „¨“ (případně „°“). Na PC se například ů nachází na klávese s ;: (vpravo od L) nebo jako kombinace. Na Amize můžeme zvolit, zda ů bude přímo na jedné klávese (např. místo německého Ü) nebo dosažitelné přes mrtvou klávesu (viz další krok).

Nastavení mrtvých kláves pro diakritiku

Čeština používá tři diakritická znaménka: čárka (akut) nad písmeny (á, é, í, ó, ú, ý), háček (caron) nad písmeny (č, ď, ě, ň, ř, š, ť, ž) a kroužek nad ů. Kroužek se používá jen u písmene ů, takže ten lze řešit přímo (dedikovanou klávesou nebo Alt kombinací), ale čárka a háček se týkají více písmen. Ideální je zvolit dvě klávesy, které budou fungovat jako mrtvé klávesy pro tyto dva akcenty. Na standardní PC české klávesnici bývá klávesa pro čárku (akut) a háček vyhrazena - např. klávesa vedle Backspace pro čárku, klávesa vedle písmena P pro háček. Na Amize takové klávesy nemusí být označeny, ale můžeme je namapovat.

Jedna možnost: apostrof (')/uvozovka jako mrtvá klávesa pro čárku. Tj. stisk ' nebude psát apostrof, ale čekat na další písmeno a to pak případně opatří čárkou (např. ' + E → „É“). Druhá možnost: klávesa pro háček - na PC je to ta s ˇ a ^, na Amize můžeme použít např. klávesu, kde je na anglické klávese ;: (středník, dvojtečka), nebo klávesu s rovnítkem/plus, pokud není plně využita. Záleží na preferenci - třeba německá keymapa má Alt+Umlaut klávesy jako mrtvé pro přehlásky. My můžeme klidně využít pravý Alt (AltGr) + nějaké písmeno pro diakritiku, ale uživatelsky příjemnější je mít dedikované klávesy.

Pro tento příklad zvolme:

  • Klávesa Apostrophe (na US klávesnici fyzicky mezi ; a Enter) bude mrtvá klávesa „čárka“.
  • Klávesa Tilde (na US klávese vlevo od 1, tedy ~/`) použijeme jako mrtvou klávesu „háček“.

V editoru (EditKeys/KME) označíme tyto dvě klávesy jako Dead. Nyní musíme určit, které klávesy budou modifikovatelné těmito mrtvými klávesami. To jsou všechna písmena, na která v češtině píšeme diakritiku: A, C, D, E, N, O, R, S, T, U, Y, Z. V editoru tyto klávesy přepneme do režimu modifiable (např. v EditKeys zvolíme mód „Modifiable“ a klikneme na uvedené klávesy). Tím jim v keymapě vznikne prostor pro definici výsledků s diakritikami.

Přiřazení českých znaků

Následně definujeme, jaké znaky mají vzniknout. U modifikovatelných kláves vyplníme pole pro prefix 1 a 2 (čárka / háček). Konkrétně:

  • Pro klávesu A: prefix 1 → „á“ (0xE1 v Latin-2), prefix 2 → (A s háčkem není v češtině, necháme prázdné nebo třeba duplicitu s čárkou pokud nutné, ale raději nevyužito).
  • C: prefix 2 → „č“ (0xE8), prefix 1 (čárka nad C není, necháme nevyužito).
  • D: prefix 2 → „ď“ (0xEF).
  • E: prefix 1 → „é“ (0xE9), prefix 2 → „ě“ (0xE3).
  • N: prefix 2 → „ň“ (0xF2).
  • O: prefix 1 → „ó“ (0xF3). (O s háčkem není, prefix 2 nevyužit.)
  • R: prefix 2 → „ř“ (0xF8).
  • S: prefix 2 → „š“ (0x9F).
  • T: prefix 2 → „ť“ (0xF9).
  • U: prefix 1 → „ú“ (0xFA). (Pro „ů“ kroužek viz níže.)
  • Y: prefix 1 → „ý“ (0xFD). (Y s háčkem není, prefix 2 nevyužit.)
  • Z: prefix 2 → „ž“ (0x9E).

U velkých písmen to funguje automaticky přes Shift - pokud například napíšete mrtvou klávesu čárka a pak Shift+E, systém vygeneruje „É“, pokud máme malému e přiřazeno é. (V keymapě by se velká varianta dala uvést samostatně, ale díky tomu, že Caps Lock / Shift mechanika se postará o velká písmena, není nutné vypisovat obě verze - tedy stačí definovat „é“ u klávesy E s prefixem, a velké É vznikne použitím Shift normálně, pokud je klávesa capsable). Pozor však - v některých případech je třeba uvést i velkou variantu ručně, pokud by písmeno normálně nebylo capsable. Písmena však capsable jsou, takže to řešit netřeba.

Kroužkované ů: Zbývá řešit písmeno Ů/ů. To se nevytvoří kombinací čárky nebo háčku, protože kroužek máme zvlášť. Na PC klávesnici má „ů“ vlastní klávesu. My můžeme udělat totéž: vyhradit např. klávesu Semicolon (středník) pro „ů“. Pokud ale nechceme přijít o středník, zvolíme jiný způsob: třeba využijeme Alt. Například nastavíme, že Alt+U vygeneruje „ů“ a Alt+Shift+U „Ů“. V keymap editoru toho dosáhneme tak, že u klávesy U do políčka výstupu pro Alt zadáme kód pro ů (0xF5 v Latin-2) a pro Alt+Shift kód pro Ů (0xD5). Tím obejdeme potřebu další mrtvé klávesy. Alternativně bychom mohli zavést třetí mrtvou klávesu (např. pro kroužek, prefix 3), ale vzhledem k tomu, že se týká jediného písmene, je přímé mapování Alt+U efektivní.

Speciální symboly

Při tvorbě české keymapy nezapomeňte i na další znaky: ¶ (paragraf), ° (stupeň), případně (pokud byste chtěli euro znak - ten ovšem v ISO-8859-2 není, AmigaOS 3.2 ho řeší přes Unicode gylf v nových fontech). Česká PC klávesnice má např. na klávese s = také ´ (apostrof jako znak čárky) nebo na klávese s číslem 2 je ě. V naší Amiga mapě jsme to řešili přes mrtvé klávesy, takže např. znak samotné ´ (pokud chce uživatel napsat jen apostrof místo diakritiky) by měl být dosažitelný - např. Shift+DeadAkut můžeme nastavit, aby vložil skutečný znak ´ místo aby čekal na kombinaci. To jsme udělali výše v ukázce (Shift+Apostrof dává ´). Stejně tak lze ošetřit, aby dvojitým stiskem mrtvé klávesy se vložilo samotné diakritické znaménko. V EditKeys stačí u dead klávesy definovat výstup pro stisk se Shiftem nebo nastavit prefix sám na sebe.

Uložení a kompilace

Když máme všechny změny hotové, v editoru soubor uložíme pod novým jménem (např. cz_iso-8859-2 apod.). Pokud jsme pracovali textově s KeyComp, uložíme .kms soubor a spustíme KeyComp pro překlad. Výstupem by měl být soubor s příponou .keymap (nebo bez, v OS3.x to není kritické, hlavně že má správný název). Zkontrolujeme, že výsledná keymapa obsahuje očekávané hodnoty - případně můžeme použít KeyRes zpětně, abychom náš výtvor ověřili v textové formě.

Příklad zdrojového souboru pro KeyComp

Pro ilustraci uvádíme zjednodušený výňatek ze zdrojového souboru .kms pro českou keymapu (QWERTZ varianta, ISO-8859-2). Tento příklad demonstruje definici mrtvé klávesy pro čárku a modifikovatelných písmen A a E s diakritikou:

DEAD KEY APOSTROPHE          ; Mrtvá klávesa - čárka (akut)
    '<0>'                                           ; (bez výstupu při samostatném stisku)
    PREFIX 1                                   ; při stisku generuje prefix kód 1 (akut)
    SHIFT '<´>'                                 ; Shift + apostrof vloží samotný znak čárky
KEY A CAPS                                 ; Klávesa A, ovlivněná CapsLock
    '<a>'                                           ; bez modifikátoru "a"
    SHIFT '<A>'                               ; se Shiftem "A"
    ; Alt a Alt+Shift ponechány pro @ a ^ (příklad)
    MOD { '<á>' }                             ; při prefixu 1 -> "á"  (háček nepoužívá, jen jedna položka)
KEY E CAPS                                 ; Klávesa E
    '<e>'
    SHIFT '<E>'
    MOD { '<é>', '<ě>' }                   ; prefix 1 -> "é", prefix 2 -> "ě"

Poznámka: Syntaxe vychází z dokumentace KeyComp. V reálném souboru by bylo samozřejmě vyplněno všech ~95 kláves, zde jsme ukázali jen výsek. Také MOD pole by mělo obsahovat položky pro každý definovaný prefix - v našem případě { '<á>', '<*něco*>' }, kde druhá položka by mohla být prázdná nebo vynechaná, pokud klávesa není modifikována druhým prefixem. Pro úplnost by se definovaly i další mrtvé klávesy (např. háček jako DEAD KEY TILDE s PREFIX 2) a u dalších písmen by v MOD polích byly odpovídající znaky.

Testování a instalace nové keymapy

Jakmile máme hotový soubor keymapy (např. cz.keymap), je čas ho vyzkoušet v systému:

Zálohování:

Než začnete, zajistěte si, že máte po ruce funkční rozložení, abyste se mohli vrátit, kdyby nová keymapa měla chyby (např. zkopírujte si anglickou US keymapu jako rezervní).

Umístění souboru:

Zkompilovaný soubor keymapy zkopírujte do DEVS:Keymaps/. Pokud má koncovku .keymap, můžete ji ponechat, ale obvykle název nemá příponu (soubor se jmenuje prostě cz například). Pro jistotu můžete vytvořit i ikonu .info - stačí zduplikovat ikonku jiné keymapy a přejmenovat ji stejně jako soubor (to zajistí, že se objeví v Prefs/Input menu).

Test přes Shell:

Pokud chcete nejprve zkusit nové rozložení bez přepínání v celém systému, otevřete si Shell a spusťte příkaz: setkeyboard cz. Ten nastaví keymapu pouze pro aktuální shell okno. Můžete tak bezpečně vyzkoušet psaní znaků (např. do shellu příkazy nevadí překlepy v diakritice). Otestujte všechny speciální kombinace: píšou se správně české znaky? Fungují číslice, interpunkce? Jak se chová Caps Lock? Zkuste i různé kombinace mrtvých kláves (např. dvakrát za sebou mrtvou klávesu pro čárku by mělo napsat ' samotný znak, mrtvá klávesa + nepodporované písmeno by mělo dát to písmeno bez změny atd.).

Globální aktivace:

Pokud test dopadne dobře, nastavte novou keymapu natrvalo. V editoru Prefs / Input by se v seznamu “Keyboard Type” měla objevit vaše keymapa (podle názvu souboru či popisku v ikonce). Vyberte ji a uložte nastavení. Alternativně můžete ručně zapsat do startup-sequence nebo user-startup příkaz SetKeyboard cz, ale lepší je používat systémový Prefs. Jakmile je keymapa aktivní, bude platit pro všechna nová okna Shellu i pro Workbench.

Upozornění: starší SetMap v OS1.x měnil globálně, v OS3.x je správná cesta přes Input prefs nebo user-startup).

Ladění:

Pokud zjistíte chybu (např. nějaká klávesa generuje špatný znak), vraťte se k editaci. S KeyRes můžete snadno porovnat binární soubor s očekáváním: KeyRes cz.keymap ram:cz_out.kms a podívat se v textu, kde je chyba. Pak opravit a znovu KeyComp. U grafických editorů stačí opět načíst soubor, opravit a uložit.

Sdílení:

Vaši hotovou českou keymapu (QWERTZ i QWERTY variantu) ocení jistě i další uživatelé. Můžete připojit kratší README, ve kterém uvedete, že je určená pro AmigaOS 3.2+, kódování ISO-8859-2 a jaké fonty použít. Protože Hyperion (zatím) oficiálně nedodává českou lokalizaci včetně fontů v ISO-8859-2, komunita si pomáhá sama. Vaše keymapa plus vhodné fonty (např. převedené původní Topaz do Latin-2, nebo použití moderních TTF) tak zaplní mezeru.

Tímto máte vytvořenou a nasazenou českou keymapu pro AmigaOS! Nyní by již psaní česky mělo fungovat v systémových aplikacích, textových editorech i v CLI oknech, za předpokladu použití fontu s Latin-2 znakovou sadou. Pokud by někde místo českých písmen byly prapodivné znaky, zkontrolujte, že daná aplikace/font skutečně používá ISO-8859-2 a nikoliv jinou sadu. V AmigaOS 3.2 je standardem již ISO-8859-2, takže držíte-li se toho, vše by mělo být v pořádku. Hodně zdaru při dalším experimentování s keymapami!

Přidat komentář

Odhadované roční prodeje

odhadovany prodej

Prodeje podle regionů

prodej regiony

Počet prodaných kusů

Počet prodaných kusů