UI-KeyboardLayout

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

	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.

examples/EurKey++.kbdd  view on Meta::CPAN

#				Default map (not used now???):
DeadKey_Map=		Mutate	Mutate2Self
#
# diaeresis 00a8: combine with cedilla 0327(00b8) and ogonek 0328, comma below 0326 (precombined only on SsTt)
# ogonek is reachable on AltGr layer...)
# cedilla: only E H unreachable on front layer  except for Ȩȩ Ee - and Hh would be unreachable with AltGr too because of Ǜ - which is typable as ¨Ù)
# (and Ȩȩ is not used in "known" languages - http://fr.wikipedia.org/wiki/E_caudata - alternative writing of æ
#   - moved to Copyright face)
# ẗ gets in the way of Ț and Ţ!		(Used in transliteration of Arabic and UPA; moved to copyright face - on AltGr-t...)
# Ǜ would get in the way of Ḩ (used WHERE?) - available elsewhere - but there it is also penalized... ; ,<any-symbol-diaeresis> does not add anything...   visigothic conflicts with greekized ɑⱭ
DeadKey_Map00a8=	Mutate[\\ẗ,\\Ǜ[h],\\⋅[;],00a8|0309+<subst-Vietnamese>,<reveal-greenkey>|<any-diaeresized>,0328,0327,0326|<any-comma>,<any-calculated-operator>|<any-overlay>+<any-addvline>,<any-overlay>+<any-addhline>,<any-overlay>+<any-addline>...
#     <any-comma> picks up digits with comma which are above 0xffff - better make it last
#
#  Combine macron=00af and stroke (AOUaou missing stroke...)  00ad=SOFT HYPHEN; <any-stroke> should pick up 0338; 20D2 (|) and 20E5 \ do not appear in decompositions...
# ⩉ masks combining macron
#DeadKey_Map00af=	ByPairs[4― 0‒ ”ə ¦00ad !‑ ¹ǃ]	Mutate[\\⩉,00af|<pseudo-stroke>,<any-bar>,<any-stroke>,<any-dash>,<any-overbar>,<any-topbar>,<any-diagonal>,<any-strikethrough>,<any-over-equal>,<any-solidus>,<any-equal>,<any-line>,<any-q...
DeadKey_Map00af=	ByPairs[”ɚ ¹ǃ]	Mutate[\\⩉,00af|<pseudo-stroke>,<any-bar>,<any-stroke>,<any-dash>,<any-overbar>,<any-topbar>,<any-diagonal>,<any-strikethrough>,<any-over-equal>,<any-solidus>,<any-equal>,<any-line>,<any-quill>,<any-base>,<any-u...
#
# ring above 00b0: combine with dotabove 307 dotbelow 323 
# (only WÊ miss dot below, AUY miss dot above: Ȧ is Livonian and phonetic; U is not precomposed; Ẉ - WHERE???) ; <any-jot> does not add anything useful now...
# Ẏ (useful WHERE???) obscures Vietnamese Ỵ, [any-dots does not add anything...]	ByPairs[‚⊗]

examples/izKeys.kbdd  view on Meta::CPAN

#				ĸ: ↹⇤ 0009⇥
+DeadKey_Map0138=	PrefixDocs[Greek (AltGr=tonos/final/symbol etc), Superscript digits/symbols, “Green Keys”]
+DeadKey_Map0138=	  Face(LGreekGreenMax)	Face(Add_Green1)  Face(Add_Fkeys_DashesEtc)	Shortcut(ModArrows)  X11symbol[dead_greek]
+DeadKey_Map0138=	  ByPairsFlat[˱⩽ ˲⩾ ⋮⪕ …⪖]	ByPairsInvFlat[˱⫹ ˲⫺ ⋮⪛ …⪜]
+DeadKey_Map0138=	HTML_classes[C,very-special,ϋϊ,C,special,αωεηυιο,C,may-guess,ϔϛϟϡɂ,C,need-learn,θψϝϙ∐,C1,may-guess,ϗ∨⋁∧⋀]
#
# diaeresis 00a8; 0309=hook above; ,<any-symbol-diaeresis> does not add anything...
+DeadKey_Map00a8=	PrefixDocs[Diaeresis, hook above [+subs-Vietnamese], “Blue Keys”, operators {AND: doubly-mogrified symbols, rotunda/squirrel/hook/curl, dot above+below, etc}]
+DeadKey_Map00a8=		ByPairs[,⪯ ¸⪵ .⪰ °⪶](Face(Latin))	
+DeadKey_Map00a8=	Mutate[\\∉∌,00a8|0309+<subst-Vietnamese>,<reveal-substkey>|0309|<any-calculated-operator>|
+DeadKey_Map00a8=		   <any-overlay>+<any-addvline>,<any-overlay>+<any-addhline>,<any-overlay>+<any-addline>,
+DeadKey_Map00a8=			<any-amplify>+<any-round>,<any-round>+<any-round>,<any-rotunda>,<any-squirrel>|
+DeadKey_Map00a8=		   <any-dot-above>+<any-dot-below>,<any-dot-above>+0301,<pseudo-stroke>+<any-diagonal-stroke>|
+DeadKey_Map00a8=		   <any-double-bar>,<pseudo-hook>,<pseudo-palatal-hook>|<pseudo-curl>,-<any-white>+<any-unsharpen>]	
+DeadKey_Map00a8=		Mutate2Self	Shortcut(ModArrows)	ByPairsFlat[˱≶ ˲≷ ⋮⪋ …⪌]	ByPairsInvFlat[˱⋚ ˲⋛ ⋮⪓ …⪔]
#
# 2f5 ˵ "middle" double grave.  <any-macron-below> gets WITH LINE BELOW, <any-circumflex-accent-below> gets WITH CIRCUMFLEX BELOW
+DeadKey_Map02f5=	PrefixDocs[Diaeresis, double-grave, double-struck capitals {AND: doubly-mogrified symbols, dot above symbols, dot+macron, stroke/swash, paleocontractions, etc}]
+DeadKey_Map02f5=	Mutate[\\ǘ,00a8|<font=double-struck>|<any-double-grave>|
+DeadKey_Map02f5=		<any-overlay>+<any-addvline>,<any-overlay>+<any-addhline>,<any-overlay>+<any-addline>,
+DeadKey_Map02f5=			<any-calculated>+<any-black>,<any-amplify>+<any-round>,<any-round>+<any-round>|
+DeadKey_Map02f5=		<any-adddottop>,<any-amplify>+<any-amplify>|
+DeadKey_Map02f5=		<any-dot-above>+<any-calculated>,<any-dot-above>+0304--00a8|0304+<any-dot-below>|
+DeadKey_Map02f5=		<any-diagonal-stroke>,<any-oblique-stroke>|
+DeadKey_Map02f5=		<any-swash>,<any-bar>+<any-paleocontraction>,<any-paleocontraction>,<any-diaeresized>--0301,
+DeadKey_Map02f5=			<any-reversed>+<any-fishhook>,<any-hook>+<any-greekize>--0301]
+DeadKey_Map02f5=	    ByPairs[p♠ P♣ ,⫇ ¸⫉ .⫈ °⫊](Face(Latin))  ByPairs[p♥ P♦ "0308](FlipLayers(Latin))	Mutate2Self	Shortcut(ModArrows)
+DeadKey_Map02f5=	    ByPairsFlat[˱⪽ ˲⪾ ⋮⫓ …⫔]	ByPairsInvFlat[˱⫃ ˲⫄ ⋮⫕ …⫖]
#
#  Combine macron=00af and stroke (AOUaou missing stroke...)  00ad=SOFT HYPHEN; <any-stroke> should pick up 0338; 20D2 (|) and 20E5 \ do not appear in decompositions...

lib/UI/KeyboardLayout.pm  view on Meta::CPAN

  ftp://www.x.org/pub/xorg/X11R7.5/doc/input/XKB-Enhancing.html			(what is caps:shift* ???)
  https://wiki.gentoo.org/wiki/Keyboard_layout_switching
  http://webkeys.platonix.co.il/about/use_xkb/#caps-key-types

  https://apt-browse.org/browse/debian/wheezy/main/all/xkb-data/2.5.1-3/file/usr/share/X11/xkb/symbols/keypad
  http://misc.openbsd.narkive.com/UK2Xlptl/shift-backspace-in-x
	NoSymbol (do not change; do not make array longer; if alphabetic, may be extended to width 2)
	  vs VoidSymbol (undefine; may actually extend the array.  Undocumented in xkbproto??? )
		compare with http://kotoistus.tksoft.com/linux/void_no_symbol-en.html

	  overlay1=<KO7> overlay2=<KO7>		How to switch to overlay: see compat/keypad
	  RadioGroup ???

Problems on X11:

  http://www.x.org/releases/X11R7.7/doc/kbproto/xkbproto.html			(definition of XKB protocol)
  http://www.x.org/releases/current/doc/kbproto/xkbproto.html

  http://web.archive.org/web/20050306001520/http://pascal.tsu.ru/en/xkb/

	Some features are removed in libxkbcommon, which is used by many toolkits now:



( run in 0.506 second using v1.01-cache-2.11-cpan-65fba6d93b7 )