[]
ExtraScanCodesWin=
COMPANYNAME=Ilya Zakharevich
+LAYOUTNAME=US·Int Grk=Ⓖ➡⇧␣=^ˡⒶˡ- Rus·ЯВЕ=Ⓡ➡Ⓐʳ␣=Ⓜ Hbr➡Ⓡ²=Ⓜ^ʳ- • k.ilyaz.org
+LAYOUTNAME=RUS·ЯВЕРТЫ Lat=Ⓖ➡⇧␣=^ˡⒶˡ- Grk=Ⓡ➡Ⓐʳ␣=Ⓜ Hbr➡Ⓡ²=Ⓜ^ʳ- • k.ilyaz.org
+LAYOUTNAME=Gr·ΘΩΕΡΤΨ↻[]\ Lat=Ⓖ➡⇧␣=^ˡⒶˡ Rus=Ⓡ➡Ⓐʳ␣=Ⓜ Hbr➡Ⓡ²=Ⓜ^ʳ •k.ilyaz.org
+LAYOUTNAME=Hebr·QWERTY Lat=Ⓖ➡⇧␣=^ˡⒶˡ- Grk=Ⓡ➡Ⓐʳ␣=Ⓜ Rus➡Ⓡ²=Ⓜ^ʳ- •k.ilyaz.org
COPYR_YEARS=2011-2017
@LOCALE_NAME=en-US,ru-RU,el-GR,he-IL
@LOCALE_ID=0409,0419,0408,040d
@DLLNAME=iz-la-4s,iz-ru-4s,iz-gr-p4,iz-hb-4s
SORT_ORDER_ID_=0000
@LANGUAGE_NAME=English (United States),Russian (Russia),Greek (Greece),Hebrew (Israel)
@LRM_RLM=,,,1
#
VERSION=0.73
# To shorted DLL, omit descriptions for double-compose sequences
WindowsEmitDeadkeyDescrREX=^(?!.*\bCompose\s+(Compose\b|(?!key)\S+))
#
OSX_ADD_VERSION=1
#
[Substitutions]
# Will be used when putting a second diacritic: (as <subst-Vietnamese>)
@Vietnamese=åă,àâ,èê,òô,øơ,bư
@Macron=øō
@Zuang_tones=2ƨ,3з,4ч,5ƽ,6ƅ,@Ƨ,#З,$Ч,%Ƽ,^Ƅ
@Cardinal=a.2135,b.2136,g.2137,d.2138
@extra_phonetic=lɬ,Lɮ
# On the number row above the key:
@extra_greek=1ϑ,!ϴ,2ς,3ϵ,4ϕ,5ϱ,6ϝ,^Ϝ,8ϰ,0ϖ,-∂,_∇,'∂,"∇,7ȷ,*ı
#'
[DEADKEYS]
#
# Can be omitted now (actually, it should better be omitted since we use PrefixDocs now)
#
####0020=SPACE
#
[visual -> KBD/B/C/D]
#
visual_rowcount=5
@visual_per_row_counts=4,4,4,4,2
visual_prefixes= * ?
in_key_separator=/
in_key_separator2=‼
prefix_repeat=3
# Greek-AltGr-Junk has only one element: 1d11e
@layer_names=Green,Green-AltGr,Greek,Greek-AltGr-Junk
@layer_names=Blue,Blue-AltGr,Cyrillic-Extra,Cyrillic-ExtraExtra
@layer_names=US-Base,USLatin-AltGr,Ripe,Ripe-AltGr
@layer_names=Russian-Base,Cyrillic-AltGr,Cyrillic-II,Cyrillic-II-AltGr
@layer_names=Hebrew-Base,Hebrew-AltGr
# 20: access KP_Decimal and KP_Extra_Slash_on_Left on offsets 20,21
@keyline_offsets=0,1,1,1,20
#
# Perl 5.8.8 does not recognize ҇ as a combining character...
--/⋱≀ --∣/∤∁ --≈/∃∀ --⧣/∛∄ --€/∜⨋ --◌/☆★ --£/⨊ --¶/⨄⨃ --⊠/∞⧆ --/‟‛ --/◌⧇ --–/∓± --
-- ⊤⊥/≠⟂/ꙩ/ꚑ ∫∮/∭∥/ꙫ/ꙭ ⊲⊳/⊣⊢/ꙮ □◇/△▽/ꚉ •⋈/⨯⋆/ꙛ ∨∧ ∪∩//ꙅ ≐×/≃/ԑ/--꙳ --∈//ꙉ ∅∋//ꙃ/ꙁ --//ҹ --//ӌ
*** `~/ˋ˜ 1!/¬¡ 2@/ºª 3#/·№ 4$/¢£ 5%/€¥ 6^/ˇˆ 7&/√§/--❧ 8*/„‚ 9(/“‘ 0)/”’ -_/¯—/--― =+/≈±
ю//ѫ/ѭ --/₽ ҄ --/ ҆ ҇ --ё --Ё --ъ/--€ --Ъ/-- ҃//-- ҄ --/// ꙽ꙿ --//-- ҅ --///ҁ --/// ꙼꙾ --//ҽ/ҿ ч//ҷ/ӵ
??? --/ ֙ ֘ --/ ִ ֮ --/ ֵ ְ --/ ֶ– --/ ָ --/ ֱ€ --/ ֳ --/ ׇ --/ ַ ͏ --/ ֻ --/ ֲ --/־— --/ ְ﬩
#
--//θ --//ω --//ε --//ρ --//τ --//ψ --//υ --//ι --//ο --//π -- -- --/◊⧫
-- --//ꚍ --//ӗ --//ԕ --//ꚋ --//ꙑ --//ꙕ --//ӊ -- --//ꚏ --//ꚅ --//ꚗ --//ӭ
*** q/ä w/á e/ê r/å t/þ y/ÿ u/ü i/ij o/œ p/ø [{/«‹//⧢⋔ ]}/»›// \|/¦†
я/ѣ/ѧ/ѩ в/ѵ/ꙍ/ԝ е/ё/ө/ӫ р/ԗ/ѽ/ҏ т/ћ/ҭ/ԏ ы/і/ү/ұ у/ў/ӯ/ӱ и/ѷ/ӣ/ӥ о/ѡ/ѻ/ѿ п/ѱ/ԥԤ/ҧ ш//ԧԦ/ѐ щ//ꚇ/ѝ э//ѥ/ӧ
??? ק ֲ/ ֨ ֬ ששׁ/ ׁ ֓ ע ֵ/ ֶ ֱ ר ֱ/ ֿ ֗ תט/ ֩ ֠ י ּ/ײַײ טוּ/ ֻױ י ִ/יִ ֬ ווֹ/ ֹ ָ פף/ ֡ ֟ --/׆ ֩ --/ ֘ ֠ --/ ֖׀
#
--//α --//σ --//δ --//φ --//γ --//η --//ϊ --//κ --//λ --∶ ∂∇/′″
--//ԙ --//ꚃ --//ӡ -- --//ӿ --//ҩ --///ꙇ --//ӄ --//ԉ --//ԟ/ҝ --//ꚓ/ꚕ
*** a/æ s/ßẞ d/ð f/è g/ý h/ú j/í k/ó l/ö ;:/¨÷ '"/´˵/′″
а/ә/ꙗ/ӓ с/ѕ/ҫ/ԍ д/ђ/ӟ/ԁ ф/ѳ/ғ/ӻ г/ґ/ӷ/ҕ х/һ/ҳ/ӽ й/ї/ҋ/ӑ к/қ/ҡ/ҟ л/љ/ӆ/ԓ --//ӹ/ӳ --/ ́´/ ̀ ̀/ ́ ́
??? א ָ/ ַ ֲ סשׂ/ ׂ ֒ ד ֶ/ ְ ֧ פף/פּףּ ג״/׳ ֞ הח/ ֢ ֜ ח ֻ/ ﬞ ֝ כך/ ֦ ֫ ל ֹ/ ׇ ֳ --/ ֛ ֔ --/׳״
#"
--//ζ --//χ --//ξ --//ϋ --//β --//ν --//μ ‼2009—2009/--‼200a—200a ·/--‼1d121.1d121 ⁄/⋰//1d11e
-- -- --//ꙡ --//ԃ -- --//ӈ --//ꙧ ≲//ԇ/ԅ ≳//ꙝ/ꙙ …≟//ꙓ/ҍ
*** z/à x/é c/ç v/ì b/ù n/ñ m/ò ,</¸≤ .>/°≥/… /?/0338¿/÷�
з/є/ҙ/ѯ ь/ъ/ӛ/ӕ ц/џ/ҵ/ќ ж/ӂ/җ/ӝ б/ѓ/ꙋ/ѹ н/њ/ң/ҥ м/ӎ/ꙟ/ԣ --/«/⁘⁙/ԋ --/»/·։/჻⁖ --/ј/ԛ/ꙏ
??? ז ַ/ ֮ ֕ כך/כּךּ צץ/ ֯ ׄ ו ְ/ ֺװ ב₪/בּ ֪ נן/׆ ֦ מם/ ֽ ֣ --/ ֑ ֤ --/׃ ֚ --/ ֥ ׅ
-- --
-- --
*** \|/¶❧ ./,
ъЪ/ӏӀ --
??? ֿ ׇ --
#
# Earlier versions had: б/ѹ (now г overflows down as ...); 7&/ ҅ ҆ /?/§” 2@/²³
# ԥԤ ԧԦ must be specified both lc/uc since perl 5.10 does not upcases them automatically (v6.0)
# On Cyrillic-II-maps: forms with ¨, iotified, latinized forms, forms with more developped appendages, or appendages
# more to the right, or higher, are on AltGr prefix. (Same for almost-unrelated letters placed
# opportunistically. (Many are inverted w.r.t. Unicode versions! Later reason in the list wins.)
#
# Ԡ Ԕ - missing. Stressed: ѐ ѝ (have them).
#
#Non-obvious: '"/́´/ӹ/ӳ я/ѣ/ѧ/ѩ б/ѓ/ѹ/ѽ д/ђ/ӟ/ԁ й/ї/ҋ/ӑ ь/ъ/ӛ/ӕ ф/ѳ/ғ/Ӻ м/Ω±/ӎ/ꙟ ш//ԧ/ѐ щ//ꚇ/ѝ з/є/ҙ/ѯ ц/џ/ҵ/ќ
# р/ ҄®/ꙋ ,</«„/⁘⁙ .>/»“/·։/჻⁖ /?/ј/; + 6789
# Coppa is on AltGr since 1/9 fraction pushes it there...
#
[layer_recipes]
#CopyRight_0= Id(CopyRight) MutateDupsOK[0327](SelectRX[[eE]](US-Base)) ByPairs[$¤ ,¸ qĸ ËƏ ëə "〃 -∓](US-Base)
#CopyRight_1= Id(CopyRight-AltGr) MutateDupsOK[00a8](SelectRX[[t]](US-Base)) ByPairs[EƏ eə](US-Base)
#
#Math_PlusPlus= Id(Math) ByPairs['′ "″]
#
# 0301 over Greek letters=tonos; 0308=dialytika '
Greek_and_More_0= Id(Greek) ByPairs[?; ;·](US-Base)
+Greek_and_More_1= MutateDupsOK[\\ꭓꞳ,0301|<any-calculated-symbol>|<any-calculated-final>|<any-lunate-symbol>|<any-latinize>|
+Greek_and_More_1= <any-quasisynon>,<any-amplify>](Greek)
+Greek_and_More_1= ByPairs[YϜ yϝ TϚ tϛ Kϗ XϠ xϡ CϘ cϙ ZϞ zϟ ;· R∐ l∧ L⋀ n∨ N⋁ F∅ ?Ɂ /ɂ](US-Base)
#
Dashes_Bars= ByPairs[1‐ 2– 3— 4― 0‒](US-Base) ShiftFromTo[5,˥](SelectRX[[5-9]](US-Base))
# <pseudo-calculated-sign> is needed for -
Subs_Dashes_0= MutateDupsOK[<sub>,<sub>+<pseudo-calculated-sign>](SelectRX[[0-9\-()+=]]) FlipShift(Dashes_Bars) ByPairs[|00ad](US-Base)
More_Dashes_1= ShiftFromTo[5,꜒](SelectRX[[5-9]](US-Base)) ShiftFromTo[5,꜍](SelectRX[[5-9]](FlipShift(US-Base))) ByPairs[1‑ -⁃ _‾](US-Base) MutateDupsOK[<sub>](SelectRX[[+=]](US-Base))
# This stores in unshifted positions of layer 0 (ρ takes YPOGEGRAMMENI 0345):
Greek_vowels_lc= ByColumns[ρ,α,ω,ε,,,η,υ,ι,ο]
Greek_vowels= Id(Greek_vowels_lc) uc(FlipShift(Greek_vowels_lc))
Greek_vowels_AltGr= MutateDupsOK[0345|0308](Layers(Empty+Greek_vowels)) ByPairs[.0020 l.0020 o.0020 9.0020](US-Base)
#
BusinessA_0= Imported[business,00a4](US-Base)
BusinessA_1= Imported[business,00a3](US-Base)
BusinessAdd_0= ByPairs[qĸ Q⌨ ZƏ zə oơ OƠ uư UƯ '′ "″ ;‵ :‶ -∓ [〈 ]〉 {◄ }► /℅ jƺ](US-Base) DefinedTo[¤](SelectRX[[^\da-zA-Z]](US-Base))
+BusinessAdd_1= ByPairs[ZƎ zǝ Oɶ o℅ '‴ "⁗ ;‷ :‱ [◃ {◂ ]▹ }▸ Aᴁ 2ƻ f♀ F⚢ m♂ M⚣ a⚤ ?ʢ e℮ wfi Wfl h⌂ jʓ Q⌠ q⌡](US-Base)
+BusinessAdd_1= DefinedTo[¤](SelectRX[[^\da-zA-Z]](US-Base))
#"
cp437_Start= FromTo[Digits,cp437-Start](FlipShift(Face(Latin))) ByPairs[_☼](Face(Latin)) ByPairs[-♪ _♫](FlipLayers(Latin))
#
+Add_AltGr= AssignTo[NUMPAD,16](Id(BoxDraw11)) AssignTo[FKEYS,12](Id(DashesEtc) FlipShift(FractionEmSpacesEtc))
+Add_AltGr= ByPairsPrefix[↑06f7 ↓06f6 →06f5 ←06f4](AssignTo[ARROWS,16](Id(Arrows)))
#
Add_Base= ByPairs[÷÷ ×× ‒‒ ﬩∑](AssignTo[ARROWS,16](FlipShift(Arrows)))
#
Greek_w_Symbols_on_Digit_Row= Id(Greek) Mutate[<subst-extra_greek>](Face(Latin))
#
US_Base_Compose= ByPairsPrefix[ӏ.06f0 Ӏ.00a0](Id(Cyrillic-AltGr)) Id(US-Base)
#
#@layer_names=Base-Keypad,BoxDraw11,BoxDraw22,BoxDraw12,BoxDraw21,BoxDrawBB,BoxDraw1B,BoxDrawB1,BBoxDrawOnH,BBoxDrawOnV,BBoxDrawOnHV,BoxDrawOnBV,BoxDrawOnBH
#@layer_names=Arrows,Arrows2,ArrowsBlack,ArrowsPlay,ArrowsWhite,Arrows3,HookArrows,ArrowsZigZag,ArrowsMapsTo,ArrowsToBar
#@layer_names=ArrowsDashedCurved,ArrowsArcs,WhiteFrame,BlackFrame,Arrows4andCircles,ArrowsShortArcs,RectArr,RectArrOther,PartCircles,PartBlackCircles,ArrowsDtip,ArrowsDoubled
#@layer_names=WhiteTriang,WhiteTriangSmall,BlackTrian,BlackTrianSmall,RoundDirections,RoundDirectionsPlus,PartSquares,Arcs,ArrowsVStroke,ArrowDStroked,CrossedArrows,ArrowAngles
#
MenuArrows= AssignTo[ARROWS,16](Id(Arrows²))
#
[face_recipes]
# ∦ obscures ⦀
+VLine= Mutate[\\∦[\],20d2,20d3,<any-addvline>,20e6,<any-vertical>,<any-stem>|
+VLine= <any-calculated-operator>,0338+<any-manual>,20d2+<any-manual>,20d3+<any-manual>|
+VLine= <any-addvline>+<any-addvline>,<any-addleft>+<any-addleft>,<any-addright>+<any-addright>](Face(Latin))
+Business= Layers(BusinessA_0+BusinessA_1) Face(VLine) Layers(BusinessAdd_0+BusinessAdd_1)
+Business= Face(SpecialKey_Symbols)
+Business= ByPairs[0020␢ xꙣ XꙢ vꚁ VꚀ](FlipLayers(Latin)) ByPairs[xꙥ XꙤ vԡ VԠ](Face(Latin)) ByPairs[0192␢]
#
+Greek__Prefix= ByPairsPrefix[\0342 [0314 ]0313 `03e2](Face(Latin)) ByPairsInvPrefix[|0342 {0314 }0313 ~03e2](Face(Latin))
#
+Greek__Letters= Layers(Greek_and_More_0+Greek_and_More_1) Face(Greek__Prefix) ByPairs[Vϔ](FlipLayers(Latin))
#
CyrillicRipe= NotSameKey(Face(Latin) Face(CyrillicPhonetic) Layers(Ripe+Ripe-AltGr)) Layers(Subs_Dashes_0+More_Dashes_1)
CyrillicRipeMax= ByPairs[˵〃](Face(Latin)) Face(CyrillicRipe) Face(CyrillicPhonetic)
#
GCyrillicRipe= NotSameKey(FullFace(GreekPoly) Face(CyrillicPhonetic) Layers(Subs_Dashes_0+More_Dashes_1) Layers(Ripe+Ripe-AltGr) Layers(Green+Green-AltGr))
GCyrillicRipeMax= ByPairs[˵〃](Face(Latin)) Face(GCyrillicRipe) Face(CyrillicPhonetic)
#
Hebrew= Layers(Hebrew-Base+Hebrew-AltGr)
+MathBlue= Mutate[\ℯℹℎ,\\Ɡ,<reveal-substkey>|<font=double-struck>+uc|<font=double-struck>|<subst-Cardinal>|<pseudo-stroke>+<any-font>,<any-font>|<any-script>|<any-calculated-operator>|\\ªº,<super>+dectrl](Face(Latin))
+MathBlue= ByPairs[<⟨ >⟩ =≃](Face(Latin))
+MathBlue= Mutate[<any-phonetize0>|<any-phonetized>,<any-phonetize3>,<any-phonetize2>](Mutate[lc+dectrl|dectrl](FullFlipLayers(Latin)))
+MathBlue= Mutate[<super>+dectrl|<any-phonetize>|<any-phonetize2>,<any-phonetize3>--0301|<any-whiten>|<any-amplify>](FullFace(Latin))
+MathBlue= Mutate[<font=double-struck>|<font=double-struck>+<any-amplify>](Layers(Greek+Empty)) ByPairs[ýℊ ÝꞬ fƒ](Face(Latin))
#
+LGreekGreen= NotSameKey(Face(Latin) Face(Greek__Letters) Layers(Green+Green-AltGr))
+LGreekGreen= MutateDupsOK[<super>,<super>+<pseudo-calculated-sign>](SelectRX[[-0-9()+=]|-])
LGreekGreenMax= Face(LGreekGreen) Face(Greek__Letters)
#
+CGreekGreen= NotSameKey(Face(CyrillicPhonetic) Face(Greek__Letters) Layers(Green+Green-AltGr))
+CGreekGreen= MutateDupsOK[<super>,<super>+<pseudo-calculated-sign>](SelectRX[[-0-9()+=]|-])
CGreekGreenMax= Face(CGreekGreen) Face(Greek__Letters)
#
+CGreekRipe= NotSameKey(FullFace(CyrillicPhonetic) Face(Greek__Letters) Layers(Subs_Dashes_0+More_Dashes_1) Layers(Ripe+Ripe-AltGr) Layers(Green+Green-AltGr))
+CGreekRipe= MutateDupsOK[<sub>](SelectRX[[0-9]])
CGreekRipeMax= Face(CGreekRipe) Face(Greek__Letters)
#
+HGreekRipe= NotSameKey(Face(Hebrew) Face(Greek__Letters) Layers(Subs_Dashes_0+More_Dashes_1) Layers(Ripe+Ripe-AltGr) Layers(Green+Green-AltGr))
+HGreekRipe= MutateDupsOK[<sub>](SelectRX[[0-9]])
HGreekRipeMax= Face(HGreekRipe) Face(Greek__Letters)
#
+CLatinGreen= NotSameKey(FullFace(CyrillicPhonetic) Face(Latin) Layers(Green+Green-AltGr))
+CLatinGreen= MutateDupsOK[<super>,<super>+<pseudo-calculated-sign>](SelectRX[[-0-9()+=]|-])
CLatinGreenMax= Face(CLatinGreen) Face(Latin)
#
LatinRipe= NotSameKey(Face(CyrillicPhonetic) Face(Latin) Layers(Subs_Dashes_0+More_Dashes_1) Layers(Ripe+Ripe-AltGr))
LatinRipeMax= Face(LatinRipe) Face(Latin)
#
+HLatinGreen= NotSameKey(Face(Hebrew) Face(Latin) Layers(Green+Green-AltGr))
+HLatinGreen= MutateDupsOK[<super>,<super>+<pseudo-calculated-sign>](SelectRX[[-0-9()+=]|-])
HLatinGreenMax= Face(HLatinGreen) Face(Latin)
#
+GLatinGreen= NotSameKey(FullFace(GreekPoly) Face(Latin) Layers(Green+Green-AltGr))
+GLatinGreen= MutateDupsOK[<super>,<super>+<pseudo-calculated-sign>](SelectRX[[-0-9()+=]|-])
GLatinGreenMax= Face(GLatinGreen) Face(Latin)
#
Greek_Vowels= Layers(Greek_vowels+Greek_vowels_AltGr)
# PERISPOMENI=0342=circumflex=(visually)tilde [SpaceOK not needed, since it checks the BASE character of a key] [varia does not decompose into SPACE+combining, but into `]
+Greek_Vowels0= ByRows[ MutateDupsOK[0342] /// MutateDupsOK[0301] /// Id /// MutateDupsOK[0300] ](Face(Greek_Vowels))
+Greek_Vowels0= ByPairs[`ρ ~Ρ](Face(Latin)) ByPairs[.`](Layers(Empty+US-Base))
# plain -> 0306 vrachy; -> 0304 macron (in poetry: disambiguate short and long: http://www.tlg.uci.edu/~opoudjis/unicode/unicode_gkbkgd.html)
# They are used (almost always in teaching or dictionaries) to disambiguate the three vowels which might be long or short: alpha, iota, and upsilon.
Greek_Vowels0_with_Vrachi= ByRows[ Empty /// Empty /// MutateDupsOK[0306] /// Empty ](Face(Greek_Vowels))
Greek_Vowels0_with_Macron= ByRows[ Empty /// Empty /// MutateDupsOK[0304] /// Empty ](Face(Greek_Vowels))
# 000d↲ PageUp ⎗ PageDn ⎘
SpecialKey_Images= ByPairs[ 000a 000d⏎ 0009↹ 001b⇤ 001d⇥ 001c␀ 0008⌫ 007f⌦ 0003␥ 001a␦ 001f↨]
SpecialKey_Symbols= ShiftFromTo[0001,2401](SelectRX[[\x00-\x20]]) ByPairs[␡]
SpecialKey_Images2= ByPairs[000d↲ 000a⤶ 0008⎌ 001b⎗ 001d⎘ 007f⌧ 0003⎚]
#
+Add_Green1= Mutate[\ªº,<super>+lc+dectrl] ByPairs[0020␣ 0192⍽] Mutate[<super>+dectrl](FullFlipLayers(Latin))
##+Add_Green1= AssignTo[FKEYS,12](Id(DashesEtc) FlipShift(FractionEmSpacesEtc))
##+Add_Green1= AssignTo[ARROWS,16](Id(Arrows) FlipShift(Arrows2))
##+Add_Green1= AssignTo[NUMPAD,16](Id(BoxDraw11))
+Add_Ripe1= Mutate[<sub>+lc+dectrl|<sub>+dectrl] ByPairs[0020.00a0 0138.202f]
+Add_Ripe1= Mutate[<pseudo-smallcaps>+dectrl|<any-smallcaps>+dectrl|<sub>+dectrl](FullFlipLayers(Latin))
#
+Add_Menu= AssignTo[ARROWS,16](Id(Arrows²)) AssignTo[NUMPAD,16](Id(BoxDrawBB))
+Add_Menu= AssignTo[FKEYS,12](ByPairsPrefix[=06f0](SubExtraLetters))
+Add_Menu= AssignTo[FKEYS,12](ByPairsPrefix[=06e8](FlipShift(SubExtraLetters)))
#
Add_Ripe3= ByPairs[0020.2009 0138.200a] Face(SpecialKey_Images2)
# ByPairsPrefixFlat[0297.0483]
# Some of subize/superize duplicate the AltGr version of pseudo-fake; should be put in front
SupersPhonetic= Mutate[\ªº,<super>,<super>+<pseudo-calculated-sign>|<any-superize>,<pseudo-fake-super>|<super>+<any-greekize>,<any-phonetize0>,<any-phonetized>,<any-stretched>|<any-phonetize2>|<any-phonetize3>|<subst-extra_phonetic>](Face(Latin))
SubsSmallCapsLegs= Mutate[\﹏,<sub>,<sub>+<pseudo-calculated-sign>|<any-subize>,<pseudo-fake-sub>|<sub>+<any-greekize>,<any-subize2>|<pseudo-smallcaps>|<any-smallcaps>|<any-tail>,<any-curl>,<any-leg>](Face(Latin)) ByPairs[oꭥ](FlipLayers(Latin))
#SmallCaps= Mutate[<pseudo-smallcaps>|<any-smallcaps>](Face(Latin))
RotatedsHooks= Mutate[\\ᴙᴚ,<any-manual-turnaround>|<any-inverted-!breve-!lazy>,<any-sideways>,<any-inverted>+<any-phonetized>,<any-dot>+<any-reversed>,<any-reversed>,<any-turned>|<any-retroflex-hook>,<any-right-hook>|<any-hook-!palatal-!left>|<any-tail>|<any-palatal-hook>|<any-left-hook>|<any-inverted-breve>](Face(Latin))
LeftHooks= Mutate[<any-left-hook>|<pseudo-hook>|<any-palatal-hook>](Face(Latin))
#
+LongStrings= FromTo[US-Base,Greek-AltGr-Junk](SelectRX[[,/<>:]](Face(Latin)))
+LongStrings= FromTo[US-Base,Green](SelectRX[[,/<>:]](Face(Latin)))
+LongStrings= FromTo[US-Base,Green-AltGr](SelectRX[[,/<>:]](Face(Latin)))
#
Base_Base= Id(US-Base)
#
+CopticDigits= ShiftFromTo[1,102E1](SelectRX[[0-9]]) ShiftFromTo[1,102EA](SelectRX[[0-9]](FlipShift))
+CopticDigits= AssignTo[FKEYS,12](ShiftFromTo[1,102F3](SelectRX[[1-9]](Id(Digits))) ByPairs[0.102E0](Id(Digits)))
#
+ModArrows= IfPrefix[ˆ](AssignTo[ARROWS,16](Layers(ArrowsBlack²+WhiteFrame²)))
+ModArrows= IfPrefix[˜](AssignTo[ARROWS,16](Layers(HookArrows²+RoundDirections²)))
+ModArrows= IfPrefix[Ɯ](AssignTo[ARROWS,16](Layers(ArrowsWhite²+PartCircles²)))
+ModArrows= IfPrefix[£](AssignTo[ARROWS,16](Layers(ArrowsMapsTo²+ArrowsDtip²)))
+ModArrows= IfPrefix[°](AssignTo[ARROWS,16](Layers(ArrowsDashedCurved²+Arrows4andCircles²)))
+ModArrows= IfPrefix[̸](AssignTo[ARROWS,16](Face(ArrowsVStroke⁴))) IfPrefix[ˋ](AssignTo[ARROWS,16](Face(RectArr₄)))
+ModArrows= IfPrefix[¸](AssignTo[ARROWS,16](Face(ArrowsVStroke⁴))) IfPrefix[´](AssignTo[ARROWS,16](Face(WhiteTriang⁴)))
#
Prefix_Base_AlternFace= Layers(MenuArrows+Empty)
#
[faces]
# Create DeadKey maps basing on (massaged!) visual descriptions:
# koronis obscures 0313 psili; breve obscures 0342 perispomeni
+DeadKey_Map0342= PrefixDocs[Polytonic greek Vowels by vowel-key-column, Rows=Circumflex/Acute/None-or-Vrachi-Macron/Grave, AltGr=iotization {AND: Zodiak, etc}]
+DeadKey_Map0342= HTML_classes[k=polyBase,to_w,j,k=polyBase,from_w,sl,C,need-learn,ᾰῠῐᾱῡῑ΄΅ϵϼ͵ʹ᾽ͺιϱ]
+DeadKey_Map0342= ByPairs[~⛎](Face(Latin)) ByPairs[lͺ Lι 0028῁ O΅ >῭ 3΄ #΅](FlipLayers(Latin))
+DeadKey_Map0342= Face(Greek_Vowels0_with_Vrachi)
+DeadKey_Map0342= FromTo[US-Base,Face(Greek_Vowels0_with_Macron)](ByPairs[sa SA hj HJ lk LK](US-Base))
+DeadKey_Map0342= Mutate[\\ϔ,<any-stroke-symbol>+<pseudo-calculated-symbol>|
+DeadKey_Map0342= <pseudo-upgrade>](Face(Greek_Vowels0))
+DeadKey_Map0342= Face(Greek_Vowels0) FromTo[Digits,Zodiak](FlipShift(Face(Latin)))
+DeadKey_Map0342= FromTo[SubExtraLetters,Zodiak](FlipShift(Face(Latin))) ByPairs[3͵ #ʹ](Face(Latin))
+DeadKey_Map0342= Mutate[<any-greekize>+dectrl](FullFlipLayers(Latin)) Mutate[<any-greekize>+lc+dectrl](FullFace(Latin))
# some capital characters exist with aspiration, but not without; hence the play with uc (and uc may give something like ὮΙ) [varia needs to be special cased - it decomposes into `)
# We repeat the Shift-inverted ByPairs[#͵ 3ʹ](Face(Latin)) only to fight access from CyrillicPhonetic (remember ъЪёЁ)
+DeadKey_Map0313= PrefixDocs[Polytonic greek Vowels with smooth aspiration by vowel-key-column, Rows=Circumflex/Acute/None/Grave, AltGr=iotization; +etc]
+DeadKey_Map0313= HTML_classes[C,need-learn,᾽]
+DeadKey_Map0313= ByPairs[L᾽](FlipLayers(Latin)) Mutate[\\᾽,0313](Face(Greek_Vowels0))
+DeadKey_Map0313= Mutate[ucfirst+0313](FlipShift(Face(Greek_Vowels0))) ByPairs[.῍](Layers(Empty+US-Base))
+DeadKey_Map0313= ByPairs[3͵ #ʹ](Face(Latin))
+DeadKey_Map0313= Mutate[<sub>,<any-underbarapl>,<any-underbarapl>+uc](FromTo[US-Base,Greek](Mutate[lc+dectrl](FullFace(Latin))))
+DeadKey_Map0313= Mutate[<super>+<any-greekize>+lc+dectrl](FullFlipLayers(Latin))
#
+DeadKey_Map0314= PrefixDocs[Polytonic greek Vowels with rough aspiration by vowel-key-column, Rows=Circumflex/Acute/None/Grave, AltGr=iotization; +etc]
+DeadKey_Map0314= HTML_classes[C,need-learn,͵ʹ]
+DeadKey_Map0314= Mutate[0314](Face(Greek_Vowels0)) Mutate[ucfirst+0314](FlipShift(Face(Greek_Vowels0)))
+DeadKey_Map0314= ByPairs[.῝](Layers(Empty+US-Base)) ByPairs[#͵ 3ʹ](Face(Latin))
+DeadKey_Map0314= Mutate[\\⍸,<super>,<any-apl>](FromTo[US-Base,Greek](Mutate[lc+dectrl](FullFace(Latin)) Mutate[dectrl](FullFlipLayers(Latin))))
+DeadKey_Map0314= Mutate[<super>+<any-greekize>+lc+dectrl](FullFlipLayers(Latin))
#
+DeadKey_Map03e2= PrefixDocs[Coptic, Archaic Greek, Stroked/Latinized Greek {AND: dashes, cp437 “control-graphic”, Zuang tones}]
+DeadKey_Map03e2= Mutate[<any-greek2coptic>|<any-greek2coptic>+<any-archaic>|<any-stroke>+<any-latinize>](Layers(Greek+Greek_and_More_1))
+DeadKey_Map03e2= Mutate[<any-latin2extracoptic>](ByPairs[jj JJ vf VF --](Face(Latin))
+DeadKey_Map03e2= ByPairs[dt DT kx KX](FlipLayers(Latin)) FlipLayers(Latin))
+DeadKey_Map03e2= ByPairs[BϷ bϸ !Ͱ 1ͱ jϳ JͿ GͶ gͷ MϺ mϻ Uϒ NͲ nͳ vϲ VϹ oͻ OϽ e϶ QϏ qϗ rͽ RϿ yͼ YϾ w℧ WΩ lƛ](FlipLayers(Latin))
+DeadKey_Map03e2= Layers(Dashes_Bars+Empty) Id(cp437_Start) Mutate[<subst-Zuang_tones>](FlipLayers(Latin))
+DeadKey_Map03e2= HTML_classes[C,special,ⲇⲕϒ,C,very-special,ϸͷϻΩ϶ᵼᵿƛ,C,may-guess,ͱϫϥ,C,need-learn,ϲͻͽͼͳ℧ϗ♫♪]
+DeadKey_Map03e2= Mutate[<circle>+lc+dectrl] Shortcut(ModArrows)
#
+DeadKey_Map00a3= PrefixDocs[Currencies, horn, add-vertical-line(s) {AND: double addleft/addright, “text” control-key symbols, etc}]
+DeadKey_Map00a3= HTML_classes[k=businessAlt,from_w,u,C,special,©®℠™℗℅℮‱,C,very-special,ĸươəǝ,C,need-learn,៛﷼ԡꙣꙥꚁ,C1,need-learn,元圆]
+DeadKey_Map00a3= ByPairs[££] Face(Business) Shortcut(ModArrows)
#
+DeadKey_Map012e= PrefixDocs[Hebrew {AND: iconic control-key symbols}]
+DeadKey_Map012e= Face(Hebrew) Face(SpecialKey_Images) ByPairs[0020.2009 0138.200a] Shortcut(ModArrows)
# Having AÅ KK contradicts Unicode recommendations
+DeadKey_Map019c= PrefixDocs[MathBlue (“Blue keys” and common math flavors of letter)]
+DeadKey_Map019c= ByPairs[0020␠ 0192␢ '⸣ `⸢ ´⸥ ˋ⸤ "〃 02f5⎖ :⫶ ÷⦂ \∖ -− _―] HTML_classes[C,special,∼∗⧵⋅−⫶⟨⟩≪≫≃,C,very-special,∖﬩ℏ―⎖〃,C,need-learn,ℎℽ]
+DeadKey_Map019c= ByPairs[0020␢ \⧵ pℼ Pℿ qℎ c℃ f℉](FlipLayers(Latin)) ByPairs[0020␠ yℽ Yℾ](Face(Latin)) Face(MathBlue)
+DeadKey_Map019c= Shortcut(ModArrows)
# '
# It is a terrible hack to make them into deadkeys; all we want is to have them in output_layers
+DeadKey_Map06ff= PrefixDocs[delivers Fraktur to an extra layer] AssignTo[ARROWS,16](Id(ArrowsMapsTo²))
+DeadKey_Map06ff= Mutate32OK[<font=fraktur>](Face(Latin)) AssignTo[NUMPAD,16](Id(BoxDraw21))
#
+DeadKey_Map06fe= PrefixDocs[delivers Double-Struck to an extra layer]
+DeadKey_Map06fe= Mutate32OK[<font=double-struck>|<any-whiten>](Face(Latin)) AssignTo[NUMPAD,16](Id(BoxDraw12))
+DeadKey_Map06fe= Face(LongStrings) AssignTo[ARROWS,16](Id(ArrowsWhite²))
#
# /𐆋 ?𐆌 +𐆠: Greek ¼, sinusoid, tau-rho
+DeadKey_Map06fd= PrefixDocs[delivers Script to an extra layer] AssignTo[NUMPAD,16](Id(BoxDraw22)) Face(CopticDigits)
+DeadKey_Map06fd= Mutate32OK[\\ℓ,<font=script>|<any-script>](Face(Latin)) ByPairsPrefix[:0297](Face(Latin))
+DeadKey_Map06fd= ByPairs[/𐆋 ?𐆌 +𐆠](Face(Latin)) Face(LongStrings) AssignTo[ARROWS,16](Id(HookArrows²))
+DeadKey_Map06fd= Face(Greek__Prefix)
#
+DeadKey_Map06f1= PrefixDocs[delivers Bold Fraktur to an extra layer] Mutate32OK[<font=bold-fraktur>](Face(Latin))
+DeadKey_Map06f1= AssignTo[ARROWS,16](Id(PartSquares²)) AssignTo[NUMPAD,16](Id(BBoxDrawOnV))
+DeadKey_Map06ef= PrefixDocs[delivers Bold Script to an extra layer] Mutate32OK[<font=bold-script>](Face(Latin))
+DeadKey_Map06ef= ByPairsPrefix[/0297](Face(Latin)) Face(LongStrings)
+DeadKey_Map06ef= AssignTo[ARROWS,16](Id(RoundDirections²)) AssignTo[NUMPAD,16](Id(BBoxDrawOnHV))
#
# These AssignTo() do not trigger any action in applications???
+DeadKey_Map06ee= PrefixDocs[delivers SansSerif Bold Italic to an extra layer]
+DeadKey_Map06ee= Mutate32OK[<font=sans-serif-bold-italic>](Face(Latin))
+DeadKey_Map06ee= AssignTo[ARROWS,16](Id(RectArr²)) AssignTo[NUMPAD,16](Id(BBoxDrawOnH))
# ByPairs[:0297](Face(Latin))
# These are non-essential, added for testing of applications only (B1, Frames??? eventually should be on rCtrl! ???)
#+DeadKey_Map06fc= PrefixDocs[delivers SansSerif BoldItalic Greek, Bold Digits to an extra layer]
#+DeadKey_Map06fc= Mutate32OK[<font=sans-serif-bold-italic>](Id(Greek_w_Symbols_on_Digit_Row))
#+DeadKey_Map06fc= AssignTo[NUMPAD,16](Id(BoxDraw1B)) AssignTo[ARROWS,16](Id(WhiteFrame) FlipShift(BlackFrame))
+DeadKey_Map06fc= PrefixDocs[delivers SansSerif Italic to an extra layer] Mutate32OK[<font=sans-serif-italic>](Face(Latin))
+DeadKey_Map06fc= AssignTo[NUMPAD,16](Id(BoxDraw1B)) AssignTo[ARROWS,16](Id(ArrowsDtip²))
#
+DeadKey_Map06fb= PrefixDocs[delivers SansSerif Bold to an extra layer] Mutate32OK[<font=sans-serif-bold>](Face(Latin))
+DeadKey_Map06fb= AssignTo[ARROWS,16](Id(ArrowsVStroke²))
+DeadKey_Map06e9= PrefixDocs[delivers SansSerif to an extra layer] Mutate32OK[<font=sans-serif>](Face(Latin))
+DeadKey_Map06e9= AssignTo[ARROWS,16](Id(CrossedArrows²))
#
DeadKey_Map06e7= prefix=012e AssignTo[NUMPAD,16](Id(BoxDrawB1)) AssignTo[ARROWS,16](Id(ArrowsBlack²))
# ARROWS is a dup of lAlt-Mnu (SS-Bold; not working in many apps)
+DeadKey_Map06f9= PrefixDocs[delivers Monospace to an extra layer] Mutate32OK[<font=monospace>](Face(Latin))
+DeadKey_Map06f9= AssignTo[ARROWS,16](Id(ArrowsVStroke²))
+DeadKey_Map06fa= PrefixDocs[delivers BoldItalic to an extra layer] Mutate32OK[<font=bold-italic>](Face(Latin))
+DeadKey_Map06fa= AssignTo[ARROWS,16](Id(PartCircles²))
+DeadKey_Map06f8= PrefixDocs[delivers Italic to an extra layer] Mutate32OK[<font=italic>](Face(Latin))
+DeadKey_Map06f8= AssignTo[ARROWS,16](Id(Arrows4andCircles²))
+DeadKey_Map06ea= PrefixDocs[delivers Bold to an extra layer] Mutate32OK[<font=bold>](Face(Latin))
+DeadKey_Map06ea= AssignTo[ARROWS,16](Id(ArrowsDashedCurved²))
#
DeadKey_Map06f7= PrefixDocs[Superscript (and MODIFIER LETTERS), Phonetic] Face(SupersPhonetic)
DeadKey_Map06f6= PrefixDocs[Subscript (and MODIFIER LETTERS LOW), Small Caps, Legs] Face(SubsSmallCapsLegs)
DeadKey_Map06f5= PrefixDocs[Turnaround, inverted, reversed, turned, hooks (to the right)](Face(Latin)) Face(RotatedsHooks)
DeadKey_Map06f4= PrefixDocs[Hooks to the left (and palatal)](Face(Latin)) Face(LeftHooks)
#
# lCtrl-lAlt-
DeadKey_Map06f3= ByPairsPrefix[:0297](Face(Latin)) prefix=0138
# Mnu-
DeadKey_Map06f2= ByPairsPrefix[;0297 :0483 0020.06f0 0138.06e8](Face(Latin)) Face(Add_Menu) prefix=0192
###+DeadKey_Map06f2= ByPairsPrefix[;0297 :0483 0020.06f0](Face(Latin)) ByPairsPrefix[0020.06e8](FlipShift(US-Base))
#
+DeadKey_Map06ed= PrefixDocs[delivers BoldItalic Greek to an extra layer] AssignTo[ARROWS,16](Id(BlackTrian²))
+DeadKey_Map06ed= Mutate32OK[<font=bold-italic>](Id(Greek_w_Symbols_on_Digit_Row))
+DeadKey_Map06ec= PrefixDocs[delivers Bold Greek to an extra layer] AssignTo[ARROWS,16](Id(WhiteFrame²))
+DeadKey_Map06ec= Mutate32OK[<font=bold>](Id(Greek_w_Symbols_on_Digit_Row)) AssignTo[NUMPAD,16](Id(BoxDrawOnBH))
+DeadKey_Map06eb= PrefixDocs[delivers Italic Greek to an extra layer] AssignTo[ARROWS,16](Id(WhiteTriang²))
+DeadKey_Map06eb= Mutate32OK[<font=italic>](Id(Greek_w_Symbols_on_Digit_Row)) AssignTo[NUMPAD,16](Id(BoxDrawOnBV))
#
geometry_via_layer=US-Base
#
# Tibetan range 0f**: take only tibetan diacritics, so our code adding diacritics won't be confused by prefices... ???
Auto_Diacritic_Start=0700
#
Flip_AltGr_Key=00a0
#
# Layer-Shift-Caps-AppleVK, isDead; vk=111: F12, vk=105: F13, vk=90: F20, vk=110: PC__Menu, vk=71: KeyPad_Clear, vk=80: F19
/Apple_Override=1-0--vk=105,1,06f0/1-0--vk=111,1,06f0/0-0--vk=90,1,06f0
# Negative isDead for literal names of states; hex4 is on F19, and Blue-u
/Apple_Override=1-0--vk=80,,‾/0-0--vk=80,-1,hex4/+019c+u,-1,hex4/0-1--vk=80,-1,hex6/+019c+U,-1,hex6
#/Apple_Override=1-0--vk=105,1,06f0/1-0--vk=111,1,06f0
#
#ComposeKey=06f0
/ComposeKey=ComposeFiles,dotcompose,warn,06f0/EntityFiles,entity,warn,,06f0/rfc1345Files,rfc1345,warn,06e8,06f0
@ComposeKey_Show=,&,ʳᶠᶜ
#
# Apparently, binding-column 15 (0-based) of aVkToWch18 is as if with WCH_NONE. When there are 2 Ctrl-columns, this corresponds to
# OBSOLETE (now done automatically): Shift of (0-based) elt 6 below ((7+1)*2=16). Better put something fake into elt 6!
#
# Gr,Ru,Heb,Frk,ssbiGrk,Scr, Dbl,ms, i, bi,ssb
# Actual keys: ,Agr,CA,M,CrM,CMAgr,ACr,CrAgr,MAgr,AM,CM,CAM,AMCr
#
# modKeyID = a capital letter (possibly prepended with l/r); bits = (S) C A K L R Z T
@mods_keys_KBD=lC,CL,lA,AK,rA,CALZ,M,CAT,rC,CAR
@layers_mods_keys=,rA,lClA,M,MrC,rAMrC,lArC,rAM,rArC,lCMrC,lCM,lCrC,lArA,lArAM,lArAMrC,lAM,lClAMrC,lClArC,lClAM,lArArC,lAMrC
@output_layers=0,1,prefixNOTSAME=06f3,prefixNOTSAME=06f2,prefixNOTSAME=06e7,prefixNOTSAME=06ff,prefixNOTSAME=06fc
@output_layers=prefixNOTSAME=06fd,prefixNOTSAME=06fe
@output_layers=prefixNOTSAME=06f1,prefixNOTSAME=06ef,prefixNOTSAME=06ee
@output_layers=prefixNOTSAME=06f9,prefixNOTSAME=06f8,prefixNOTSAME=06fa,prefixNOTSAME=06fb
@output_layers=prefixNOTSAME=06ed,prefixNOTSAME=06ec,prefixNOTSAME=06eb
@output_layers=prefixNOTSAME=06ea,prefixNOTSAME=06e9
#
@skip_extra_layers_WIN=SPACE,ABNT_C1
#
Diacritic_if_undef= SpaceSelf2Id
DeadChar_DefaultTranslation= ♪
DeadChar_32bitTranslation= ♫
# Explicit on Latin
Prefix_Base_Altern=Prefix_Base_AlternFace
#
[faces/VK]
# These are sorted alphabetically
# # Had 0297 on the "ripe key"; then 0138, now 0192
@SPACE=,0020,0138@,0192@,00a0@
# Temporary: when ¦ is Compose, change to this...
@ABNT_C1=,06f0@,00a0@,00a3@,0301
#@TAB=,0009,0009,0483@,0484@
#
# Dotted circle, black circle, white circle
#@APPS=,-1,25CC@,25CF@,25EF@
#
# Non-breakable translations (non-ideal 2007), 202F
#
[faces/Latin]
@layers=Id(US_Base_Compose) Id(Add_Base), Id(USLatin-AltGr) Id(Add_AltGr)
#@layers=US-Base, Id(USLatin-AltGr) Id(Add_AltGr)
BaseLayer=US-Base
#LinkFace=CyrillicPhonetic
#
MetaData_Index=0
faceDeadKeys= ´ ˋ ||| ˆ ˜ ||| ° ¸ ||| ˇ ¯ 0338 ˵ ¨ £ Ɯ ĸ
ExportDeadKeys= ´ ˋ ˆ ˜ ° ¸ ˇ ¯ 0338 ¨ ˵
#
@extra_report_DeadChar= 012e, 0297
# # Now defined via ByPairsPrefix
#@faceDeadKeys2= 0138\, 0138[, 0138], 0138`
# 002c = ,
@char2key_prefer_first=\,|,.,002c,£
@char2key_prefer_last=00a0
#
# Will be only considered when putting a diacritic on AltGr-key (~∼, *∗, .⋅ ) perp=⟂' ¹⟂ is good only if ¹ is on 1! key…;
# |∣ does not hurt anything (and does not help much)
@AltGrCharSubstitutions=|∣,0338∕
# ¡≀ - better on Greenkeys; #≠ - conflicts too much; ijü - was good when ij was on k, not i; ó∘ - what for???
@AltGrCharSubstitutionLayers=Blue,Blue-AltGr
#
# This gives more collisions:
#@AltGrCharSubstitutions=ijü,^∧,&∩,*×,#≠,6∨,7∪,|∣,!⊥,1⊤,¡≀,¹⟂,2∫,@∮,ª∭,²‖,²∥,3⊳,#⊲,º△,³▽,4□,$◇,€⊢,¥⊣
#
@Import_Prefix_Keys= 0301:CyrillicPhonetic,0297, 0483:CyrillicPhonetic,0483
#
+DeadKey_InvMap0000= ByPairs[0192.202f]
+DeadKey_InvMap0000= HTML_classes[k=latinAlt,from_ne,x,k=latinAlt,to_ne,ac,k=latinAlt,xfrom_sw,wf,k=latinAlt,from_nw,l,k=latinAlt,from_w high,p]
+DeadKey_InvMap0000= HTML_classes[c=latinBase,special,aeyuio,C=latinAlt,special,ê,C=latinAlt,very-special,ºª№€§æßðþçñijœ¡¿]
+DeadKey_InvMap0000= HTML_classes[C1,need-learn,åøì]
# Chaining makes sense if Flip_AltGr_Key is on AltGr key (repeating will reach inverted faces of:)
@chainAltGr=0138,0192,0297,0483
+PrefixChains=0192,0192,012e,0297,0483,⍽
+PrefixChains=0138,0138,019c,£,03e2,␣
+PrefixChains=0297,0297,0483,0483
#
# 017F,0192,0297 - good candidates to never be generated on the base face. But 017F takes accents (use it for dead2 only)
# 00b6=pilcrow 007c=| 002f=/ 00a0=NBSPC --> open box, narrow and hair spaces to figure and narrow nbr-spaces (was: 0297.2007 00a0.202F)
+DeadKey_Map0192= PrefixDocs[Cyrillic, “Ripe Keys”, Subscript digits/symbols, dashes]
+DeadKey_Map0192= InheritPrefixKeys[Face(CyrillicPhonetic)](Face(CyrillicRipeMax))
+DeadKey_Map0192= Face(Add_Ripe1) Shortcut(ModArrows)
+DeadKey_Map0192= HTML_classes[C=cyr,may-guess,всыхѣєә,C0,need-learn,ючяшщэьжёъЁЪ] X11symbol[dead_lowline]
# Layers(Russian+Russian-AltGr)
# (9=Thin, a=Hair, 7=figure(noBreak), 8=Punctuation spaces)
+DeadKey_AddMap0297= PrefixDocs[“Bizarre” Cyrillic, fractions {AND: “other” iconic Control-Key symbols}]
+DeadKey_AddMap0297= Face(Add_Ripe3) ByPairsPrefixFlat[0297.0483]
#
DeadKey_AddMap0483= ByPairs[0020.2007 0138.2008]
# Default map (not used now???):
DeadKey_Map= Mutate Mutate2Self Shortcut(ModArrows)
#
# ĸ: ↹⇤ 0009⇥
+DeadKey_Map0138= PrefixDocs[Greek (AltGr=tonos/final/symbol etc), Superscript digits/symbols, “Green Keys”]
+DeadKey_Map0138= Face(LGreekGreenMax) Face(Add_Green1) Shortcut(ModArrows) X11symbol[dead_greek]
+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= 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)
#
# 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♣] ByPairs[p♥ P♦ "0308](FlipLayers) Mutate2Self Shortcut(ModArrows)
#
# 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; 0311 is inverted breve; ⋺ gets in the way of overbar
+DeadKey_Map00af= PrefixDocs[Macron, add horizontal line (or double line), phonetic, dashes (on digits etc) {AND: quill, right-hook, inv-breve, paleocontraction}]
+DeadKey_Map00af= ByPairs[”ɚ ¹ǃ]
+DeadKey_Map00af= Mutate[\\⩉∤≤≥⩈⋳⋻,\\⋺[0],00af|0303+<subst-Macron>|
+DeadKey_Map00af= <any-bar>,<any-horizontal-stroke>,<any-dash>,<any-overbar>,<any-topbar>,<any-strikethrough>,
+DeadKey_Map00af= <any-over-equal>,<any-equal>,<any-line-!vertical>,<any-quill>,<any-base>,<any-underbar>,
+DeadKey_Map00af= <any-phonetized>,<any-addhline>|<any-right-hook>|
+DeadKey_Map00af= 0311--0301,<any-paleocontraction>,<super>+<any-paleocontraction>+lc|
+DeadKey_Map00af= 0311,<any-horizontal>,0304+<any-dot-below>]
+DeadKey_Map00af= ByPairs[1‐ 2– 3—] ByPairs[4― 0‒ ”ə ¦00ad !‑ ¹ǃ KȎ kȏ @ƻ] ShiftFromTo[5,˥](SelectRX[[5-9]])
+DeadKey_Map00af= Mutate2Self Shortcut(ModArrows)
# 0304+<any-dot-below> cannot be inverted - there is no intermediate point!
#
# Combine breve=02d8/0306 and caron 02c7/030c (we do not ??? of breve-like diacritics!); ŭ is moved to ???
# Note that Ü combines with caron (in 2 ways! Ǖ Ṻ) - but we prefer Ü -> Ǔ; arc/check not visible; ƫꞇꞆ obscure ꝥ
+DeadKey_Map02c7= PrefixDocs[Caron, breve, quasi-synonyms, n-Ary/Big {AND: arc/loop/check/belt/flourish/tilde-below/left-palatal-hook, insular/epigraphic, etc}]
+DeadKey_Map02c7= ByPairs[02c7.0306]
+DeadKey_Map02c7= Mutate[\\ƫꞇꞆ∊∍ŭꟼ,02c7|030c|<any-breve-!inverted>,<any-arc>,<any-caron>,<any-loop>,<any-check>,<any-belt>,
+DeadKey_Map02c7= <any-flourish>,<any-tilde-below>--0300|
+DeadKey_Map02c7= <any-quasisynon>,<any-left-hook>,<any-quasisynon>+<any-black>|
+DeadKey_Map02c7= <any-palatal-hook>,<any-insular>,<any-epigraphic>,0306+0327--0301,<any-dot-above>+<any-caron>,
+DeadKey_Map02c7= <any-black>+<any-unsharpen>,<any-n-ary>,<any-big>,<any-large>,
+DeadKey_Map02c7= <any-n-ary>+<any-manual-!turnaround>,<any-n-ary>+<any-circled>]
+DeadKey_Map02c7= ByPairs[þꝥ ÞꝤ íǯ ÍǮ wɷ] ByPairs[0ᴕ](FlipLayers) Mutate[<any-smallcaps>](Layers(Empty+Greek))
+DeadKey_Map02c7= Mutate2Self Shortcut(ModArrows)
#
# division slash; <any-long-horizontal-stroke> just a micro-optimization; to access Ȧȧ; pinyin caron=030c-diaeresis
+DeadKey_Map0338= PrefixDocs[Stroke, cut-off, “other” phonetic {AND: Um, doubled letters, ŭ, dot above, double-overbar, but-not, fences}]
+DeadKey_Map0338= ByPairs[0338.0338]
+DeadKey_Map0338= Mutate[\\ʓꞩ,<pseudo-stroke>,<any-stroke-!horizontal>,<any-long-horizontal-stroke>,<any-diagonal>,
+DeadKey_Map0338= <any-solidus>,<any-addline>,0306--030c--00a8+030c+00a8,<any-curl>+<any-phonetized>|
+DeadKey_Map0338= <any-stroke>+<any-calculated>,<any-stroke>+<any-phonetized>,<any-umify>,
+DeadKey_Map0338= <any-umify>+<any-smallcaps>,<any-umify>+<any-rotunda>,<any-doubleletter>,00a8+00af--00a8,
+DeadKey_Map0338= <any-dot-above>--0300,<any-double-overbar>,<any-but-not>|
+DeadKey_Map0338= <any-phonetize2>,<any-phonetize3>--0301|<any-smallcaps>+dectrl]
+DeadKey_Map0338= ByPairs[ !‼ 0020∕ {⌈ }⌉ [⌊ ]⌋ ](Face(Latin)) ByPairs[ [⧘ ]⧙ {⧚ }⧛ |⦙ \⦚](FlipLayers(Latin))
+DeadKey_Map0338= Mutate2Self Shortcut(ModArrows)
# =============================================================
+Named_DIA_Recipe__ring_dot= \\⋵ꞃ,\\⧔⧕[5],\Ẏọ,00b0|0323+<subst-Vietnamese>|||
+Named_DIA_Recipe__ring_dot= \⊛,!\⊆⊇,0307,0323|0328+<subst-Macron>|
+Named_DIA_Recipe__ring_dot= <any-round>,<any-ring-!above>,<any-dot>,<any-dots>,<any-dotless>,<any-other-circle>,
+Named_DIA_Recipe__ring_dot= <any-circled>,<any-circled>+<reveal-substkey>,<any-adddot>,-<any-amplify>,
+Named_DIA_Recipe__ring_dot= <any-black>--<any-amplify>|<any-insular>,<any-equal>+<any-amplify>
# ring above 00b0: combine with dotabove 0307 dotbelow 0323
# (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...]; ⋵ obscures ⦑
+DeadKey_Map00b0= PrefixDocs[Ring above, dot above/below/dotless, rounded {AND: circled, amplified, insular} — overflows to/from the column on right]
+DeadKey_Map00b0= Mutate[+\\⊙⊚[.],<NAMED-ring-dot>||||<circle>,<circle>+lc+dectrl] Mutate2Self Shortcut(ModArrows)
#
# cedilla 0327(00b8) and ogonek 0328, comma below 0326 (precombined only on SsTt); [ᵅ obscures ⦷; let it...; Ꞃꞃ obscures ṛ]
+DeadKey_Map00b8= PrefixDocs[Cedilla, ogonek, comma below {AND: visigothic/greekize/doubled-letters, whited mogrified} — overflows to/from the column on left]
+DeadKey_Map00b8= ByPairs[dƍ](FlipLayers(Latin))
+DeadKey_Map00b8= Mutate[0328,0327,0326|<any-comma>|<any-visigothic>|<any-greekize>,<any-doubleletter>||||\\ḃḂ,<NAMED-ring-dot>||||
+DeadKey_Map00b8= <any-whiten>+<any-unsharpen>,<any-whiten>+<any-sharpen>,<any-whiten>+<any-round>,<circle>+dectrl]
+DeadKey_Map00b8= ByPairs[j℩](FlipLayers(Latin)) Mutate2Self Shortcut(ModArrows)
# <any-comma> picks up digits with comma which are above 0xffff - better make it last
#
# =============================================================
+Named_DIA_Recipe__acute= \\˝ᶂ,\\Ǘ[u],\⋄,00b4|030b--00b4,00b4+031b--0300|||
+Named_DIA_Recipe__acute= <pseudo-hook>,<any-retroflex-hook>--0301,<any-hook>+<any-calculated>,
+Named_DIA_Recipe__acute= <any-fishhook>+<any-calculated>,<any-hook-!above>,<any-fishhook>,<pseudo-tail>,
+Named_DIA_Recipe__acute= <any-leg>,<any-tail>,<pseudo-curl>,<any-apostrophe>,<any-tick>,<any-sharpen>,
+Named_DIA_Recipe__acute= <any-addright>,<any-rightwards>,<any-right-arrow>|031b,<any-african>
# combine acute 00b4 and hooks/tails/curls and horn 031b (double acute=030b/2dd - protect against '' --> "; Ǘ is accessible otherwise, hides Ủ)
+DeadKey_Map00b4= PrefixDocs[Acute [+ on horn], sharpen, add on right {AND: hooks, tail/leg/curl, turned} — overflows to/from the column on right]
+DeadKey_Map00b4= Mutate[+<NAMED-acute>|<any-tailless>+<any-greekize>|<any-turned>] Mutate2Self Shortcut(ModArrows)
#
# Do not need 00b4+<subst-Vietnamese> ???
#
# double grave 030f, grave 0060/02cb/0300; append reversed list for acute (horn=031b)
# (tnvz have 3 type of hooks attached; the middle one [palatal] on nz are not reached ƫᶇᶌᶎ)
# Ǜ would get in the way of Vietnamese Ư (it could be available elsewhere, but there it is also penalized...)
+DeadKey_Map02cb= PrefixDocs[Grave, unsharpen, squared, add on left {AND: reversed} — overflows to/from the column on left]
+DeadKey_Map02cb= Mutate[\\Ǜ[u],\\⧆⌼,\〙〘⊠∺,02cb|030f--0300,02cb+031b--0301,031b--00a8|
+DeadKey_Map02cb= <any-unsharpen>,<any-calculated-squared>,<any-addleft>,<any-leftwards>,<any-left-arrow>||||
+DeadKey_Map02cb= <NAMED-acute>||||<any-reversed>]
+DeadKey_Map02cb= Mutate[<any-smallcaps>](Layers(Greek+Empty)) Mutate2Self Shortcut(ModArrows)
#|<any-reversed>
#
# =============================================================
# ; <any-overbar>--<any-manual-turnaround> to symmetrize ∈∋.
+Named_DIA_Recipe__hat= \\ı≈˜〚〛₡⍩⍚ʕ⩖⩕,\⍊⍑⟘¡⩞▫◈⧈⟞ᴎ,!\\⨌,02c6|||
+Named_DIA_Recipe__hat= <pseudo-smallcaps>,<any-amplify>,<any-whiten>,<any-fake-white>,<any-fake-black>,
+Named_DIA_Recipe__hat= <any-calculated-!operator-!squared-!circled-!african-!big-!large-!n-ary-!apl>,-<any-operator>,
+Named_DIA_Recipe__hat= <any-fake-black>--<any-operator>,<any-loop>,<any-upturn>,<any-descender>,<any-underbar>,
+Named_DIA_Recipe__hat= <any-overbar>--<any-manual-turnaround>,<any-paleo>,<any-fishhook>|
+Named_DIA_Recipe__hat= <any-inverted>+<any-phonetized>,<any-dot>+<any-reversed>,uc+<any-dot>+<any-reversed>+lc
# Hat: (if both smallcaps and turned/etc defined in the same Unicode version, prefer smallcaps) [loop/upturn not visible]
+DeadKey_Map02c6= PrefixDocs[Hat, Amplify, Whiten, Paleo, “other” mogrify {AND: smallcaps, loop/upturn/descender/bar/fishhook/turnaround/inverted-phonetic/dot-reversed} — overflows to/from the column on right]
+DeadKey_Map02c6= ByPairs[02c6.0302] Mutate[+<NAMED-hat>|||<any-script>]
+DeadKey_Map02c6= ByPairs[lɮ](FlipLayers) Mutate2Self Shortcut(ModArrows)
#
# 0303 tilde
# (For the purpose of double accents, grave 0300 is considered equivalent to horn 031b or hat 02c6, ring 00b0 to breve 02d8/0306, with-stroke to horn)
+DeadKey_Map02dc= PrefixDocs[Tilde [+ subst-Vietnamese] — overflows to/from the column on left]
+DeadKey_Map02dc= Mutate[\\∼∽,\\≋[`],02dc|02dc+<subst-Vietnamese>,<any-tilde>,<any-equivalent>,<any-addtilde>|||
+DeadKey_Map02dc= \\∿∽⍭[`],\\↋,<NAMED-hat>]
+DeadKey_Map02dc= Mutate2Self Shortcut(ModArrows)
# adding <any-turnaround> breaks more than it adds. \\∽[˜] does not work, since [**] acts BEFORE propagation to AltGr... ⍩ hurts ⩾
#
+TableSummaryAddHTML= The OTHER (titlo) satellite Cyrillic map and 4 satellite Greek maps (3 polytonic, 1 Coptic+extra) are
+TableSummaryAddHTML= in the table for Cyrillic personality. (Slightly mutiliated by ъЪёЁ-mirroring.)
+TableSummaryAddHTML= The maps for AltGr-Arrows prefixes are in the table for Greek personality.
+TableSummaryAddHTML= In the popups for the column headers, the occasional=tertiary meanings of the prefix are in braces.
+TableSummaryAddHTML= Access Greek on Green prefix (Shift-Space) [and Ctrlˡ-Altˡ- modifiers];
+TableSummaryAddHTML= MathBlue by double-Green (Shift-Space²); Cyrillic on Ripe (AltGr-Space) [and Mnu- modifier];
+TableSummaryAddHTML= Hebrew on double Ripe (AltGr-Space²) [and Mnu-Ctrlʳ modifier]. Special Math-Character maps are available
+TableSummaryAddHTML= on other combinations of modifiers (see the docs).
#
[faces/CyrillicPhonetic]
#
@layers=Id(Russian-Base) Id(Add_Base), Id(Cyrillic-AltGr) Id(Add_AltGr)
BaseLayer=US-Base
LinkFace=Latin
#
MetaData_Index=1
#
faceDeadKeys= ́ ҃ £ Ɯ ĸ
ExportDeadKeys= ́ ҃
#
@extra_report_DeadChar= 012e
#
# 00a0.Ё is required with v0.10 ???!!! (deadifies double AltGr-SPACE - probably needed due to ъЪёЁ-mirroring
# # Now defined via ByPairsPrefix: , 0138.э, 0138.ш, 0138.щ, 0138.ю
@faceDeadKeys2= 00a0.Ё
# => 0483
@LayoutTable_add_double_prefix_keys= 0192.э, 0192.ш, 0192.щ, 0192.ю
#
# Pressing AltGr-| produces |; with the setting below, pressing SWITCH AltGr-| produces the expected ¦
# Otherwise: the keys on OEM_102 (the SECOND \|) (which produce \| when both on Cyrillic and Latin)
# would be prefered, and SWITCH AltGr-| would be resolved as "map | to Latin", and would produce |.
# 002c = ,
# Prefering both picks 2nd from the end (2nd of 3 for Ъ,ъ) - but picking the third makes layout nicer!
@char2key_prefer_first=\,|,.,002c,£,0301
@char2key_prefer_last=Ё,Ъ,ё,ъ,00a0
#
# (Ё would be mapped to Е if we do not specify it explicitly:)
+DeadKey_InvMap0000= ByPairs[0192.202f Ё.0483]
+DeadKey_InvMap0000= HTML_classes[C=cyr,may-guess,всыхѣєә,C1=cyr,special,ёъ,C0,need-learn,ючяшщэьжёъЁЪ,C,need-learn,ѓј]
+DeadKey_InvMap0000= HTML_classes[K,from_nw,ѓ,K,pure,ѓ]
# Chaining makes sense if Flip_AltGr_Key is on AltGr key (repeating will reach inverted faces of:)
@chainAltGr=0192,0301,0138,0483
#@Explicit_AltGr_Invert=0192,0297
+PrefixChains=0192,0192,012e,0301,0338,¨,⍽
+PrefixChains=0138,0138,019c,£,03e2,␣
#
+DeadKey_Map0192= PrefixDocs[Greek (AltGr=tonos/final/symbol etc), “Ripe Keys”, Subscript digits/symbols, dashes]
+DeadKey_Map0192= Face(CGreekRipeMax) Face(Add_Ripe1) X11symbol[dead_lowline]
#
# ĸ: ↹⇤ 0009⇥
+DeadKey_Map0138= PrefixDocs[Latin, Superscript digits/symbols, “Green Keys”]
+DeadKey_Map0138= Face(CLatinGreenMax) Face(Add_Green1) X11symbol[dead_greek]
#
###+DeadKey_Map0192= PrefixDocs[Greek (AltGr=tonos/final/symbol etc), Superscript digits/symbols, “Green Keys”]
###+DeadKey_Map0192= Face(CGreekGreenMax) Face(Add_Ripe1)
#
# ĸ: ↹⇤ 0009⇥
###+DeadKey_Map0138= PrefixDocs[Latin, “Ripe Keys”, Subscript digits/symbols, dashes]
###+DeadKey_Map0138= InheritPrefixKeys[Face(Latin)](Face(LatinRipeMax)) Face(Add_Green1) X11symbol[dead_greek]
#
#DeadKey_InvMap0192= ByPairs[0020.00a0 0192.2007]
#
+DeadKey_Map0301_0= PrefixDocs[“Bizarre” Cyrillic, fractions {AND: “other” iconic control-key symbols}]
+DeadKey_Map0301_0= HTML_classes[k=cyr2,to_w,=g]
+DeadKey_Map0301_0= HTML_classes[C,need-learn,ѐѝӹӳӛӕќѹꙋꙟԛꙏҁԣ,C,may-guess,ҽҿѽүұӧғӻӑԋ,K,from_w,ԣ] Face(Add_Ripe3)
+DeadKey_Map0301_0= Id(Cyrillic-II) FromTo[Digits,Denominators1](LinkFace) FromTo[Digits,Numerators1](FlipShift(US-Base))
+DeadKey_Map0301_0= Mutate[<any-greekize>+lc+dectrl]
# This ByPairs is tricky: we want to translate AltGr-Shift-Space; one might think one must use the mapping of non-AltGr layer???
+DeadKey_Map0301_1= Id(Cyrillic-II-AltGr) FromTo[Digits,Denominators2](US-Base)
+DeadKey_Map0301_1= FromTo[Digits,Numerators2](FromToFlipShift[US-Base,US-Base](US-Base)) ByPairs[$⅘](US-Base) Face(Add_Ripe3)
+DeadKey_Map0301_1= Mutate[<any-greekize>+dectrl](FullFlipLayers(Latin))
# 0483 is ҃ titlo, A66F is combining vzmet, 2df5 is combining ST, 2df8 is combining DJERV (which we do not have non-combining???)
#
+DeadKey_Map0483= PrefixDocs[Cyrillic titlo-forms, power-of-10 multipliers {AND: “exotic” Cyrillic}]
+DeadKey_Map0483= HTML_classes[k=cyr3,to_w,=,C,need-learn,ꚑꚉꙛꙅԑꙉꙕӊꚏꚅԙӿҝԟꚕꚓꙙꙝҍꙓ,C,may-guess,ԅԇꙁꙃҹⷵⷸᵸᴫ]
+DeadKey_Map0483= Mutate[<pseudo-calculated-combining>](Face(CyrillicPhonetic))
+DeadKey_Map0483= Mutate[<pseudo-calculated-combining>](FlipShift(Layers(Cyrillic-II+Cyrillic-II-AltGr)))
+DeadKey_Map0483= FromTo[Digits,CyrPowersOfTen](Face(Latin)) ByPairs[-A66F S.2df5 D.2df8 Nᵸ Lᴫ](Face(Latin))
+DeadKey_Map0483= Layers(Cyrillic-ExtraExtra+Cyrillic-Extra) HTML_classes[C,special,ꙩꙫꙭꙮ]
+DeadKey_Map0483= Mutate[<circle>+dectrl]
#
#DeadKey_AddMap0338= Face(Add_Ripe3)
#
+TableSummaryAddHTML= The satellite maps for Latin (available here on double-prefix-keys) are in the table for Latin personality. (In this personality, they are going to be slightly mutiliated by ъЪёЁ-mirroring.) In the popups for the column headers, the occasional=tertiary meanings of the prefix are in braces.
#
[faces/GreekPoly]
#
@layers=Id(Greek) ByPairsPrefix[\0342 [0314 ]0313 `03e2](Id(US_Base_Compose)) ByPairsInvPrefix[|0342 {0314 }0313 ~03e2](Id(US_Base_Compose)) Id(Add_Base)
@layers=Id(Greek_and_More_1) ByPairs[Vϔ 6͵ ^ʹ 002c« .»](Id(US-Base)) Id(Add_AltGr)
# Id(USLatin-AltGr)
BaseLayer=US-Base
LinkFace=Latin
#
MetaData_Index=2
#
faceDeadKeys= 0342 0314 0313 03e2 £ ĸ
ExportDeadKeys= 0342 0314 0313 03e2
@Import_Prefix_Keys= 0301:CyrillicPhonetic,0297, 0483:CyrillicPhonetic,0483
#
# Prefering both picks 2nd from the end (2nd of 3 for Ъ,ъ) - but picking the third makes layout nicer!
@char2key_prefer_first=\,|,.,002c,·,0342,£
@char2key_prefer_last=00a0
#
# (Ё would be mapped to Е if we do not specify it explicitly:)
+DeadKey_InvMap0000= ByPairs[0192.202f]
#+DeadKey_InvMap0000= HTML_classes[C=cyr,may-guess,всыхѣєә,C1=cyr,special,ёъ,C0,need-learn,ючяшщэьжёъЁЪ,C,need-learn,ѓј]
#+DeadKey_InvMap0000= HTML_classes[K,from_nw,ѓ,K,pure,ѓ]
# Chaining makes sense if Flip_AltGr_Key is on AltGr key (repeating will reach inverted faces of:)
@chainAltGr=0192,0138
+PrefixChains=0192,0192,012e,0297,0338,¨,⍽
+PrefixChains=0138,0138,019c,£,03e2,␣
#### Does not work???
#+PrefixChains=0297,0297,0483,0483
#
@extra_report_DeadChar= 012e, 06f7, 06f6, 06f4, 06f5
# ĸ: ↹⇤ 0009⇥
+DeadKey_Map0138= PrefixDocs[Latin, Superscript digits/symbols, “Green Keys”]
+DeadKey_Map0138= Face(GLatinGreenMax) Face(Add_Green1) X11symbol[dead_greek]
#
+DeadKey_Map0192= PrefixDocs[Cyrillic, “Ripe Keys”, Subscript digits/symbols, dashes]
+DeadKey_Map0192= InheritPrefixKeys[Face(CyrillicPhonetic)](Face(GCyrillicRipeMax)) Face(Add_Ripe1)
+DeadKey_Map0192= HTML_classes[C=cyr,may-guess,всыхѣєә,C0,need-learn,ючяшщэьжёъЁЪ] X11symbol[dead_lowline]
#
+DeadKey_AddMap0297= PrefixDocs[“Bizarre” Cyrillic, fractions {AND: “other” iconic Control-Key symbols}]
+DeadKey_AddMap0297= Face(Add_Ripe3) ByPairsPrefixFlat[0297.0483]
#
[faces/Hebrew]
#
@layers= Id(Hebrew-Base) Id(US-Base) Id(Add_Base), Id(Hebrew-AltGr) Id(Add_AltGr)
BaseLayer=US-Base
LinkFace=Latin
#
MetaData_Index=3
#
# Prefering both picks 2nd from the end (2nd of 3 for Ъ,ъ) - but picking the third makes layout nicer!
@char2key_prefer_first=\,|,.,002c,£
@char2key_prefer_last=00a0
#
@Import_Prefix_Keys= 0301:CyrillicPhonetic,0297, 0483:CyrillicPhonetic,0483
#
# (Ё would be mapped to Е if we do not specify it explicitly:)
+DeadKey_InvMap0000= ByPairs[0192.202f]
+DeadKey_InvMap0000= HTML_classes[k=heb0,from_w,j,k,red-bg,qazol,k,green-bg,edrv,k,blue-bg,uj]
+DeadKey_InvMap0000= HTML_classes[c0,may-guess,uTwRGH,c0,need-learn,jVBY,C0,need-learn, ֿ ׇ,c0,special,aeUio]
+DeadKey_InvMap0000= HTML_classes[c1=heb1,very-special,`~WPBkh;:{}\|/005b''"",c1=heb1,special,qrRtTIpSDgGjzZnmM<]
+DeadKey_InvMap0000= HTML_classes[k=heb1,from_w,1hj>,c=heb1,need-learn,cC7!@HJ>?K,c=heb1,may-guess,xXfFbswaAeEdVyYuUioOlLv-+.002c]
+DeadKey_InvMap0000= HTML_classes[k=heb1,to_nw,<,k=heb1,pure,<]
# Chaining makes sense if Flip_AltGr_Key is on AltGr key (repeating will reach inverted faces of:)
@chainAltGr=0192,0138
+PrefixChains=0192,0192,012e,0297,0338,¨,⍽
+PrefixChains=0138,0138,019c,£,03e2,␣
+PrefixChains=0297,0297,0483,0483
#
@extra_report_DeadChar= 012e
# ĸ: ↹⇤ 0009⇥
+DeadKey_Map0138= PrefixDocs[Latin, Superscript digits/symbols, “Green Keys”]
+DeadKey_Map0138= Face(HLatinGreenMax) Face(Add_Green1)
#
+DeadKey_Map012e= PrefixDocs[Cyrillic, “Ripe Keys”, Subscript digits/symbols, dashes]
+DeadKey_Map012e= InheritPrefixKeys[Face(CyrillicPhonetic)](Face(CyrillicRipeMax)) Face(SpecialKey_Images)
+DeadKey_Map012e= HTML_classes[C=cyr,may-guess,всыхѣєә,C0,need-learn,ючяшщэьжёъЁЪ]
#
+DeadKey_Map0192= PrefixDocs[Greek (AltGr=tonos/final/symbol etc), Subscript digits/symbols, “Green Keys”]
+DeadKey_Map0192= Face(HGreekRipeMax) Face(Add_Ripe1) X11symbol[dead_lowline]
#
# o: vav holam; H: he-mapiq (instead of het); rest: with a dagesh (vav dagesh is on `U´!); y to tsadi-dagesh
CapsLOCKoverride= ByPairs[F.fb43 f.fb44 X.fb3a x.fb3b O.fb38 H.fb34 o.fb4b y.fb46 T.fb4a](Face(Latin))
#
+DeadKey_AddMap0297= PrefixDocs[“Bizarre” Cyrillic, fractions {AND: “other” iconic Control-Key symbols}]
+DeadKey_AddMap0297= Face(Add_Ripe3) ByPairsPrefixFlat[0297.0483]
#
####[DEADKEYS/eurkey/1/1]
#####
####klc_filename=eurkey-std.klc
#####
##### Now is not needed at all
#####
[visual -> DEADKEYS/la_ru]
#
# Can be omitted now: (actually, it should better be omitted since we use PrefixDocs now)
#
KEYNAME_DEAD
#03a9 "GREEK CAPITAL LETTER OMEGA"
[visual -> DEADKEYS/business]
DEADKEY 00A4
0041 20b3 // A -> ₳
0061 060b // a -> ؋
0042 0e3f // B -> ฿
0062 09f3 // b -> ৳
0043 00a2 // C -> ¢
// 0063 20a1 // c -> ₡
0063 00a9 // c -> ©
0044 20af // D -> ₯
0064 20ab // d -> ₫
0045 20a0 // E -> ₠
0065 20ac // e -> €
0046 20a3 // F -> ₣
0066 0192 // f -> ƒ
0047 20b2 // G -> ₲
0067 0af1 // g -> ૱
0048 20b4 // H -> ₴
0068 20b4 // h -> ₴
0049 fdfc // I -> ﷼
0069 17db // i -> ៛
004b 20ad // K -> ₭
006b 20ad // k -> ₭
004c 00a3 // L -> £
006c 20ba // l -> ₺ TURKISH LIRA SIGN [6.2]
// 004d 2133 // M -> ℳ
004d 20BC // M -> ₼ MANAT SIGN
006d 20a5 // m -> ₥
004e 20a6 // N -> ₦
006e a838 // n -> ꠸ NORTH INDIC RUPEE MARK [5.2]
0050 20b1 // P -> ₱
0070 2117 // p -> ℗
// 0052 20b9 // R -> ₹
0052 20BD // R -> ₽ RUBLE SIGN
0072 00ae // r -> ®
0053 20aa // S -> ₪
0073 2120 // s -> ℠
0054 20b8 // T -> ₸
0074 2122 // t -> ™
0057 20a9 // W -> ₩
0077 20a9 // w -> ₩
0059 00a5 // Y -> ¥
0079 5143 // y -> 元
00a0 00a4 // -> ¤
00a4 00a4 // ¤ -> ¤
//0024 00a4 // $ -> ¤
0020 00a4 // -> ¤
DEADKEY 00A3
// 0043 20a2 // C -> ₢ (AltGr-inv)
0063 20b5 // c -> ₵ (AltGr-inv)
// ®™℗℠
0043 20a1 // C -> ₡
0042 09f2 // B -> ৲ (AltGr-inv) BENGALI RUPEE MARK Í
0062 20a2 // b -> ₢ (AltGr-inv) í
0044 058F // D -> ֏ (AltGr-inv) ARMENIAN DRAM SIGN Ð
0064 058F // d -> ֏ (AltGr-inv) ARMENIAN DRAM SIGN ð
0047 09fB // G -> ৾ (AltGr-inv) BENGALI GANDA MARK É
0067 09fB // g -> ৾ (AltGr-inv) BENGALI GANDA MARK é
0069 20b6 // i -> ₶ (AltGr-inv) LIVRE TOURNOIS SIGN [5.2] ij
0049 20b6 // I -> ₶ (AltGr-inv) LIVRE TOURNOIS SIGN [5.2] IJ
004c 10da // L -> ლ GEORGIAN LETTER LAS [Georgian; Georgian; 1.1] Ø // Wikipedia article on Lari does not include ლ
// 006c 20b6 // l -> ₶ (AltGr-inv) LIVRE TOURNOIS SIGN [5.2]
006c 20a4 // l -> ₤ (AltGr-inv) ø
004e a837 // N -> ꠷ (AltGr-inv) NORTH INDIC PLACEHOLDER MARK Ñ
006e a837 // n -> ꠷ (AltGr-inv) NORTH INDIC PLACEHOLDER MARK ñ
0050 20a7 // P -> ₧ (AltGr-inv) [obsolete Spanish] œ
0070 20b0 // p -> ₰
// 0052 20a2 // R -> ₢ (AltGr-inv) ý
// 0052 211b // R -> ℛ (AltGr-inv) SCRIPT CAPITAL R Ý
0072 20b9 // r -> ₹ (AltGr-inv) new indian RUPEE sign
0052 20a8 // R -> ₨ (AltGr-inv) RUPEE sign
// 0053 0024 // S -> $ (AltGr-inv) §
0053 0024 // S -> $ (AltGr-inv) ß
0073 20b7 // s -> ₷ SPESMILO SIGN [5.2]
// 0054 0bf9 // T -> ௹ (AltGr-inv) Þ
0074 20ae // t -> ₮
0054 0bf9 // T -> ௹ (AltGr-inv) þ
// Put CJK yens to AltGr-y/Y [Order on Wikipedia: yen (円/圓), yuan (元/圆)]
0059 5713 // Y -> 圓 (AltGr-inv) CJK yen-2 Ÿ
0079 5186 // y -> 円 (AltGr-inv) CJK yen-1 ÿ
// Put (CJK) yuans to AltGr-u/U [Order on Wikipedia: yen (円/圓), yuan (元/圆)]
0055 5706 // U -> 圆 yuan-2
0075 5143 // u -> 元 yuan-1
[visual -> RECT/keypad]
@rect_rows_cols=4,4
@rect_horizontal_counts=13,10,12,12
@layer_names=Base-Keypad,BoxDraw11,BoxDraw22,BoxDraw12,BoxDraw21,BoxDrawBB,BoxDraw1B,BoxDrawB1,BBoxDrawOnH,BBoxDrawOnV,BBoxDrawOnHV,BoxDrawOnBV,BoxDrawOnBH
@layer_names=Arrows,Arrows2,ArrowsBlack,ArrowsPlay,ArrowsWhite,Arrows3,HookArrows,ArrowsZigZag,ArrowsMapsTo,ArrowsToBar
@layer_names=ArrowsDashedCurved,ArrowsArcs,WhiteFrame,BlackFrame,Arrows4andCircles,ArrowsShortArcs,RectArr,RectArrOther,PartCircles,PartBlackCircles,ArrowsDtip,ArrowsDoubled
@layer_names=WhiteTriang,WhiteTriangSmall,BlackTrian,BlackTrianSmall,RoundDirections,RoundDirectionsPlus,PartSquares,Arcs,ArrowsVStroke,ArrowDStroked,CrossedArrows,ArrowAngles
empty=!
COLgap=1
ROWgap=2
# Heuristic for half-lines: go along double/bold lines of single+double/bold. Dotted lines: in empty slots of bold-on-top-of-single
# Arrows: Mid: Hor/Ver Extension, bottom row: LeftRight, LongLeftRight-or-LongRight (or Mirrored LR), UpDown
#[ AltGr +1=Dbl=Mnu +2=FlipRight=rCtrl] [Bold=removeAltGr] ↓+lCtrl (rCtrl,Both,Mnu) ↓+lCtrl-lAlt (rCtrl,Mnu) (rCtrl needs →lAlt+rCtrl)
789/ ┌┬┐! ╔╦╗! ╓╥╖! ╒╤╕! ┏┳┓! ┎┰┒! ┍┯┑! ┲┅┱! ┢╈┪! ╆╍╅! ┞╀┦! ┭╾┮!
456* ├┼┤! ╠╬╣! ╟╫╢! ╞╪╡! ┣╋┫! ┠╂┨! ┝┿┥! ╊▧╉! ┋▨┇! ╎▦╏! ╿🔥╽! ┽🙄┾!
123- └┴┘! ╚╩╝! ╙╨╜! ╘╧╛! ┗┻┛! ┖┸┚! ┕┷┙! ┺┉┹! ┡╇┩! ╄╌╃! ┟╁┧! ┵╼┶!
0.↲+ ─│!! ═║!! ╷╵!! ╶╴!! ━┃!! ╻╹!! ╺╸!! ╼╾!! ╽╿!! 😂😘!! 😍😭!! 😊😉!!
# Mnu Mnu+Ctrl AltGr+rCtrl AltGr+Mnu AltGr+Mnu+rCtrl ❤️
# Base Bold ^⁴⇓ Bbb=White ␣² ⁴⬎ Script ~⁴ ⬐⬐ Fraktur £⁴↘
↖↑↗÷ ⇖⇑⇗∕ ⬉⬆⬈➗ ⏮⏫⏭! ⬁⇧⬀! ⬑⤊⬏! ⤣⦽⤤⨏ ↜⌇↝╱ ↰↥↱✘ ⬑⤒⬏☐
←⎯→× ⇐⏐⇒⨯ ⬅●⮕✖ ⏪⏯⏩! ⇦○⇨! ⇚◯⇛! ↩⧭↪⍟ ⇜╳⇝╲ ↤!↦✔ ⇤!⇥!
↙↓↘‒ ⇙⇓⇘− ⬋⬇⬊➖ ⇽⏬⇾! ⬃⇩⬂! ⬐⤋⬎! ⤦⧬⤥〰 ╱↯╲⌁ ↲↧↳✗ ⬐⤓⬎☒
↔⟷↕﬩ ⇔⟺⇕∑ ⬌➡⬍➕ ⇿⦿!! ⬄⟾⇳! !!!⧻ ⥹⥻⨗⟴ ⟿⬳⦚⍼ ↹⟼↨✓ ↹!↨☑
# (Three sections, 8 blocks each: 2[Shift] × 2→[Ctrl] × 2↓[Mnu]; out of 4 Shift-Groups, the base one is disabled)
# Shapes on Greek=lAlt+lCtrl °⁴⇒ Mathop on lCtrl=Bold↕-MathBizarre Doubled/Crossed on lAlt=SS
⤎⇡⤏⋰ ↻⥀↺⋱ ▗▄▖! ▛▀▜! ⥀⟰⥁⨸ ⤵⤸⤴! ⌈⊓⌉⧄ ⌜∏⌝⧅ ◴◚◷! !◓◔! ⇱↟!! ↫⇈↬!
⇠◌⇢※ ↜☺↝! ▐█▌! ▌▣▐! ⭅⦾⭆⊛ ⤺!⤻! ⊏□⊐⊠ ⊑◽⊒⧆ !⦾➲! ◐⦿◑! ↞!↠! ⇇!⇉!
⤌⇣⤍⋯ ↶⥁↷⧿ ▝▀▘! ▙▄▟! ↻⟱↺⊖ ⤶⤹⤷⤼ ⌊⊔⌋⊟ ⌞∐⌟▫ ◵◛◶! !◒◕! !↡⇲! ↩⇊↪!
⤑⬸⋮⁜ ↭⤳!⧾ ▞▚↵! ░▒▓! ➲⥰⊜⊕ ⤳⤿⤾⤽ ▭⊡▯⊞ ■◾⧈◻ !⊚!! !!!! !!⥉! ⇄⇆⇅⧺
# The symbol ⁴ means that 4 blocks are assigned to this prefix (via Shift/AltGr_Invert combos); ↕⇓⬎: where to look for the other 2
# '⁴ These blocks = block on top + Mnu ~⁺² `₄↕ /⁴
◸△◹⨞ ⌌▵⌍! ◤▲◥⍁ ◭▴◮! ◜∩◝⊘ ╭⋂╮⦸ ◩⬒⬔⧄ ◴⯊◷⧅ ⤆⤉⤇! ↸⇞!! ⤲⤧⤱! ⦭⦬⦨!
◁◇▷⨻ ◃⋄▹! ◀◆▶⍂ ◂⬩▸⸋ ⊂⥀⊃⊗ ⊆⥁⊇⨂ ◧▣◨⧅ ◖⚪◗⧈ ⇷!⇸! ⇺❍⇻! ⤪⤫⤨! ⦩⦽⦪!
◺▽◿⨺ ⌎▿⌏▫ ◣▼◢! ⧨▾⧩🞗 ◟∪◞⊖ ╰⋃╯⊜ ⬕⬓◪▪ ◵⯋◶◠ ⤂⤈⤃! ↵⇟↴⧺ ⤮⤩⤭! ⦫⦯⦮!
▭◬▯⨹ !⎊!◻ ▬⟁▮⨨ !⬚!⬥ ⊝⊙⦶⊕ ⎉⨀⦷⨁ ▬⸋▮◼ ⌒⌓⧇◡ ⇹⤄!! ⇼!!⧻ ⤰⤬⤯! ∅⌀!!
#
# Another illustration of ⁴prefixes (on “→”; base/Shift/AltGr-Inv/AltGr-Inv+Shift): ␣² ≡ ⇨⇛➲◑; ^ ≡ ⮕⏩▌▐; ° ≡ ⇢↝⭆⤻; ~ ≡ ↪⇝⊃⊇
# £ ≡ ↦↦⇉▷ (must be: ↦↦↠⇉) ???; ' ≡ ▷▹▶▸; ` ≡ ⊐⊒◨◗; / ≡ ⇸⇻⤨⦪
#
# Elementary-school minus is FIGURE DASH; for arrow-angles, clockwise are H/V, ccw are diag.
# Usurp diagonals: dashed, Double/Triple arrows, Arrows with double-bar, Zigzag
# * is sometimes opposite of /, i.e., \. We abuse .Del often… ※ near ⁜??? ☺
#
# Replacements for unassigned Shift-pairs:
# lAlt+lCtrl ⎯→ lAlt+rAlt+rCtrl (Bold); lCtrl ⎯→ lAlt+rAlt+Menu (Italic); lAlt ⎯→ lAlt+rAlt+Menu+rCtrl (B-Italic)
#
[visual -> KBD/Digits]
#
# For fractions, we look for fractions with minimal denominator/numerator which contain the given digit in numerator/denominator. We take the first one and the second one from the list.
# Note that ⅗, ⅝, ⅞ do not appear in the lists via denominators; and ⅓, ¼, ⅕, ⅙, ⅛ do not appear in the lists via numerators.
# All Unicoded fractions appear in these lists. So each one can be entered via a DeadKeyMap.
#
#
visual_rowcount=16
@visual_per_row_counts=1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1
visual_prefixes= <* *<> < +
in_key_separator=/
prefix_repeat=3
in_key_separator2=‼
#
# Note that we no longer use the tables for super/subscript, and generate them operatically
@layer_names=Zodiak,Numerators2,Numerators1,Digits,OverDigits,Denominators1,Denominators2
@layer_names=Super,SuperExtraLetters,Sub,SubExtraLetters,CyrPowersOfTen,cp437-Start,DashesEtc,FractionEmSpacesEtc
@layer_names=DashesEtc0,FractionEmSpacesEtc0
# ↉ 0/3 ⅐ 1/7 ⅑ 1/9
♈ ♉ ♊ ♋ ♌ ♍ ♎ ♏ ♐ ♑ ♒ ♓ -- -- -- -- -- -- --
<<< ½ ⅖ ⅗ -- ⅝ -- -- -- -- -- -- -- -- -- -- -- -- -- --
*** ⅟ ⅔ ¾ ⅘ ⅚ -- ⅞ -- -- ↉ -- -- -- -- -- -- -- -- --
1/! 2/@ 3/# 4/$ 5/% 6/^ 7/& 8/* 9/( 0/) -- -- -- -- -- -- -- -- --
*** ⅒ ½ ⅓ ¼ ⅕ ⅙ ⅐ ⅛ ⅑ ⅒ -- -- -- -- -- -- -- -- --
<<< -- -- ⅔ ¾ ⅖ ⅚ -- ⅜ -- -- -- -- -- -- -- -- -- -- --
>>> ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ⁰ ⁱ ⁺ ⁻ ⁼ ⁽ ⁾ ⁿ
-- -- -- -- -- -- -- -- -- -- -- -- i + - = ( ) n
<<< ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ₀ ₋ ₌ ₊ ₍ ₎ -- -- --
-- -- -- -- -- -- -- -- -- -- - = + ( ) ə -- -- --
+++ -- -- ҂ ⃝ ҈ ҉ ꙰ ꙱ ꙲ -- -- -- -- -- -- -- -- -- --
☺ ☻ ♥ ♦ ♣ ♠ • ◘ ○ ◙ -- -- -- -- -- -- -- -- --
‐ – — ― ⸏ ⸓ ⸎ ⁃ ‑ ‒ ‾ -- -- -- -- -- -- --
2003 2002 2004 2005 2009 2006 2001 200a 205f 200b 2007 2008 -- -- -- -- -- -- --
‐ 200a—200a‼ — ― ⸏ ⸓ ⸎ ⁃ ‑ ‒ ‑ ‾ -- -- -- -- -- -- --
2003 ‼2009—2009 2004 2005 2009 2006 2001 200a 205f 200b 2007 2008 -- -- -- -- -- -- --
# ‐ ‼2009—2009 — ― ⸏ ⸓ ⸎ ⁃ ‑ ‒ ‑ ‾ -- -- -- -- -- -- --
# 2003 ‼200a—200a 2004 2005 2009 2006 205f 200a 2001 200b 2008 2007 -- -- -- -- -- -- --
# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
# 4/18 --> 1/7; EM QUAD --> 1/9
#
# Most of the above are very optional now: Super and Sup are obsoleted by Mutate[<super>] etc
# combined with Select[] clauses. Register mapping is not done yet (2011) but can be easily done.
#
[Diacritics_Limits]
# For debugging purposes only, to check correct reading of tables below (estimates from below)
# (0th entry is for 0..3 combined; 1 for 1..3, 2: 2,3; 4,5,6: combined)
@ALL=5,4,0,0,10,10,10,10
# 0:tilde, 1:grave,quote, 2: quote
[Diacritics]
# Surrogate + 8bit + Modifiers, Modifiers below-or-opposite, Vertical (or Comma-like or Doubled or Dotlike or Rotated or letter-like) Modifiers,
# Prime-like or Centered modifiers, Combining, Combining below-or-opposite, Vertical/plus-like/arrows and dotlike Combining, Combining for symbols
# ⎖ in prime-like apostrophe??? - is currently obscured…
/APOSTROPHE= '´ʼʾˀˊ΄/ˏˌ/ˈˌˡ/ʹˑ/ ́ ̉ ̛ ̷ ̸ ́ ͗ ᷎ ᷄ ᷇ ᷁/ ̗ ̩ ̦ ̹ ͅ / ̍ ̓ ̓ ̕ ̩ / ⃬ ⃐ ⃫ ⃬
/QUOTATION_MARK= "¨˝˸ː΅/˶˵/ˮ/ʺ/ ̈ ̋ ̏ ̈́ ᷉ ᷈ ゙ / ̤ ͈ / ̎ ͛ ͈ / ⃛ ⃜ ⃨
/GRAVE_ACCENT= `ˋʿˁˤ/ˎ/ʻʽ/˴˵/ ̀ ̀ ͑ ᷆ ᷅ ᷀ / ̖ ̜ ᷂ / ̒ ̔ / ⃑ ⃭ ⃠ ⃥
# Stopgap measure to preserve many flavors of grave (we moved ˵):
/DBL_GRAVE_ACCENT= ˵ˋʿˁˤ`/ˎ/ʻʽ/˴/ ̀ ̀ ͑ ᷆ ᷅ ᷀ / ̖ ̜ ᷂ / ̒ ̔ / ⃑ ⃭ ⃠ ⃥
/CIRCUMFLEX_ACCENT= ^ˆ˄˟/˰/˪˫ꜛʳʴʵʶˣ// ̂ ̑ ͒ ͡ ̽ ͆ ᷍ / ̭ ̯ ᷼ ͓ ̪ ̼ ͎ ᷊ / ̘ ̙ ͉ ̘ ͉ / ⃟ ⃤ ⃧ ⃩ ⃰ ⃟
/BREVE= ˘ˇ˅/ˬ˯˽˾/˱˲˿ˠʸꜜ/˂˃/ ̆ ̌ ̐ ͝ ᷓ ᷾ ͐ ᷌ ᷋ ᷃ / ̮ ̬ ͜ ̺ ̫ ͔ ͕ ͖ ᷿ / ͍ ͢ / ⃞ ⃢ ⃣
/DEGREE_SIGN= °˚˙/˳/˙ˠʰʱʲˢʷᵊᶣ/˓˒/ ̊ ̇ ̣ ᷒ ゚ / ̣ ̥ ̤ ̻ ͙ ͚ / ̇ ͘ ̣ ̤ ͘ / ⃝ ⃘
/TILDE= ~ ˜/˷/ⸯꙿ/˞/ ̃ ̴ ͂ ͊ ͋ ͌ ͠ ᷑ / ̰ ̧ ̨ ̡ ̢ ᷏ ᷐ ᷽ ᷽ / ̾ ̾ / ⃗ ⃖ ⃯ ⃮ ⃕ ⃔ ⃙ ⃚ ⃡
/CEDILLA= ¸˛ͺ/˷/ⸯꙿ/˞/ ̧ ̨ ̡ ̢ ̰ ᷏ ᷐ ᷽ ᷽ / ᷎ ̃ ̴ ͂ ͊ ͋ ͌ ͠ ᷑ / ̾ ̾ / ⃗ ⃖ ⃯ ⃮ ⃕ ⃔ ⃙ ⃚ ⃡
/MACRON= ¯ˉ˹˺/ˍ˻˼‗/˭/˔˕˖˗/ ̄ ̅ ̵ ̶ ̿ ͞ ̚ / ̱ ̲ ̳ ͇ ͟ ̠ / ͍ ̝ ̞ ̟ ̠ ̘ ̙ ͉ / ⃒ ⃓ ⃦ ⃪ ⃡ ⃡ ⃗ ⃖ ⃯ ⃮
/SLASH= ⁄÷∕ / ˈˌ / / / ̸ ̷ ̶ ̵ / / ⃒ ⃓ / ̸ ̷ ⃒ ⃓ ̶ ̵
#
# These are from "main blocks" of the modifiers and combining; plus Greek standalone diacritics: ͺ΄΅
# One of ˠ is obscured by vertical line with middle dot... The Macron-\ 29F7 obscures ˭.
# Circled \ and | with middle dot obscure ˙ˠ. ˙ duplicated (forward) to make accessible. Also: ̅
# ̾ ̘ ̙ ͘ ͉ ͉ ᷽ combining chars are also duplicated. Also: ⃡ ⃗ ⃖ ⃯ ⃮ ⃬ ⃟ (for symbols).
# ʰʱʲˡˢʷ - from IPA. The rest (and ʳʴʵʶʸ) are v1.1 letter modifiers. (ˠ is in front to unobscure the rest.)
#
# Combining for symbols: arrows and round arrows -> ~; rectangular around: to ˘ .
#`´¨˜ˆˇ°¯ Harpoons are ordered as →, ←
# perl -C31 -wlne "next if /^#/; s(^/\w+=\s+)() or die; @t = split m((?<=.)/); print q(<tr><td>), join(q(</td><td>), @t), q(</td></tr>)" a1 > a1.html
[face_shortcuts]
l=Latin
c=CyrillicPhonetic
g=GreekPoly
h=Hebrew
b=US-Base