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).  For example, ỡ is AltGr-~ AltGr-l.
	    
	    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. 

0.05	Infrastructure to allow multiple decompositions extracted from the Unicode database.
	  (Currently only changes the order of (dotless) j with stroke.)
	Add SLANTED, APPROXIMATELY, ASYMPTOTICALLY, ALMOST to mutiliated.
	Equate EQUAL TO to EQUALS in unicode names.
	Treatment of match-(),[] in satellite face processor was completely busted.
	Significant rework of satellite face processor to change the order of loops: 
	  now the loop in layers and shift-state are internal.  (So components can operate on a "key as a whole").
	Via Diacritic2Self(), AltGr-variants of /?, -_, \| access 3 groups of combining characters; AltGr of digits (with or
	  without Shift) access "missed" combining characters (digits are extended on the left by ` and on the right by +[],.).
	Add +-like and arrow combining characters to the last category.
	New mutators latinize and greekize for greek letters put into "LATIN" script (greekize: F |--> PHI etc).
	New category "Combining for symbols" for diacritics (accessible after diacritic key on AltGr-;: and on [{]}'" ).
	Allow AltGrCharSubstitutions to be a multimap.
	Allow adding "OPERATOR" when constructing compositions (TILDE, ASTERISK).
	Allow stripping OPERATOR when considering explicit decompositions (NOT TILDE).4
	RAMS HORN is a phonetization of uc V (we ignore that it is "SMALL").
	phonetize is now done via a hash map as 0 ə  s ʃ  z ʒ  j ɟ  v ⱱ  n ŋ  V ɤ  ! ǃ  ? ʔ  ¿ ʕ .
	New mogrify (manual):     addline	0 ∅  ( ∈  ) ∋	
				     sharpen	< ≺  > ≻  { ⊰  } ⊱  ( ⟨  ) ⟩		???	〈〉
				   unsharpen	< ⊏  > ⊐  ( ⟮  ) ⟯
				     amplify	< ≪  > ≫  ≪ ⋘  ≫ ⋙  ˆ ∧
				       round 	< ⊂  > ⊃
				      whiten	[ ⟦  ] ⟧  ( ⟬ ) ⟭		- now many many more...
	Document gotchas with ABOVE SINGLE-LINE NOT EQUAL TO etc.
	Recognize SQUARED as mutiliation (does not make sense for CURLY).
	Sorting combined keys by Age we were not splitting key/shift-key pairs which were not uc/lc.
	Use information from loaded UCD to output combining chars in a readable form.
	Avoid infinite recursion on cutting away SIGN; allows for new calculated-sign decomposition (MINUS SIGN --> HYPHEN-MINUS).
	Decompositions to MINUS SIGN are duplicated to HYPHEN-MINUS.

	EurKey++:
	  All combining characters (except for invisible CGJ, musical [BALINESE and high plane], half-diacretics,
	    combining raised letters, NKO, PHAISTOS, ETHIOPIC, TAI, COPTIC, BAMUM, DEVANAGARI) are available
	    on AltGr- /?\|-_ `~ (shift-)digits =+ [{ ]} ,< .> after
	    the corresponding prefix key (one with the visually most similar "principal action").
	  Lunation was missing on Greek-in-Cyrillic.
	  Add latinize as one of the functions of AltGr on Greek (active only on γΓδ).
	  Add latinized-Greek to diaeresis satellite face (all present, with alpha/Alpha sliding to zZ).
  Misplaced - after adding math, MANY!
	  Start to acquire some math symbols via ` = unsharpen, ´ = sharpen, ¯ = addline, ° = round, ˆ = amplify/whiten
	    ¨ - reveals greenkey/converts to an operator/neg-addline/amplify+round/round+round,  ˘ - quasisynon, 
                         (omit ~ = turnaround - breaks more than it adds...)
	  (The intent is to cover as large part of 22** and 27[CDE]* and 2980–2aff ranges as possible.)
	  underbar and stem were missing as action of ¯.
	  
0.06	New mutator adddot.
	⋌ was put on addright-\, not addright-/.
	Add neo2base, neo2ext1 to example character repertoirs (the primary face of Neo2).
	  perl -C31 -wne "print $1 if /\x{2502}(.*?)\x{2502}/" <neo20.txt >oox
	  perl -C31 -wne "$s{$_}++ for split //; END{print for sort keys %s}" oox >neo2base
	  grep DEADTRANS kbdneo2.c | perl -wlne "warn $_ unless /DEADTRANS\s*\(\s*([\w]+|L'[^'\s]+')\s*,\s*([\w]+|L'[^'\s]+')\s*,\s*([\w]+|L'[^'\s]+')\s*,\s*0x000([01])\s*\)/; next if $4; print $3" | sort -u >o
	  perl -C31 -wne "next unless /^0x([\da-f]+)$/i; print chr hex $1" o >neo2ext1
	    (The file o contains 81 other [symbolic] names which should be pretty common [in Latin-N?].)
	    I did not check that all bindings in kbdneo2 are reachable under Windows...
	OPERATORs were not always recognized.
	Give "round" precedence over dots - gives ⊃ precedence over ⋗.
	More math greenkeys: on 1,2,3,4.
	Logic to get greekize mutator was busted.
	New charlist neo2ext2:
	  egrep -v "^0x|^L'" o > oo
	  wget "http://wiki.neo-layout.org/browser/windows/kbdneo2/Quelldateien/keysym4utf16.h?format=txt"
	  perl -C31 -wane "BEGIN{local @ARGV = my $f= shift; for (<>) {m[^#define\s+(\w+)\s+0x([\da-f]+)\b]i and $map->{$1}=$2}} print chr hex $map->{$F[0]}" keysym4utf16.h@format=txt oo > neo2ext2
	Switch the "new" Diacritic* subsystem to operate on all layers of the key at once.
	Add variant "KeepDups" to Diacritic* subsystem; now can (and do) scrap the "old" diacritic subsystem.
	Sane logic to specify mutually-reverse lists of diacritic recipies.
	Can define named portions of diacritic recipies.
	<any-FOO> may be qualified as <any-FOO-!BAR-!BAZ>.
	Support layer_recipes section.
	New key PartialFace in face descriptor to denote a purely-parent face.
	Start allowing migration of keys from a face section to parent sections (Diacritics_* and VK done).
	New mutators: calculated-small, calculated-mathematical, fake-white, fake-black.
	Diacritic2Self and sort_compositions: were not handling prefixing prefix keys as expected (did not affect EurKey++).
	New charlist currency.
	FlipShift was busted; fix by making it operate in all_layers mode.

	EurKey++:	Use new syntax for Diacritic recipies.
			No reversion in binding for grave.
			Add -!operator-!squared-!cirlced to any-calculated.
			Avoid duplication of companion faces in personalities via layer_recipes.
			Move up to the parents the shared keys (if possible).
			Minor cleanup.
			Add leftwards/rightwards to grave/acute.
			Add green keys to 3 and (part of) 4.
			Add digamma, stigma, kai (lc only), koppa, archaic koppa, sampi on Greek AltGr with w,t,K,c,z,x.
			Ring operator - added as a green key on AltGr-.
			Add currency map on AltGr-$ (based on bepo, wikipedia articles, and v6.1 currency section of UCD):
			  all except for ARABIC THAANA DEVANAGARI SINHALA letters and Squared Katakana are included.
			  Logic of assigning to letters: use the first letter of currency name, or (for versions of rupees) the first
			    letter of language/region, or (for rial/riel and yuan and cruzeiro) the second letter of the name.  If no
			    conflict appears, the symbol is duplicated with and without Shift; otherwise 7-bit $ sign,
			    regional versions of rupees and obsolete currencies are penalized (moved to AltGr-keys,
			    or Shift keys); if at least one of symbols on the same key is very similar to low-case/upper-case letter, 
			    then they are assigned due to this similarity, not penalty.  Yuan-1/yen/yen-CJK-1/yen-CJK-2
			    are put on Y, while yuan-1,yuan-2 are put on U (the order of variants is as in wikipedia).
			  All symbols are on letter keys; the symbol keys are all assigned the default ¤.
			  The only keys with two different symbols on AltGr are C,L,Y:  ¢₡₵₢, ლ£₤₶, 元¥円圓.
			  For completeness, we include all currency symbols, even if BENGALI MARKS make no sense without
			    a way to enter BENGALI digits/numerators/denominators (see http://std.dkuug.dk/jtc1/sc2/wg2/docs/n3311.pdf).
			Add business symbols to uc-AltGr of currency face (needed to massage it a little bit).
			Prohibit 〚〛	LEFT/RIGHT WHITE SQUARE BRACKET [Common; CJK Symbols and Punctuation; 1.1]  301a/301b.
			Adding underbar to ˆ˜ adds a little bit...
			Now that dashes are obscured by green keys, add them to AltGr on Greek; remove overrides from macron map.

0.07	Add recognition of APL symbols.
	Report coverage of math symbols in 22**, 27**, 29**, 2A** ranges.
	Leading whitespace in a layer recipe was not stripped.
	face_recipes section added (forced to 2 layers???) (do not put on `faces' since such "virtual" faces confuse the engine).
	Recognize INSULAR, VISIGOTHIC, MIDDLE-WELSH, ROTUNDA, BROKEN, and double-letter names as mutiliation.
	Add paleo as a mutator (now all pre-v5.1 paleo-latin letters compete).
	Add oldenglish (not OE!) to the charlists.
	Rename Diacritic* operators to use Mutate in the name.
	Start implementing NotId and NotSameKey.
	Allow auto-creation via `layers' entry of the face (either a recipe, or a key for layer_recipes).
	Allow auto-creation of layers in a personality via `face_recipes' (in presence of numLayers).
	   We do not deal with complicated dependencies of faces on each other - we do it linearly???
	Implement AltGrCharSubstitutionLayers, AltGrCharSubstitutionFaces (later unused).
	New mutator InheritPrefixKeys (complements NotId and NotSameKey to a useful form).
	Output html table (use background colors to distinguish "operator-like" and "ipa-like" homographs).
	New character list: double-accents
	  perl -I D:\ilya\ru-pho-keyboard\UI-KeyboardLayout\lib  -wC31 D:\ilya\ru-pho-keyboard\UI-KeyboardLayout\examples\grep_nameslist.pl "\bSMALL\b.*\b(AND\s+)?(\w+\s+)?(DIAERESIS|TILDE|GRAVE|BREVE|CARON|ACUTE|MACRON|CEDILLA|OGONEK|CIRCUMFLEX|RING|DOT|COMMA|HORN|HOOK|STROKE)(\s+\w+)?(?(1)| AND)\b" C:\Users\ilya\Downloads\NamesList.txt >double-accents1
	  perl -C31 -wne "print chr hex $1 if /^([\da-f]{4,}\b)/i" double-accents1 >double-accents

	EurKey++:	Move ®™℗℠© on AltGr-$ face to lc on the base layout (ls is as on all prior art: X11 US Intl/M$ US Intl/Bepo/UK Enchanced/EurKey/Birman's)
			Filter COLON SIGN ₡ out of AltGr-~/^.
			Green keys for 2 were significantly mixed up.
			Ano teleia put on Greek AltGr-; (since ; is occupied by ₋); Likewise for ∐∧⋀∅ on RlLF.
			Capital ß, ẞ, added as AltGr-~ AltGr-S; þÞ with stroke added to AltGr-^ prefix.
			Add paleo to hat/tilde pair, rotunda/doubleletter to ¨ (visigothic z conflicts with latinized alpha ɑⱭ).
			(Insular-g's, and doubleletters do not win the competition...).
			Add small and large ∨∧∅ to νλΦ (and capitalized variants).
			Temporarily (???) add insular to circled-face (and deprioritize circled characters).
				(This finishes access to pre-v5.1 paleolatin.)
			Add bullet on 6, ∈∋ on () as green keys.
			Add double-vline and double-addleft/right to AltGr-$.
			Add more tone bars (all except ꜎).
			Move most of green keys to AltGrCharSubstitutionLayers.
			Remove "cyrillic question mark from Russian-II (it had the same codepoint as semicolon!).
			Add extra chars from Copyright to Business; add KEYBOARD ⌨ to Q on both (finishes bepo coverage).
			ɚ to AltGr-0 on macron (where phonetize is).

	izKeys:		Split from EurKey++.
			Non-accented greek from http://help.keymandesktop.com/keyboards/keyboard_galaxiebiblescriptmnemonic/welcome-greek.htm
			  (Less bizzare correspondence to Latin, AND vowels are on different diagonals.)
			  (Without other changes, breaks latinized greek on AltGr-; .
			Dialytica i/u put on "empty" slots j/v.
			Define Russian, Russian_AltGr via layer_recipe.
			Unify Russian AltGr map	with Latin one as much as possible.
			Switch to logical layout of accented letters on AltGr-layer.
			Split AltGr-; into AltGr-; AltGr-, AltGr-"; swap ˆ˘.
			Remove © and ± faces.
			Implement BlueKeys.
			Pinyin without green keys (¨ on ü to insert ǚ).  (Any diaeresis+accent except ṻ ¯ü can be entered.)
			Make AltGr-; insert hook above (as the last resort).  Finishes Vietnamese input (but is it "logical"? ê is black and green...).
			Add double-grave and dot-above to AltGr-;.
				Currently ȽɾᴁᴙᶏᶒḄḚṂṚ‖′″ⁿ⊠⊦⌐⌙⧇⫴ꟽꟿ missing w.r.t. EurKey++.