Revision history for Perl extension UI::KeyboardLayout.

0.01  Mon Jan  9 23:45:23 2012
	- original version; created by h2xs 1.23 with options
		-AX -b 5.8.0 -n UI::KeyboardLayout

0.02
	Minor additions to "principles" section of the docs.
	Document how Windows keyboard layout DLL work.
	PODify section on Latin-characters keyboard.
	Parse DerivedAge.
	Verbose mode of UName with script/block/age appended.
	Print out coverage.
	When multiple diacritics assigned to the same key, allow 
	  intelligent priorities by sorting by Unicode-age inside a group.
	When a sequence of diacritics is assigned to two keys in
	  opposite directions, allow intelligent sharing.
	Allow chained (de)diacritics inside Diacritics() rule, 
	  as in 02dc+031b--0300: remove `, add horn, add ~.
	Allow a custom translation list, as in <subst-Vietnamese>.
	Recognize many new heuristics for pseudo-decompositions.
	Make the access to modifier letters take into account mapping of SPACE,
	  and use Enter,Tab,C-Enter as well.  Exchange roles of - and _.
	Repeated deadkeys.
	Separate visual bell for 32-bit chars in diacritic maps...

	Eurkey++:	[tentative webpage: k.ilyaz.org/v0 ]
	  To enter ONE character from THE OTHER face, preceed by Shift-SPACE.

	  Latin face: identical to EurKey (but with enhanced diacritic prefixes,
	    and full [monotonic] Greek).

	  Cyrillic face: *) identical to Russian phonetic (of X11) on the base layer;
              *)  has all other letters of modern Slavic Cyrillic-based languages, 
                   XIX century russian, Kazakh letters on the AltGr-layer;
              *)  has all the other characters of ISO 8859-5, Old Slavonic (except
                   letters-titlo-form and powers-of-10), and those in 
                   flavors of ru on X11 (Tatar, Ossetian, Chuvash, 
                   Udmurt, Komi, Yakut, Kalmyk, Bashkirian, Mari) 
                   on AltGr-' prefix (the "bizarre variants key").
              *)  Has all titlo-forms (up to v6.1) accessible via AltGr-^ 
                   prefix key (for "bizarre ones" use a key with Shift,
                   for the rest type the lowercase form [after AltGr-^]);
                   double-AltGr-^ enters the titlo itself.  Powers of 10
                   are on the AltGr-^ + digit.  (ST as S, DJERV as D, vzmet as -.)
		Most keys are in the "expected" positions; but note the following:

    '"/́´/ӹ/ӳ	я/ѣ/ѧ/ѩ	б/ѓ/ѹ/ѽ	д/ђ/ӟ/ԁ  й/ї/ҋ/ӑ  ь/ъ/ӛ/ӕ   ф/ѳ/ғ/Ӻ   м/Ω±/ӎ/ꙟ   ш//ԧ/ѐ	щ//ꚇ/ѝ   з/є/ѯ/ҙ  ц/џ/ҵ/ќ

		AltGr-' is the "get bizarre variants" key; so for д/ђ/ӟ/ԁ, ђ is on
		AltGr-д, ӟ is on AltGr-' д, and ԁ=U+0501 is on AltGr-' AltGr-д.
		Shift-AltGr-' gives ´.
		The keys ъЪёЁ are duplicated: they are placed above 3456 (as in
		the standard phonetic keyboard) AND they are placed as 
		AltGr-variants of ь and е.  The Latin punctuation keys "hidden"
		by ючшщэ (and over-digits ъЪёЁ) are accessible on AltGr-keys.

	  Extended prefix keys for Latin diacritics:
		Each can perform multiple functions; if several functions are
		applicable to a given key (the normal situation!) the best match
		is assigned to PREFIX + Key, the second best to PREFIX + AltGr-Key.

		Pressing twice give the corresponding combining character; if
		followed by Space, Shift-Space, AltGr-Space, Shift-AltGr-Space,
		produces various related spacing modifier letters; if followed
		by | or AltGr-|, gives a vertical form etc (see below).

		What is "the best match"?  It is the position in the list below 
		(left is prefered) combined with bizarreness of the symbol (less
		bizarre is prefered).  Also, PREFIXed AltGr-Key may just add
		a second accent to what AltGr-Key generates (if this is "the best
		choice" as described above - it competes with "the second choice"
		for the base key); the [Vietnamese ACCENT] actions
		below operate only for adding SECOND accent on AltGr-keys, and 
		only on "green ones": AltGr- WZFH,L (see below).

	    Alt-^    breve + caron + other breves + other carons + loop + belt + flourish
	    		Heuristic: Alt-Shift-6 inverts Alt-6 (which is, basically, hat-accent)
	    Alt-;    diaeresis + [Vietnamese hook above] + ogonek + cedilla + comma below
	    		Heuristic: ; is an offspring of double-dot and comma
	    Alt-&    macron + stroke + various other additions of straight line(s)
	    		On numbers 0,1,2,3,4: soft-hyphen, hyphen, en-dash, em-dash, horizontal bar
	    		On numbers 5-9: IPA tone modifiers ˥˦˧˨˩.
	    Alt-7    
    ring above + [Vietnamese dot below] + dot above + dot below + various rings/dots + circle about

	  	The other prefix keys work in pairs: the first one operates
	  	as described above, prefering accents on the left of the list; 
	  	and the second one prefers accents on the right
	  	
	    Alt-' and Alt-`
	acute + [Vietnamese acute] + hooks + tails + curls + horn + ticks + [Vietnamese grave] + grave
	    Alt-~ and Alt-6
	       tilde + [Vietnamese tilde] + belt + descender + mutiliated + smallcaps + hat
			("Mutiliated" means rotated/reflected/open/closed etc.
			 Case is preserved, so characters without uppercase equivalents
			 are on lower register keys, and smallcaps are on Shift-register.)

	  Vietnamese input: One must remember positions of quick-access 
	    AltGr-vowels with ` or ´, of additional "green keys" for ĂÂÊÔƠƯ,
	    how to enter diacritics `, ´, ˜, ... via AltGr-prefix keys
	    (`, ´, ˜ are where expected, dot below on AltGr-7 [possibly with
	    AltGr on the vowel key], ˘ on AltGr-^, ˆ on AltGr-6; hook above on 
	    "English vowels" is on AltGr-´ with AltGr-vowel, and on "green keys"
	    it is on AltGr-;).  Also: đ/Đ is AltGr-& before d/D.

	    THE RULES:

	    All characters with at most one "accent" (except "horny" ƠƯ) can be 
	    entered "normally" (following the rules for AltGr-diacritics 
	    on "English letters", or via quick-access AltGr-vowels with ` or ´).
	    
	    For characters with ` or ´ tone mark and another ornament 
	    (except "horn"), use the AltGr-prefix key for this 
	    "other ornament" with the quick-access AltGr-vowel for `/´-vowel.
	    
	    To put tilde, dot below, or hook as the "second" diacritic, one
	    should know additional positions on AltGr-layer: ĂÂÊÔƠƯ take 
	    places of ÅÀÈÒØÙ (which are on AltGr- WZF,LH; call these places 
	    "green AltGr-keys").  Preceed the green AltGr-key by the 
	    AltGr-prefix for the diacritic (given above).
	    
	    This leaves `, ´ on horns ƠƯ and horns themselves.  For the former,
	    use AltGr-` and AltGr-´ on O and U with "the opposite ` or ´ accent".
	    For ƠƯ, use AltGr-` on AltGr-O and AltGr-U (which are ÖÜ).
	  
	    =====

	    Desired heuristic for semantic: under the weight of additional 
	    accent, `-accent on letters collapses to a different accent:
	      under ´ it collapses to a horn on O and U (Ơ and Ư) so
	      one gets Ớ and Ứ (likewise for ´-accent under `).
	      Over ¨-accent ` again collapses to horn (but ¨ evaporates, so
	      one gets a pure horn).
	      
	  Modifier letters: entered via the Latin AltGr-diacritic with a similar
            shape of "the principal diacritic".  Following by space gives the
            standalone form of the diacritic; by Shift-Space the modifier 
            form (if different; otherwise the other most similar modifier form).
            Two most visually similar "lower modifier" letters are entered by
            - and _; same for Vertical/Comma-like/Doubled/Dotlike - on \ and |;
            the Prime-like/Centered are on / and ?.  As the last resort, follow
            by AltGr-Space, AltGr-Shift-Space, Enter, Tab, Ctrl-Enter, C-[,
            C-], C-\, Backspace and Control-Backspace to get other visually
            similar forms (in order).  (The last resort method helps also
            when, for example, AltGr-& \ enters stroked-\ (which overrides
            the possible modifier semantic).  All pre-v4.0 modifiers (and all
            non-letter 4.0-modifiers, and all
            IPA modifiers) can be entered.  (See tables in .kbdd file.)
	  
	  Combining diacritics: only the principal one is currently supported.
	    Enter by double-AltGr-diacritic.
	    
	  Accessibility features: prefix a key by AltGr-Shift-Space to
	    access the AltGr-meaning of the key (useful if AltGr-key is stolen 
	    by the system).  Works after linked-faces-prefixes too (but 
	    currently not before or after Latin diacritic-prefix). Example: 
	    AltGr-Shift-Space + | acts as AltGr-|.  Repeat twice/3-times/4-times 
	    to access the AltGr-inverted linked face (and other flavors of
	    the linked face).

	    Similarly, from Cyrillic personality, the linked faces are Latin,
	    AltGr-inverted Latin, bizarre Cyrillic, and titlo-Cyrillic.  So
	    Shift-Space accesses Latin, AltGr-Space accesses AltGr-inverted Latin,
	    double AltGr-Space accesses bizarre Cyrillic.  And repetition
	    of AltGr-Shift-Space access AltGr-inverted versions of Cyrillic,
	    bizarre Cyrillic, titlo-Cyrillic, and Latin.

	  Linked faces for Latin: Cyrillic, bizarre-Cyrillic, and
	    titlo-Cyrillic.  The principal one is accessed by Shift-Space,
	    the second by AltGr-Space, the third one by double-AltGr-Space.
	    Alternatively, one can access the second/third one by using Cyrillic
	    prefix keys AltGr-' and AltGr-^ after Shift-Space prefix.
            
          Shift-Space followed by various Modifiers-Space enters "visible
            representations" of space: ␢, ␣ and ␠ on Space, Shift-Space, and
            AltGr-Space.  Follow AltGr-Space by Space or Shift-Space to get 
            wide no-break space (space-wide and digit-wide); follow
            Shift-AltGr-Space by Shift-Space to get narrow no-break space. 
            The third linked face maps all spaces to narrow breakable space.
            
          Vulgar fraction access: on bizarre-Cyrillic face, either enter a
            digit in denominator, or a digit in numerator with Shift-modifier.
            To increase numerator/denominator, add AltGr-modifier.  (All
            fractions of v6.1 are accessible.)  (From Latin: on AltGr-Space;
            from Cyrillic: on AltGr-'.)
            
          Visual bell: non-existent prefix-key combinations generate the visual
            bell bell ♪.  Combination which make sense but can't be entered
            on the give OS generate ♫ (currently 32-bit codepoints on Windows).
          
==========================================
	  Add ќ on Russian-II-AltGr on c[ц] (this completes ISO 8819-5.)
	  Add characters missing from ru X11 old slavic keyboard (except
	  powers-of-10 and combining letters).
	  
	  Add ―, soft hyphen, no-break hyphen and figure dash to Overbar map (on 4, ¦, ! and 0). 
	  Add ¤, kra ĸ and cedilla to CopyRight layer on $, q and comma.  
	    (This completes ISO 8859-N maps - except for Hebrew/Arabic/Thai letters.)  
	    (But not WGL4; or Adobe GL - about 760 missing [!!!] outside of combined characters, and
	      "ARABIC|HALFWIDTH|FULLWIDTH|HEBREW|<control>|ARMENIAN|DEVANAGARI|BENGALI|GURMUKHI|GUJARATI|THAI|CJK.Symbols|CJK.Letters|CJK.Compatibility|Private.Use.Area|HIRAGANA|KATAKANA|BOPOMOFO|HANGUL|Small.Form"
	    .)
	    
	  Add ẗ to CopyRight layer as AltGr-t, and Ȩȩ cedilla as eE.
	  How to do ḩ, ḥ, ɬ, ŀ, ẇ, ẉ, Ẏ, ẓ, Ǜ, ǚ, Ǘ (1.1 penalized by Vietnamese)
	  and newer Ȧ, Ⱥ???

	  ḩ - romanization of Arabic
	  ḥ - in dialects of Asturian
	  ɬ - IPA
	  ŀ - not recommended usage of l·l in Catalan
	  ẇ ẉ - unknown
	  Ẏ - Avestan, and ISO transliteration of Izhitsa Ѵ
	  ẓ - transcription of Afro-Asiatic
	  Ǜ, ǚ, Ǘ - unknown (transliteration of chinese?)
	  Ȧ - Livonian, and ISO transliteration of Yus Ѫ
	  Ⱥ - Saanich and precursor to Å in Norsk.
	  
	  Fix shortcoming of the Greek section: dialytika-versions of ι and υ
	    on ,. , drahma ₯ and question mark ; on /?, micro sign on AltGr-M, 
	    and tonos, ypogegrammeni on `_.  
	    Add tonos-versions of vowels, symbol variants, and final sigma 
	    on AltGr-letters.
	    	(?!!! But no tonos-dialytika with Diacritics[+...]???? - it may work only on the given face, not elsewhere...)

	  Diacritic tables: all the non-char modifiers up to v4.0 are accessible, so are all IPA letter-modifiers.

	Vulgar fractions: 1/7 1/9 and 0/3 were missing.
	Scancodes for unusual keys were completely wrong (now taken from keyboard type 4 of kbd.h).

0.03	Remove accumulated crud from EurKey++.kbdd.
	Remove manyHEX() wrongly used.
	Make Substitutions case-aware: only one case should be used.
	New face configuration AltGrCharSubstitutions.
	Better sorting of variants of diacritics: take into account the block (the later in the list, the more bizarre).
	Auto-generate linked-in AltGr-inverted maps; handles prefix keys; we did cycle elimination (but not now,
	  when we do not expect this to coexist with manual AltGr-inversion - cycle elimination is too much
	  work in presence of InvMap).
	Support for repeated altgr_flip_key --> inversion of other linked faces.
	Generation of modifier keys - skip the AltGr-inversion key.
	When emitting coverage, do not count deadkeys "by themselves".  (Not implemented for repeated dead keys.)
	Include the files with repertoirs of certain "access Unicode chars" tools/standards; in examples/charlists.
	Extra sorting order for results of <any-FOO> - take into account the number of words.
	+ARRAY_NAME=val was not allowed in a visual section.
	Overrides are possible for AltGr-inverted prefix keymaps (including chained deadkeys when inverted key is not auto).
	Start documenting format of .kbdd file; all but the (most important) personality-sections are documented.

	EurKey++:
	  Enable pinyin input of tonal variants of ü by accents on a green key AltGr-k (normally enters ij).
	  New sorting required some massage of binding for ` and ´ to preserve the Vietnamese semantic.
	  New sorting: we lost N with long leg, and exchanged I-dot-below with I-dot-above.
	    (Now, of Vietnamese, only o gets dot below without AltGr.)
	  Shift-AltGr-SPACE after a prefix diacritics key does not generate a 4th modifier letter.
	  Shift-AltGr-SPACE after a prefix diacritics key gives AltGr-inverted map.	
	  Allow ring/dot prefix to remove dots from i and j; remove ı from "mutiliated" lists, so that ᴉ is available.
	  AltGr-inverted maps are aware of diacritics (so can be used before and/or after diacritics).
	  Massive simplification of .kbdd file - remove manual AltGr-inversion crud.

0.04	Block output of control chars in prefix keymaps; fix output of \x03.
	Make all Face-related base-operators in the satellite face processor return the initial layers
	  (and not massaged layers).  Makes LinkFace useful again in DeadKey descriptor.
	Rename layerDeadKeys2 to faceDeadKeys2.
	Replace layerDeadKeys by faceDeadKeys.
	Start of redoing the internal representation of a face: layers may contain [$deadkey, $face, $noexport] instead of $deadkey.
	  (do not redo prelink_layers, since it operates on non-instrumented layers).  Deadkeys inherited
	  from LinkFace are recognized now.  One would need coverage2 section soon...
	Add a compact summary of characters available on principal prefix keys (of repeated deadkeys, only inherited are marked).
	Recognized ESH EZH ENG and SCHWA as phonetized variants of s z n 0 (no majuscule SCHWA, as in Azeri).
	Add curses to LIMITATIONS section docs.
	Table of chars of bépo was missing many base characters.

	EurKey++:
	  Clean up .kbdd file a bit.
	  Add phonetized variants on macron prefix key (add ESH EZH and SCHWA, but removes ‒ so add schwa manually on AltGr).
	    (To support this, add rules introducing ɟ and v with right hook).
	  Add hookish+mutiliated rules to the `―´ pair.  (Adds only ʮ - not enough to add ʄ - is it 3 modifiers???)
	  Now eng's are on macron+etc+phonetized (and n with long right leg appear on `).
	  Add solidus (overlays) to macron.
	  Exchange diacritic signs for combining ´ ` in Cyrillic (on double AltGr-' and on AltGr-' with '; 
	    now Vietnamese versions (which got into Wikipedia ?!) are
	    on Shift-ed keys, and "normal" acute and grave are on unshifted.
	  Add Azeri Əə to Ë=AltGr-e, and ditto mark 〃 to " on Copyright face (AltGr-minus).
	  Add promille ‰ on % on ring/dots face, primes ′,″ on '," on Math (AltGr-M) and ‡ on †=AltGr-" on macron/bar face.
	  Latin's diacritics prefix keys are available from Cyrillic after Shift-Space.