]> shimmer.witbreuk.eu Git - UltimateKEYS.git/commitdiff
Add files via upload
authorPieter Degroote <pieter-degroote@users.noreply.github.com>
Tue, 21 Jan 2025 17:21:18 +0000 (18:21 +0100)
committerGitHub <noreply@github.com>
Tue, 21 Jan 2025 17:21:18 +0000 (18:21 +0100)
Some additional accented letters with dot below have been added and changes have been made to some spacing characters, small pointing triangles and other small shapes, plus some other small changes.

autohotkey/UltimateKEYS (for AutoHotkey v1.1).ahk
autohotkey/UltimateKEYS (for AutoHotkey v2).ahk

index 3c6f92be61d1cebbea96ae8de8ffdd6f2fd6c3a6..4b2d4ee46ab5f3bd9126663e9a5b4e8650d04a3a 100644 (file)
@@ -1,6 +1,6 @@
 #requires AutoHotkey v1.1
 
 #requires AutoHotkey v1.1
 
-; UltimateKEYS (for AutoHotkey v1.1).ahk - 2024-11-30
+; UltimateKEYS (for AutoHotkey v1.1).ahk - 2025-01-21
 
 ; Website :  https://pieter-degroote.github.io/UltimateKEYS/
 
 
 ; Website :  https://pieter-degroote.github.io/UltimateKEYS/
 
@@ -503,9 +503,13 @@ cmpSmallF.item["v"] := "{u+2c71}"  ; (ⱱ) v with right hook
 cmpSmallF.item["z"] := "{u+0290}"  ; (ʐ) z with retroflex hook
 
 
 cmpSmallF.item["z"] := "{u+0290}"  ; (ʐ) z with retroflex hook
 
 
-; Compose :  Swash Tail and Variations (t)
+; Compose :  Swash Tail and Other Variations (t)
 
 cmpSmallT := ComObjCreate("Scripting.Dictionary")
 
 cmpSmallT := ComObjCreate("Scripting.Dictionary")
+cmpSmallT.item["c"] := "{u+a793}"  ; (ꞓ) c with bar
+cmpSmallT.item["C"] := "{u+a792}"  ; (Ꞓ) C with bar
+cmpSmallT.item["f"] := "{u+a799}"  ; (ꞙ) f with stroke
+cmpSmallT.item["F"] := "{u+a798}"  ; (Ꞙ) F with stroke
 cmpSmallT.item["l"] := "{u+2c61}"  ; (ⱡ) l with double bar
 cmpSmallT.item["L"] := "{u+2c60}"  ; (Ⱡ) L with double bar
 cmpSmallT.item["s"] := "{u+023f}"  ; (ȿ) s with swash tail
 cmpSmallT.item["l"] := "{u+2c61}"  ; (ⱡ) l with double bar
 cmpSmallT.item["L"] := "{u+2c60}"  ; (Ⱡ) L with double bar
 cmpSmallT.item["s"] := "{u+023f}"  ; (ȿ) s with swash tail
@@ -758,29 +762,27 @@ cmpSubscript.item[")"] := "{u+208e}"  ; (₎) subscript )
 ; Compose :  Spacing Characters and Dashes
 
 cmpSpace := ComObjCreate("Scripting.Dictionary")
 ; Compose :  Spacing Characters and Dashes
 
 cmpSpace := ComObjCreate("Scripting.Dictionary")
-cmpQuad := ComObjCreate("Scripting.Dictionary")
 cmpSpace.item["1"] := "{u+2004}"  ; three-per-em space
 cmpSpace.item["2"] := "{u+2002}"  ; en space
 cmpSpace.item["3"] := "{u+2003}"  ; em space
 cmpSpace.item["4"] := "{u+2005}"  ; four-per-em space
 cmpSpace.item["1"] := "{u+2004}"  ; three-per-em space
 cmpSpace.item["2"] := "{u+2002}"  ; en space
 cmpSpace.item["3"] := "{u+2003}"  ; em space
 cmpSpace.item["4"] := "{u+2005}"  ; four-per-em space
-cmpSpace.item["5"] := "{u+2008}"  ; punctuation space
 cmpSpace.item["6"] := "{u+2006}"  ; six-per-em space
 cmpSpace.item["6"] := "{u+2006}"  ; six-per-em space
-cmpSpace.item["7"] := "{u+2009}"  ; thin space
-cmpSpace.item["8"] := "{u+200a}"  ; hair space
 cmpSpace.item["9"] := "{u+2007}"  ; figure space
 cmpSpace.item["0"] := "{u+200b}"  ; zero-width space (ZWSP)
 cmpSpace.item["9"] := "{u+2007}"  ; figure space
 cmpSpace.item["0"] := "{u+200b}"  ; zero-width space (ZWSP)
+cmpSpace.item["b"] := "{u+00a0}"  ; non-breaking space (NBSP)
 cmpSpace.item["m"] := "{u+205f}"  ; medium mathematical space (MMSP)
 cmpSpace.item["n"] := "{u+202f}"  ; narrow no-break space (NNBSP)
 cmpSpace.item["m"] := "{u+205f}"  ; medium mathematical space (MMSP)
 cmpSpace.item["n"] := "{u+202f}"  ; narrow no-break space (NNBSP)
-cmpSpace.item[" "] := "{u+00a0}"  ; non-breaking space (NBSP)
+cmpSpace.item["p"] := "{u+2008}"  ; punctuation space
+cmpSpace.item["t"] := "{u+2009}"  ; thin space
+cmpSpace.item["h"] := "{u+200a}"  ; hair space
+cmpSpace.item["."] := "{u+2008}"  ; punctuation space
+cmpMacronStroke.item["1"] := "{u+2010}"  ; (‐) hyphen
 cmpMacronStroke.item["2"] := "{u+2013}"  ; (–) en dash
 cmpMacronStroke.item["3"] := "{u+2014}"  ; (—) em dash
 cmpMacronStroke.item["4"] := "{u+2015}"  ; (―) horizontal bar
 cmpMacronStroke.item["2"] := "{u+2013}"  ; (–) en dash
 cmpMacronStroke.item["3"] := "{u+2014}"  ; (—) em dash
 cmpMacronStroke.item["4"] := "{u+2015}"  ; (―) horizontal bar
-cmpMacronStroke.item["5"] := "{u+2010}"  ; (‐) hyphen
 cmpMacronStroke.item["9"] := "{u+2012}"  ; (‒) figure dash
 cmpMacronStroke.item["0"] := "{u+00ad}"  ; (­) soft hyphen (SHY)
 cmpMacronStroke.item["-"] := "{u+2011}"  ; (‑) non-breaking hyphen
 cmpMacronStroke.item["9"] := "{u+2012}"  ; (‒) figure dash
 cmpMacronStroke.item["0"] := "{u+00ad}"  ; (­) soft hyphen (SHY)
 cmpMacronStroke.item["-"] := "{u+2011}"  ; (‑) non-breaking hyphen
-cmpQuad.item["2"] := "{u+2000}"  ; en quad
-cmpQuad.item["3"] := "{u+2001}"  ; em quad
 
 
 ; Compose :  Arrows and Pointing Triangles
 
 
 ; Compose :  Arrows and Pointing Triangles
@@ -794,6 +796,22 @@ cmpArrow.item["i"] := "{u+25b3}"  ; (△) white up-pointing triangle
 cmpArrow.item["j"] := "{u+25c1}"  ; (◁) white left-pointing triangle
 cmpArrow.item["k"] := "{u+25bd}"  ; (▽) white down-pointing triangle
 cmpArrow.item["l"] := "{u+25b7}"  ; (▷) white right-pointing triangle
 cmpArrow.item["j"] := "{u+25c1}"  ; (◁) white left-pointing triangle
 cmpArrow.item["k"] := "{u+25bd}"  ; (▽) white down-pointing triangle
 cmpArrow.item["l"] := "{u+25b7}"  ; (▷) white right-pointing triangle
+cmpArrow.item["W"] := "{u+25b4}"  ; (▴) black up-pointing small triangle
+cmpArrow.item["A"] := "{u+25c2}"  ; (◂) black left-pointing small triangle
+cmpArrow.item["S"] := "{u+25be}"  ; (▾) black down-pointing small triangle
+cmpArrow.item["D"] := "{u+25b8}"  ; (▸) black right-pointing small triangle
+cmpArrow.item["I"] := "{u+25b5}"  ; (▵) white up-pointing small triangle
+cmpArrow.item["J"] := "{u+25c3}"  ; (◃) white left-pointing small triangle
+cmpArrow.item["K"] := "{u+25bf}"  ; (▿) white down-pointing small triangle
+cmpArrow.item["L"] := "{u+25b9}"  ; (▹) white right-pointing small triangle
+cmpArrow.item["q"] := "{u+25a0}"  ; (■) black square
+cmpArrow.item["u"] := "{u+25a1}"  ; (□) white square
+cmpArrow.item["Q"] := "{u+25aa}"  ; (▪) black small square
+cmpArrow.item["U"] := "{u+25ab}"  ; (▫) white small square
+cmpArrow.item["z"] := "{u+25c6}"  ; (◆) black diamond
+cmpArrow.item["m"] := "{u+25c7}"  ; (◇) white diamond
+cmpArrow.item["Z"] := "{u+2b25}"  ; (⬥) black medium diamond
+cmpArrow.item["M"] := "{u+2b26}"  ; (⬦) white medium diamond
 cmpArrow.item["1"] := "{u+2199}"  ; (↙) south west arrow
 cmpArrow.item["2"] := "{u+2193}"  ; (↓) downwards arrow
 cmpArrow.item["3"] := "{u+2198}"  ; (↘) south east arrow
 cmpArrow.item["1"] := "{u+2199}"  ; (↙) south west arrow
 cmpArrow.item["2"] := "{u+2193}"  ; (↓) downwards arrow
 cmpArrow.item["3"] := "{u+2198}"  ; (↘) south east arrow
@@ -846,6 +864,8 @@ cmpSymbols.item["x"] := "{u+203b}"  ; (※) reference mark
 cmpSymbols.item["2"] := "{u+266b}"  ; (♫) beamed eighth notes
 cmpSymbols.item["3"] := "{u+2042}"  ; (⁂) asterism
 cmpSymbols.item["4"] := "{u+203b}"  ; (※) reference mark
 cmpSymbols.item["2"] := "{u+266b}"  ; (♫) beamed eighth notes
 cmpSymbols.item["3"] := "{u+2042}"  ; (⁂) asterism
 cmpSymbols.item["4"] := "{u+203b}"  ; (※) reference mark
+cmpSymbols.item["5"] := "{u+2605}"  ; (★) black star
+cmpSymbols.item["6"] := "{u+2606}"  ; (☆) white star
 cmpSymbols.item["8"] := "{u+266a}"  ; (♪) eighth note
 cmpSymbols.item["!"] := "{u+203c}"  ; (‼) double exclamation mark
 cmpSymbols.item["?"] := "{u+2e2e}"  ; (⸮) reversed question mark
 cmpSymbols.item["8"] := "{u+266a}"  ; (♪) eighth note
 cmpSymbols.item["!"] := "{u+203c}"  ; (‼) double exclamation mark
 cmpSymbols.item["?"] := "{u+2e2e}"  ; (⸮) reversed question mark
@@ -948,6 +968,11 @@ cmpCapitalT.item["H"] := "{u+00de}"   ; (Þ) capital letter thorn
 
 cmpDigitEight := ComObjCreate("Scripting.Dictionary")
 cmpCapitalP := ComObjCreate("Scripting.Dictionary")
 
 cmpDigitEight := ComObjCreate("Scripting.Dictionary")
 cmpCapitalP := ComObjCreate("Scripting.Dictionary")
+cmpSmallY := ComObjCreate("Scripting.Dictionary")
+cmpCapitalV := ComObjCreate("Scripting.Dictionary")
+cmpCapitalY := ComObjCreate("Scripting.Dictionary")
+cmpSmallX := ComObjCreate("Scripting.Dictionary")
+cmpCapitalX := ComObjCreate("Scripting.Dictionary")
 cmpVerticalLine := ComObjCreate("Scripting.Dictionary")
 cmpAsterisk := ComObjCreate("Scripting.Dictionary")
 cmpExclam := ComObjCreate("Scripting.Dictionary")
 cmpVerticalLine := ComObjCreate("Scripting.Dictionary")
 cmpAsterisk := ComObjCreate("Scripting.Dictionary")
 cmpExclam := ComObjCreate("Scripting.Dictionary")
@@ -957,6 +982,8 @@ cmpPlus := ComObjCreate("Scripting.Dictionary")
 cmpPercent := ComObjCreate("Scripting.Dictionary")
 cmpLessThan := ComObjCreate("Scripting.Dictionary")
 cmpGreaterThan := ComObjCreate("Scripting.Dictionary")
 cmpPercent := ComObjCreate("Scripting.Dictionary")
 cmpLessThan := ComObjCreate("Scripting.Dictionary")
 cmpGreaterThan := ComObjCreate("Scripting.Dictionary")
+cmpSemicolon := ComObjCreate("Scripting.Dictionary")
+cmpBracketLeft := ComObjCreate("Scripting.Dictionary")
 cmpSmallD.item["d"] := "{u+2020}"        ; (†) dagger
 cmpCapitalD.item["D"] := "{u+2021}"      ; (‡) double dagger
 cmpSmallI.item["i"] := "{u+221e}"        ; (∞) infinity symbol
 cmpSmallD.item["d"] := "{u+2020}"        ; (†) dagger
 cmpCapitalD.item["D"] := "{u+2021}"      ; (‡) double dagger
 cmpSmallI.item["i"] := "{u+221e}"        ; (∞) infinity symbol
@@ -973,6 +1000,12 @@ cmpSmallR.item["4"] := "{u+221c}"        ; (∜) fourth root
 cmpSymbols.item["o"] := "{u+00a7}"       ; (§) section sign
 cmpCapitalS.item["o"] := "{u+00a7}"      ; (§) section sign
 cmpSmallT.item["m"] := "{u+2122}"        ; (™) trademark symbol
 cmpSymbols.item["o"] := "{u+00a7}"       ; (§) section sign
 cmpCapitalS.item["o"] := "{u+00a7}"      ; (§) section sign
 cmpSmallT.item["m"] := "{u+2122}"        ; (™) trademark symbol
+cmpCaron.item["v"] := "{u+2713}"         ; (✓) check mark
+cmpSmallY.item["y"] := "{u+2713}"        ; (✓) check mark
+cmpCapitalV.item["V"] := "{u+2714}"      ; (✔) heavy check mark
+cmpCapitalY.item["Y"] := "{u+2714}"      ; (✔) heavy check mark
+cmpSmallX.item["x"] := "{u+2717}"        ; (✗) ballot x
+cmpCapitalX.item["X"] := "{u+2718}"      ; (✘) heavy ballot x
 cmpVerticalLine.item["|"] := "{u+2016}"  ; (‖) double vertical line
 cmpAcuteAccent.item["1"] := "{u+2032}"   ; (′) prime
 cmpAcuteAccent.item["2"] := "{u+2033}"   ; (″) double prime
 cmpVerticalLine.item["|"] := "{u+2016}"  ; (‖) double vertical line
 cmpAcuteAccent.item["1"] := "{u+2032}"   ; (′) prime
 cmpAcuteAccent.item["2"] := "{u+2033}"   ; (″) double prime
@@ -1007,30 +1040,16 @@ cmpGreaterThan.item["="] := "{u+2265}"   ; (≥) greater-than or equal to
 cmpLessThan.item["+"] := "{u+2a7d}"      ; (⩽) less-than or slanted equal to
 cmpGreaterThan.item["+"] := "{u+2a7e}"   ; (⩾) greater-than or slanted equal to
 cmpTilde.item["~"] := "{u+2248}"         ; (≈) almost equal to
 cmpLessThan.item["+"] := "{u+2a7d}"      ; (⩽) less-than or slanted equal to
 cmpGreaterThan.item["+"] := "{u+2a7e}"   ; (⩾) greater-than or slanted equal to
 cmpTilde.item["~"] := "{u+2248}"         ; (≈) almost equal to
-
-
-; Compose :  Bullets and Small Geometric Shapes (;)
-
-cmpSemicolon := ComObjCreate("Scripting.Dictionary")
-cmpSemicolon.item["b"] := "{u+2022}"  ; (•) bullet
-cmpSemicolon.item["o"] := "{u+25e6}"  ; (◦) white bullet
-cmpSemicolon.item["h"] := "{u+2043}"  ; (⁃) hyphen bullet
-cmpSemicolon.item["t"] := "{u+2023}"  ; (‣) triangular bullet
-cmpSemicolon.item["q"] := "{u+25aa}"  ; (▪) black small square
-cmpSemicolon.item["u"] := "{u+25ab}"  ; (▫) white small square
-cmpSemicolon.item["w"] := "{u+25b4}"  ; (▴) black up-pointing small triangle
-cmpSemicolon.item["a"] := "{u+25c2}"  ; (◂) black left-pointing small triangle
-cmpSemicolon.item["s"] := "{u+25be}"  ; (▾) black down-pointing small triangle
-cmpSemicolon.item["d"] := "{u+25b8}"  ; (▸) black right-pointing small triangle
-cmpSemicolon.item["i"] := "{u+25b5}"  ; (▵) white up-pointing small triangle
-cmpSemicolon.item["j"] := "{u+25c3}"  ; (◃) white left-pointing small triangle
-cmpSemicolon.item["k"] := "{u+25bf}"  ; (▿) white down-pointing small triangle
-cmpSemicolon.item["l"] := "{u+25b9}"  ; (▹) white right-pointing small triangle
-cmpSemicolon.item["z"] := "{u+25a0}"  ; (■) black square
-cmpSemicolon.item["x"] := "{u+25a1}"  ; (□) white square
-cmpSemicolon.item["c"] := "{u+25c6}"  ; (◆) black diamond
-cmpSemicolon.item["v"] := "{u+25c7}"  ; (◇) white diamond
-cmpSemicolon.item[";"] := "{u+2022}"  ; (•) bullet
+cmpSemicolon.item["b"] := "{u+2022}"     ; (•) bullet
+cmpSemicolon.item["o"] := "{u+25e6}"     ; (◦) white bullet
+cmpSemicolon.item["w"] := "{u+25e6}"     ; (◦) white bullet
+cmpSemicolon.item["h"] := "{u+2043}"     ; (⁃) hyphen bullet
+cmpSemicolon.item["t"] := "{u+2023}"     ; (‣) triangular bullet
+cmpSemicolon.item[";"] := "{u+2022}"     ; (•) bullet
+cmpBracketLeft.item["]"] := "{u+2610}"   ; (☐) ballot box
+cmpBracketLeft.item["v"] := "{u+2611}"   ; (☑) ballot box with check
+cmpBracketLeft.item["y"] := "{u+2611}"   ; (☑) ballot box with check
+cmpBracketLeft.item["x"] := "{u+2612}"   ; (☒) ballot box with x
 
 
 ; Compose :  Vulgar Fractions
 
 
 ; Compose :  Vulgar Fractions
@@ -1065,7 +1084,6 @@ cmpDigitZero.item["3"] := "{u+2189}"   ; (↉) vulgar fraction 0/3
 
 ; Compose :  Quotation Marks
 
 
 ; Compose :  Quotation Marks
 
-cmpBracketLeft := ComObjCreate("Scripting.Dictionary")
 cmpBracketRight := ComObjCreate("Scripting.Dictionary")
 cmpBackslash := ComObjCreate("Scripting.Dictionary")
 cmpCedillaOgonek.item[chr(34)] := "{u+201e}"  ; („) double low-9 quotation mark
 cmpBracketRight := ComObjCreate("Scripting.Dictionary")
 cmpBackslash := ComObjCreate("Scripting.Dictionary")
 cmpCedillaOgonek.item[chr(34)] := "{u+201e}"  ; („) double low-9 quotation mark
@@ -1097,6 +1115,31 @@ cmpGreaterThan.item["'"] := "{u+203a}"        ; (›) right-pointing single angl
 cmpAcuteAccent.item[">"] := "{u+203a}"        ; (›) right-pointing single angle quotation mark
 
 
 cmpAcuteAccent.item[">"] := "{u+203a}"        ; (›) right-pointing single angle quotation mark
 
 
+; Compose :  Chess Pieces and Playing Card Suit Symbols (C)
+
+cmpCapitalC := ComObjCreate("Scripting.Dictionary")
+cmpCapitalC.item["k"] := "{u+2654}"  ; (♔) white chess king
+cmpCapitalC.item["q"] := "{u+2655}"  ; (♕) white chess queen
+cmpCapitalC.item["r"] := "{u+2656}"  ; (♖) white chess rook
+cmpCapitalC.item["b"] := "{u+2657}"  ; (♗) white chess bishop
+cmpCapitalC.item["n"] := "{u+2658}"  ; (♘) white chess knight
+cmpCapitalC.item["p"] := "{u+2659}"  ; (♙) white chess pawn
+cmpCapitalC.item["K"] := "{u+265a}"  ; (♚) black chess king
+cmpCapitalC.item["Q"] := "{u+265b}"  ; (♛) black chess queen
+cmpCapitalC.item["R"] := "{u+265c}"  ; (♜) black chess rook
+cmpCapitalC.item["B"] := "{u+265d}"  ; (♝) black chess bishop
+cmpCapitalC.item["N"] := "{u+265e}"  ; (♞) black chess knight
+cmpCapitalC.item["P"] := "{u+265f}"  ; (♟) black chess pawn
+cmpCapitalC.item["c"] := "{u+2667}"  ; (♧) white club suit
+cmpCapitalC.item["C"] := "{u+2663}"  ; (♣) black club suit
+cmpCapitalC.item["d"] := "{u+2662}"  ; (♢) white diamond suit
+cmpCapitalC.item["D"] := "{u+2666}"  ; (♦) black diamond suit
+cmpCapitalC.item["h"] := "{u+2661}"  ; (♡) white heart suit
+cmpCapitalC.item["H"] := "{u+2665}"  ; (♥) black heart suit
+cmpCapitalC.item["s"] := "{u+2664}"  ; (♤) white spade suit
+cmpCapitalC.item["S"] := "{u+2660}"  ; (♠) black spade suit
+
+
 ; Compose :  Double Grave Accent (G)
 
 cmpCapitalG := ComObjCreate("Scripting.Dictionary")
 ; Compose :  Double Grave Accent (G)
 
 cmpCapitalG := ComObjCreate("Scripting.Dictionary")
@@ -1248,6 +1291,30 @@ cmpGreaterThan.item["z"] := "{u+1e93}"  ; (ẓ) z with dot below
 cmpGreaterThan.item["Z"] := "{u+1e92}"  ; (Ẓ) Z with dot below
 
 
 cmpGreaterThan.item["Z"] := "{u+1e92}"  ; (Ẓ) Z with dot below
 
 
+; Accented Letters with Dot Below (?)
+
+cmpQuestion.item["a"] := "{u+1ead}"  ; (ậ) a with circumflex and dot below
+cmpQuestion.item["A"] := "{u+1eac}"  ; (Ậ) A with circumflex and dot below
+cmpQuestion.item["b"] := "{u+1eb7}"  ; (ặ) a with breve and dot below
+cmpQuestion.item["B"] := "{u+1eb6}"  ; (Ặ) A with breve and dot below
+cmpQuestion.item["e"] := "{u+1ec7}"  ; (ệ) e with circumflex and dot below
+cmpQuestion.item["E"] := "{u+1ec6}"  ; (Ệ) E with circumflex and dot below
+cmpQuestion.item["f"] := "{u+1e1d}"  ; (ḝ) e with cedilla and breve
+cmpQuestion.item["F"] := "{u+1e1c}"  ; (Ḝ) E with cedilla and breve
+cmpQuestion.item["l"] := "{u+1e39}"  ; (ḹ) l with dot below and macron
+cmpQuestion.item["L"] := "{u+1e38}"  ; (Ḹ) L with dot below and macron
+cmpQuestion.item["o"] := "{u+1ed9}"  ; (ộ) o with circumflex and dot below
+cmpQuestion.item["O"] := "{u+1ed8}"  ; (Ộ) O with circumflex and dot below
+cmpQuestion.item["r"] := "{u+1e5d}"  ; (ṝ) r with dot below and macron
+cmpQuestion.item["R"] := "{u+1e5c}"  ; (Ṝ) R with dot below and macron
+cmpQuestion.item["s"] := "{u+1e69}"  ; (ṩ) s with dot below and dot above
+cmpQuestion.item["S"] := "{u+1e68}"  ; (Ṩ) S with dot below and dot above
+cmpQuestion.item["t"] := "{u+1ee3}"  ; (ợ) o with horn and dot below
+cmpQuestion.item["T"] := "{u+1ee2}"  ; (Ợ) O with horn and dot below
+cmpQuestion.item["u"] := "{u+1ef1}"  ; (ự) u with horn and dot below
+cmpQuestion.item["U"] := "{u+1ef0}"  ; (Ự) U with horn and dot below
+
+
 ; Compose :  Miscellaneous Symbols and Dingbats
 
 cmpDigitSix := ComObjCreate("Scripting.Dictionary")
 ; Compose :  Miscellaneous Symbols and Dingbats
 
 cmpDigitSix := ComObjCreate("Scripting.Dictionary")
@@ -1446,31 +1513,6 @@ cmpDigitEight.item["m"] := "{u+27be}"  ; (➾) open-outlined rightwards arrow
 cmpDigitEight.item["n"] := "{u+27c1}"  ; (⟁) white triangle containing small white triangle
 
 
 cmpDigitEight.item["n"] := "{u+27c1}"  ; (⟁) white triangle containing small white triangle
 
 
-; Compose :  Chess Pieces and Playing Card Suit Symbols (C)
-
-cmpCapitalC := ComObjCreate("Scripting.Dictionary")
-cmpCapitalC.item["k"] := "{u+2654}"  ; (♔) white chess king
-cmpCapitalC.item["q"] := "{u+2655}"  ; (♕) white chess queen
-cmpCapitalC.item["r"] := "{u+2656}"  ; (♖) white chess rook
-cmpCapitalC.item["b"] := "{u+2657}"  ; (♗) white chess bishop
-cmpCapitalC.item["n"] := "{u+2658}"  ; (♘) white chess knight
-cmpCapitalC.item["p"] := "{u+2659}"  ; (♙) white chess pawn
-cmpCapitalC.item["K"] := "{u+265a}"  ; (♚) black chess king
-cmpCapitalC.item["Q"] := "{u+265b}"  ; (♛) black chess queen
-cmpCapitalC.item["R"] := "{u+265c}"  ; (♜) black chess rook
-cmpCapitalC.item["B"] := "{u+265d}"  ; (♝) black chess bishop
-cmpCapitalC.item["N"] := "{u+265e}"  ; (♞) black chess knight
-cmpCapitalC.item["P"] := "{u+265f}"  ; (♟) black chess pawn
-cmpCapitalC.item["c"] := "{u+2667}"  ; (♧) white club suit
-cmpCapitalC.item["C"] := "{u+2663}"  ; (♣) black club suit
-cmpCapitalC.item["d"] := "{u+2662}"  ; (♢) white diamond suit
-cmpCapitalC.item["D"] := "{u+2666}"  ; (♦) black diamond suit
-cmpCapitalC.item["h"] := "{u+2661}"  ; (♡) white heart suit
-cmpCapitalC.item["H"] := "{u+2665}"  ; (♥) black heart suit
-cmpCapitalC.item["s"] := "{u+2664}"  ; (♤) white spade suit
-cmpCapitalC.item["S"] := "{u+2660}"  ; (♠) black spade suit
-
-
 ; Compose :  Dingbat Negative Circled Digits (n)
 
 cmpSmallN.item["1"] := "{u+2776}"  ; (❶) dingbat negative circled digit 1
 ; Compose :  Dingbat Negative Circled Digits (n)
 
 cmpSmallN.item["1"] := "{u+2776}"  ; (❶) dingbat negative circled digit 1
@@ -2121,8 +2163,6 @@ cmpSmallN.item["0"] := "{u+277f}"  ; (❿) dingbat negative circled digit 10
     Send % cmpSubscript.item[keyB]
   else if (keyA == " ")
     Send % cmpSpace.item[keyB]
     Send % cmpSubscript.item[keyB]
   else if (keyA == " ")
     Send % cmpSpace.item[keyB]
-  else if (keyA == "q")
-    Send % cmpQuad.item[keyB]
   else if (keyA == "a")
     Send % cmpArrow.item[keyB]
   else if (keyA == "s")
   else if (keyA == "a")
     Send % cmpArrow.item[keyB]
   else if (keyA == "s")
@@ -2151,6 +2191,16 @@ cmpSmallN.item["0"] := "{u+277f}"  ; (❿) dingbat negative circled digit 10
     Send % cmpCapitalT.item[keyB]
   else if (keyA == "P")
     Send % cmpCapitalP.item[keyB]
     Send % cmpCapitalT.item[keyB]
   else if (keyA == "P")
     Send % cmpCapitalP.item[keyB]
+  else if (keyA == "y")
+    Send % cmpSmallY.item[keyB]
+  else if (keyA == "V")
+    Send % cmpCapitalV.item[keyB]
+  else if (keyA == "Y")
+    Send % cmpCapitalY.item[keyB]
+  else if (keyA == "x")
+    Send % cmpSmallX.item[keyB]
+  else if (keyA == "X")
+    Send % cmpCapitalX.item[keyB]
   else if (keyA == "|")
     Send % cmpVerticalLine.item[keyB]
   else if (keyA == "*")
   else if (keyA == "|")
     Send % cmpVerticalLine.item[keyB]
   else if (keyA == "*")
@@ -2171,6 +2221,8 @@ cmpSmallN.item["0"] := "{u+277f}"  ; (❿) dingbat negative circled digit 10
     Send % cmpLessThan.item[keyB]
   else if (keyA == ">")
     Send % cmpGreaterThan.item[keyB]
     Send % cmpLessThan.item[keyB]
   else if (keyA == ">")
     Send % cmpGreaterThan.item[keyB]
+  else if (keyA == "[")
+    Send % cmpBracketLeft.item[keyB]
   else if (keyA == ";")
     Send % cmpSemicolon.item[keyB]
   else if (keyA == "1")
   else if (keyA == ";")
     Send % cmpSemicolon.item[keyB]
   else if (keyA == "1")
@@ -2187,12 +2239,12 @@ cmpSmallN.item["0"] := "{u+277f}"  ; (❿) dingbat negative circled digit 10
     Send % cmpDigitSeven.item[keyB]
   else if (keyA == "0")
     Send % cmpDigitZero.item[keyB]
     Send % cmpDigitSeven.item[keyB]
   else if (keyA == "0")
     Send % cmpDigitZero.item[keyB]
-  else if (keyA == "[")
-    Send % cmpBracketLeft.item[keyB]
   else if (keyA == "]")
     Send % cmpBracketRight.item[keyB]
   else if (keyA == "\")
     Send % cmpBackslash.item[keyB]
   else if (keyA == "]")
     Send % cmpBracketRight.item[keyB]
   else if (keyA == "\")
     Send % cmpBackslash.item[keyB]
+  else if (keyA == "C")
+    Send % cmpCapitalC.item[keyB]
   else if (keyA == "G")
     Send % cmpCapitalG.item[keyB]
   else if (keyA == "B")
   else if (keyA == "G")
     Send % cmpCapitalG.item[keyB]
   else if (keyA == "B")
@@ -2203,8 +2255,6 @@ cmpSmallN.item["0"] := "{u+277f}"  ; (❿) dingbat negative circled digit 10
     Send % cmpCapitalR.item[keyB]
   else if (keyA == "6")
     Send % cmpDigitSix.item[keyB]
     Send % cmpCapitalR.item[keyB]
   else if (keyA == "6")
     Send % cmpDigitSix.item[keyB]
-  else if (keyA == "C")
-    Send % cmpCapitalC.item[keyB]
 
   keyA := ""  ; avoids leaking content via debug properties
   keyB := ""  ; avoids leaking content via debug properties
 
   keyA := ""  ; avoids leaking content via debug properties
   keyB := ""  ; avoids leaking content via debug properties
index 7ab442983fb43ca42e95826fb84bc99ae9fa3f5c..dc05188f0088662fc9b29e80d039221c199a54f2 100644 (file)
@@ -1,6 +1,6 @@
 #requires AutoHotkey v2
 
 #requires AutoHotkey v2
 
-; UltimateKEYS (for AutoHotkey v2).ahk - 2024-11-30
+; UltimateKEYS (for AutoHotkey v2).ahk - 2025-01-21
 
 ; Website :  https://pieter-degroote.github.io/UltimateKEYS/
 
 
 ; Website :  https://pieter-degroote.github.io/UltimateKEYS/
 
@@ -504,9 +504,13 @@ cmpSmallF["v"] := "{u+2c71}"  ; (ⱱ) v with right hook
 cmpSmallF["z"] := "{u+0290}"  ; (ʐ) z with retroflex hook
 
 
 cmpSmallF["z"] := "{u+0290}"  ; (ʐ) z with retroflex hook
 
 
-; Compose :  Swash Tail and Variations (t)
+; Compose :  Swash Tail and Other Variations (t)
 
 global cmpSmallT := Map()
 
 global cmpSmallT := Map()
+cmpSmallT["c"] := "{u+a793}"  ; (ꞓ) c with bar
+cmpSmallT["C"] := "{u+a792}"  ; (Ꞓ) C with bar
+cmpSmallT["f"] := "{u+a799}"  ; (ꞙ) f with stroke
+cmpSmallT["F"] := "{u+a798}"  ; (Ꞙ) F with stroke
 cmpSmallT["l"] := "{u+2c61}"  ; (ⱡ) l with double bar
 cmpSmallT["L"] := "{u+2c60}"  ; (Ⱡ) L with double bar
 cmpSmallT["s"] := "{u+023f}"  ; (ȿ) s with swash tail
 cmpSmallT["l"] := "{u+2c61}"  ; (ⱡ) l with double bar
 cmpSmallT["L"] := "{u+2c60}"  ; (Ⱡ) L with double bar
 cmpSmallT["s"] := "{u+023f}"  ; (ȿ) s with swash tail
@@ -759,29 +763,27 @@ cmpSubscript[")"] := "{u+208e}"  ; (₎) subscript )
 ; Compose :  Spacing Characters and Dashes
 
 global cmpSpace := Map()
 ; Compose :  Spacing Characters and Dashes
 
 global cmpSpace := Map()
-global cmpQuad := Map()
 cmpSpace["1"] := "{u+2004}"  ; three-per-em space
 cmpSpace["2"] := "{u+2002}"  ; en space
 cmpSpace["3"] := "{u+2003}"  ; em space
 cmpSpace["4"] := "{u+2005}"  ; four-per-em space
 cmpSpace["1"] := "{u+2004}"  ; three-per-em space
 cmpSpace["2"] := "{u+2002}"  ; en space
 cmpSpace["3"] := "{u+2003}"  ; em space
 cmpSpace["4"] := "{u+2005}"  ; four-per-em space
-cmpSpace["5"] := "{u+2008}"  ; punctuation space
 cmpSpace["6"] := "{u+2006}"  ; six-per-em space
 cmpSpace["6"] := "{u+2006}"  ; six-per-em space
-cmpSpace["7"] := "{u+2009}"  ; thin space
-cmpSpace["8"] := "{u+200a}"  ; hair space
 cmpSpace["9"] := "{u+2007}"  ; figure space
 cmpSpace["0"] := "{u+200b}"  ; zero-width space (ZWSP)
 cmpSpace["9"] := "{u+2007}"  ; figure space
 cmpSpace["0"] := "{u+200b}"  ; zero-width space (ZWSP)
+cmpSpace["b"] := "{u+00a0}"  ; non-breaking space (NBSP)
 cmpSpace["m"] := "{u+205f}"  ; medium mathematical space (MMSP)
 cmpSpace["n"] := "{u+202f}"  ; narrow no-break space (NNBSP)
 cmpSpace["m"] := "{u+205f}"  ; medium mathematical space (MMSP)
 cmpSpace["n"] := "{u+202f}"  ; narrow no-break space (NNBSP)
-cmpSpace[" "] := "{u+00a0}"  ; non-breaking space (NBSP)
+cmpSpace["p"] := "{u+2008}"  ; punctuation space
+cmpSpace["t"] := "{u+2009}"  ; thin space
+cmpSpace["h"] := "{u+200a}"  ; hair space
+cmpSpace["."] := "{u+2008}"  ; punctuation space
+cmpMacronStroke["1"] := "{u+2010}"  ; (‐) hyphen
 cmpMacronStroke["2"] := "{u+2013}"  ; (–) en dash
 cmpMacronStroke["3"] := "{u+2014}"  ; (—) em dash
 cmpMacronStroke["4"] := "{u+2015}"  ; (―) horizontal bar
 cmpMacronStroke["2"] := "{u+2013}"  ; (–) en dash
 cmpMacronStroke["3"] := "{u+2014}"  ; (—) em dash
 cmpMacronStroke["4"] := "{u+2015}"  ; (―) horizontal bar
-cmpMacronStroke["5"] := "{u+2010}"  ; (‐) hyphen
 cmpMacronStroke["9"] := "{u+2012}"  ; (‒) figure dash
 cmpMacronStroke["0"] := "{u+00ad}"  ; (­) soft hyphen (SHY)
 cmpMacronStroke["-"] := "{u+2011}"  ; (‑) non-breaking hyphen
 cmpMacronStroke["9"] := "{u+2012}"  ; (‒) figure dash
 cmpMacronStroke["0"] := "{u+00ad}"  ; (­) soft hyphen (SHY)
 cmpMacronStroke["-"] := "{u+2011}"  ; (‑) non-breaking hyphen
-cmpQuad["2"] := "{u+2000}"  ; en quad
-cmpQuad["3"] := "{u+2001}"  ; em quad
 
 
 ; Compose :  Arrows and Pointing Triangles
 
 
 ; Compose :  Arrows and Pointing Triangles
@@ -795,6 +797,22 @@ cmpArrow["i"] := "{u+25b3}"  ; (△) white up-pointing triangle
 cmpArrow["j"] := "{u+25c1}"  ; (◁) white left-pointing triangle
 cmpArrow["k"] := "{u+25bd}"  ; (▽) white down-pointing triangle
 cmpArrow["l"] := "{u+25b7}"  ; (▷) white right-pointing triangle
 cmpArrow["j"] := "{u+25c1}"  ; (◁) white left-pointing triangle
 cmpArrow["k"] := "{u+25bd}"  ; (▽) white down-pointing triangle
 cmpArrow["l"] := "{u+25b7}"  ; (▷) white right-pointing triangle
+cmpArrow["W"] := "{u+25b4}"  ; (▴) black up-pointing small triangle
+cmpArrow["A"] := "{u+25c2}"  ; (◂) black left-pointing small triangle
+cmpArrow["S"] := "{u+25be}"  ; (▾) black down-pointing small triangle
+cmpArrow["D"] := "{u+25b8}"  ; (▸) black right-pointing small triangle
+cmpArrow["I"] := "{u+25b5}"  ; (▵) white up-pointing small triangle
+cmpArrow["J"] := "{u+25c3}"  ; (◃) white left-pointing small triangle
+cmpArrow["K"] := "{u+25bf}"  ; (▿) white down-pointing small triangle
+cmpArrow["L"] := "{u+25b9}"  ; (▹) white right-pointing small triangle
+cmpArrow["q"] := "{u+25a0}"  ; (■) black square
+cmpArrow["u"] := "{u+25a1}"  ; (□) white square
+cmpArrow["Q"] := "{u+25aa}"  ; (▪) black small square
+cmpArrow["U"] := "{u+25ab}"  ; (▫) white small square
+cmpArrow["z"] := "{u+25c6}"  ; (◆) black diamond
+cmpArrow["m"] := "{u+25c7}"  ; (◇) white diamond
+cmpArrow["Z"] := "{u+2b25}"  ; (⬥) black medium diamond
+cmpArrow["M"] := "{u+2b26}"  ; (⬦) white medium diamond
 cmpArrow["1"] := "{u+2199}"  ; (↙) south west arrow
 cmpArrow["2"] := "{u+2193}"  ; (↓) downwards arrow
 cmpArrow["3"] := "{u+2198}"  ; (↘) south east arrow
 cmpArrow["1"] := "{u+2199}"  ; (↙) south west arrow
 cmpArrow["2"] := "{u+2193}"  ; (↓) downwards arrow
 cmpArrow["3"] := "{u+2198}"  ; (↘) south east arrow
@@ -847,6 +865,8 @@ cmpSymbols["x"] := "{u+203b}"  ; (※) reference mark
 cmpSymbols["2"] := "{u+266b}"  ; (♫) beamed eighth notes
 cmpSymbols["3"] := "{u+2042}"  ; (⁂) asterism
 cmpSymbols["4"] := "{u+203b}"  ; (※) reference mark
 cmpSymbols["2"] := "{u+266b}"  ; (♫) beamed eighth notes
 cmpSymbols["3"] := "{u+2042}"  ; (⁂) asterism
 cmpSymbols["4"] := "{u+203b}"  ; (※) reference mark
+cmpSymbols["5"] := "{u+2605}"  ; (★) black star
+cmpSymbols["6"] := "{u+2606}"  ; (☆) white star
 cmpSymbols["8"] := "{u+266a}"  ; (♪) eighth note
 cmpSymbols["!"] := "{u+203c}"  ; (‼) double exclamation mark
 cmpSymbols["?"] := "{u+2e2e}"  ; (⸮) reversed question mark
 cmpSymbols["8"] := "{u+266a}"  ; (♪) eighth note
 cmpSymbols["!"] := "{u+203c}"  ; (‼) double exclamation mark
 cmpSymbols["?"] := "{u+2e2e}"  ; (⸮) reversed question mark
@@ -949,6 +969,11 @@ cmpCapitalT["H"] := "{u+00de}"   ; (Þ) capital letter thorn
 
 global cmpDigitEight := Map()
 global cmpCapitalP := Map()
 
 global cmpDigitEight := Map()
 global cmpCapitalP := Map()
+global cmpSmallY := Map()
+global cmpCapitalV := Map()
+global cmpCapitalY := Map()
+global cmpSmallX := Map()
+global cmpCapitalX := Map()
 global cmpVerticalLine := Map()
 global cmpAsterisk := Map()
 global cmpExclam := Map()
 global cmpVerticalLine := Map()
 global cmpAsterisk := Map()
 global cmpExclam := Map()
@@ -958,6 +983,8 @@ global cmpPlus := Map()
 global cmpPercent := Map()
 global cmpLessThan := Map()
 global cmpGreaterThan := Map()
 global cmpPercent := Map()
 global cmpLessThan := Map()
 global cmpGreaterThan := Map()
+global cmpSemicolon := Map()
+global cmpBracketLeft := Map()
 cmpSmallD["d"] := "{u+2020}"        ; (†) dagger
 cmpCapitalD["D"] := "{u+2021}"      ; (‡) double dagger
 cmpSmallI["i"] := "{u+221e}"        ; (∞) infinity symbol
 cmpSmallD["d"] := "{u+2020}"        ; (†) dagger
 cmpCapitalD["D"] := "{u+2021}"      ; (‡) double dagger
 cmpSmallI["i"] := "{u+221e}"        ; (∞) infinity symbol
@@ -974,6 +1001,12 @@ cmpSmallR["4"] := "{u+221c}"        ; (∜) fourth root
 cmpSymbols["o"] := "{u+00a7}"       ; (§) section sign
 cmpCapitalS["o"] := "{u+00a7}"      ; (§) section sign
 cmpSmallT["m"] := "{u+2122}"        ; (™) trademark symbol
 cmpSymbols["o"] := "{u+00a7}"       ; (§) section sign
 cmpCapitalS["o"] := "{u+00a7}"      ; (§) section sign
 cmpSmallT["m"] := "{u+2122}"        ; (™) trademark symbol
+cmpCaron["v"] := "{u+2713}"         ; (✓) check mark
+cmpSmallY["y"] := "{u+2713}"        ; (✓) check mark
+cmpCapitalV["V"] := "{u+2714}"      ; (✔) heavy check mark
+cmpCapitalY["Y"] := "{u+2714}"      ; (✔) heavy check mark
+cmpSmallX["x"] := "{u+2717}"        ; (✗) ballot x
+cmpCapitalX["X"] := "{u+2718}"      ; (✘) heavy ballot x
 cmpVerticalLine["|"] := "{u+2016}"  ; (‖) double vertical line
 cmpAcuteAccent["1"] := "{u+2032}"   ; (′) prime
 cmpAcuteAccent["2"] := "{u+2033}"   ; (″) double prime
 cmpVerticalLine["|"] := "{u+2016}"  ; (‖) double vertical line
 cmpAcuteAccent["1"] := "{u+2032}"   ; (′) prime
 cmpAcuteAccent["2"] := "{u+2033}"   ; (″) double prime
@@ -1008,30 +1041,16 @@ cmpGreaterThan["="] := "{u+2265}"   ; (≥) greater-than or equal to
 cmpLessThan["+"] := "{u+2a7d}"      ; (⩽) less-than or slanted equal to
 cmpGreaterThan["+"] := "{u+2a7e}"   ; (⩾) greater-than or slanted equal to
 cmpTilde["~"] := "{u+2248}"         ; (≈) almost equal to
 cmpLessThan["+"] := "{u+2a7d}"      ; (⩽) less-than or slanted equal to
 cmpGreaterThan["+"] := "{u+2a7e}"   ; (⩾) greater-than or slanted equal to
 cmpTilde["~"] := "{u+2248}"         ; (≈) almost equal to
-
-
-; Compose :  Bullets and Small Geometric Shapes (;)
-
-global cmpSemicolon := Map()
-cmpSemicolon["b"] := "{u+2022}"  ; (•) bullet
-cmpSemicolon["o"] := "{u+25e6}"  ; (◦) white bullet
-cmpSemicolon["h"] := "{u+2043}"  ; (⁃) hyphen bullet
-cmpSemicolon["t"] := "{u+2023}"  ; (‣) triangular bullet
-cmpSemicolon["q"] := "{u+25aa}"  ; (▪) black small square
-cmpSemicolon["u"] := "{u+25ab}"  ; (▫) white small square
-cmpSemicolon["w"] := "{u+25b4}"  ; (▴) black up-pointing small triangle
-cmpSemicolon["a"] := "{u+25c2}"  ; (◂) black left-pointing small triangle
-cmpSemicolon["s"] := "{u+25be}"  ; (▾) black down-pointing small triangle
-cmpSemicolon["d"] := "{u+25b8}"  ; (▸) black right-pointing small triangle
-cmpSemicolon["i"] := "{u+25b5}"  ; (▵) white up-pointing small triangle
-cmpSemicolon["j"] := "{u+25c3}"  ; (◃) white left-pointing small triangle
-cmpSemicolon["k"] := "{u+25bf}"  ; (▿) white down-pointing small triangle
-cmpSemicolon["l"] := "{u+25b9}"  ; (▹) white right-pointing small triangle
-cmpSemicolon["z"] := "{u+25a0}"  ; (■) black square
-cmpSemicolon["x"] := "{u+25a1}"  ; (□) white square
-cmpSemicolon["c"] := "{u+25c6}"  ; (◆) black diamond
-cmpSemicolon["v"] := "{u+25c7}"  ; (◇) white diamond
-cmpSemicolon[";"] := "{u+2022}"  ; (•) bullet
+cmpSemicolon["b"] := "{u+2022}"     ; (•) bullet
+cmpSemicolon["o"] := "{u+25e6}"     ; (◦) white bullet
+cmpSemicolon["w"] := "{u+25e6}"     ; (◦) white bullet
+cmpSemicolon["h"] := "{u+2043}"     ; (⁃) hyphen bullet
+cmpSemicolon["t"] := "{u+2023}"     ; (‣) triangular bullet
+cmpSemicolon[";"] := "{u+2022}"     ; (•) bullet
+cmpBracketLeft["]"] := "{u+2610}"   ; (☐) ballot box
+cmpBracketLeft["v"] := "{u+2611}"   ; (☑) ballot box with check
+cmpBracketLeft["y"] := "{u+2611}"   ; (☑) ballot box with check
+cmpBracketLeft["x"] := "{u+2612}"   ; (☒) ballot box with x
 
 
 ; Compose :  Vulgar Fractions
 
 
 ; Compose :  Vulgar Fractions
@@ -1066,7 +1085,6 @@ cmpDigitZero["3"] := "{u+2189}"   ; (↉) vulgar fraction 0/3
 
 ; Compose :  Quotation Marks
 
 
 ; Compose :  Quotation Marks
 
-global cmpBracketLeft := Map()
 global cmpBracketRight := Map()
 global cmpBackslash := Map()
 cmpCedillaOgonek[chr(34)] := "{u+201e}"  ; („) double low-9 quotation mark
 global cmpBracketRight := Map()
 global cmpBackslash := Map()
 cmpCedillaOgonek[chr(34)] := "{u+201e}"  ; („) double low-9 quotation mark
@@ -1098,6 +1116,31 @@ cmpGreaterThan["'"] := "{u+203a}"        ; (›) right-pointing single angle quo
 cmpAcuteAccent[">"] := "{u+203a}"        ; (›) right-pointing single angle quotation mark
 
 
 cmpAcuteAccent[">"] := "{u+203a}"        ; (›) right-pointing single angle quotation mark
 
 
+; Compose :  Chess Pieces and Playing Card Suit Symbols (C)
+
+global cmpCapitalC := Map()
+cmpCapitalC["k"] := "{u+2654}"  ; (♔) white chess king
+cmpCapitalC["q"] := "{u+2655}"  ; (♕) white chess queen
+cmpCapitalC["r"] := "{u+2656}"  ; (♖) white chess rook
+cmpCapitalC["b"] := "{u+2657}"  ; (♗) white chess bishop
+cmpCapitalC["n"] := "{u+2658}"  ; (♘) white chess knight
+cmpCapitalC["p"] := "{u+2659}"  ; (♙) white chess pawn
+cmpCapitalC["K"] := "{u+265a}"  ; (♚) black chess king
+cmpCapitalC["Q"] := "{u+265b}"  ; (♛) black chess queen
+cmpCapitalC["R"] := "{u+265c}"  ; (♜) black chess rook
+cmpCapitalC["B"] := "{u+265d}"  ; (♝) black chess bishop
+cmpCapitalC["N"] := "{u+265e}"  ; (♞) black chess knight
+cmpCapitalC["P"] := "{u+265f}"  ; (♟) black chess pawn
+cmpCapitalC["c"] := "{u+2667}"  ; (♧) white club suit
+cmpCapitalC["C"] := "{u+2663}"  ; (♣) black club suit
+cmpCapitalC["d"] := "{u+2662}"  ; (♢) white diamond suit
+cmpCapitalC["D"] := "{u+2666}"  ; (♦) black diamond suit
+cmpCapitalC["h"] := "{u+2661}"  ; (♡) white heart suit
+cmpCapitalC["H"] := "{u+2665}"  ; (♥) black heart suit
+cmpCapitalC["s"] := "{u+2664}"  ; (♤) white spade suit
+cmpCapitalC["S"] := "{u+2660}"  ; (♠) black spade suit
+
+
 ; Compose :  Double Grave Accent (G)
 
 global cmpCapitalG := Map()
 ; Compose :  Double Grave Accent (G)
 
 global cmpCapitalG := Map()
@@ -1249,6 +1292,30 @@ cmpGreaterThan["z"] := "{u+1e93}"  ; (ẓ) z with dot below
 cmpGreaterThan["Z"] := "{u+1e92}"  ; (Ẓ) Z with dot below
 
 
 cmpGreaterThan["Z"] := "{u+1e92}"  ; (Ẓ) Z with dot below
 
 
+; Accented Letters with Dot Below (?)
+
+cmpQuestion["a"] := "{u+1ead}"  ; (ậ) a with circumflex and dot below
+cmpQuestion["A"] := "{u+1eac}"  ; (Ậ) A with circumflex and dot below
+cmpQuestion["b"] := "{u+1eb7}"  ; (ặ) a with breve and dot below
+cmpQuestion["B"] := "{u+1eb6}"  ; (Ặ) A with breve and dot below
+cmpQuestion["e"] := "{u+1ec7}"  ; (ệ) e with circumflex and dot below
+cmpQuestion["E"] := "{u+1ec6}"  ; (Ệ) E with circumflex and dot below
+cmpQuestion["f"] := "{u+1e1d}"  ; (ḝ) e with cedilla and breve
+cmpQuestion["F"] := "{u+1e1c}"  ; (Ḝ) E with cedilla and breve
+cmpQuestion["l"] := "{u+1e39}"  ; (ḹ) l with dot below and macron
+cmpQuestion["L"] := "{u+1e38}"  ; (Ḹ) L with dot below and macron
+cmpQuestion["o"] := "{u+1ed9}"  ; (ộ) o with circumflex and dot below
+cmpQuestion["O"] := "{u+1ed8}"  ; (Ộ) O with circumflex and dot below
+cmpQuestion["r"] := "{u+1e5d}"  ; (ṝ) r with dot below and macron
+cmpQuestion["R"] := "{u+1e5c}"  ; (Ṝ) R with dot below and macron
+cmpQuestion["s"] := "{u+1e69}"  ; (ṩ) s with dot below and dot above
+cmpQuestion["S"] := "{u+1e68}"  ; (Ṩ) S with dot below and dot above
+cmpQuestion["t"] := "{u+1ee3}"  ; (ợ) o with horn and dot below
+cmpQuestion["T"] := "{u+1ee2}"  ; (Ợ) O with horn and dot below
+cmpQuestion["u"] := "{u+1ef1}"  ; (ự) u with horn and dot below
+cmpQuestion["U"] := "{u+1ef0}"  ; (Ự) U with horn and dot below
+
+
 ; Compose :  Miscellaneous Symbols and Dingbats
 
 global cmpDigitSix := Map()
 ; Compose :  Miscellaneous Symbols and Dingbats
 
 global cmpDigitSix := Map()
@@ -1447,31 +1514,6 @@ cmpDigitEight["m"] := "{u+27be}"  ; (➾) open-outlined rightwards arrow
 cmpDigitEight["n"] := "{u+27c1}"  ; (⟁) white triangle containing small white triangle
 
 
 cmpDigitEight["n"] := "{u+27c1}"  ; (⟁) white triangle containing small white triangle
 
 
-; Compose :  Chess Pieces and Playing Card Suit Symbols (C)
-
-global cmpCapitalC := Map()
-cmpCapitalC["k"] := "{u+2654}"  ; (♔) white chess king
-cmpCapitalC["q"] := "{u+2655}"  ; (♕) white chess queen
-cmpCapitalC["r"] := "{u+2656}"  ; (♖) white chess rook
-cmpCapitalC["b"] := "{u+2657}"  ; (♗) white chess bishop
-cmpCapitalC["n"] := "{u+2658}"  ; (♘) white chess knight
-cmpCapitalC["p"] := "{u+2659}"  ; (♙) white chess pawn
-cmpCapitalC["K"] := "{u+265a}"  ; (♚) black chess king
-cmpCapitalC["Q"] := "{u+265b}"  ; (♛) black chess queen
-cmpCapitalC["R"] := "{u+265c}"  ; (♜) black chess rook
-cmpCapitalC["B"] := "{u+265d}"  ; (♝) black chess bishop
-cmpCapitalC["N"] := "{u+265e}"  ; (♞) black chess knight
-cmpCapitalC["P"] := "{u+265f}"  ; (♟) black chess pawn
-cmpCapitalC["c"] := "{u+2667}"  ; (♧) white club suit
-cmpCapitalC["C"] := "{u+2663}"  ; (♣) black club suit
-cmpCapitalC["d"] := "{u+2662}"  ; (♢) white diamond suit
-cmpCapitalC["D"] := "{u+2666}"  ; (♦) black diamond suit
-cmpCapitalC["h"] := "{u+2661}"  ; (♡) white heart suit
-cmpCapitalC["H"] := "{u+2665}"  ; (♥) black heart suit
-cmpCapitalC["s"] := "{u+2664}"  ; (♤) white spade suit
-cmpCapitalC["S"] := "{u+2660}"  ; (♠) black spade suit
-
-
 ; Compose :  Dingbat Negative Circled Digits (n)
 
 cmpSmallN["1"] := "{u+2776}"  ; (❶) dingbat negative circled digit 1
 ; Compose :  Dingbat Negative Circled Digits (n)
 
 cmpSmallN["1"] := "{u+2776}"  ; (❶) dingbat negative circled digit 1
@@ -2175,10 +2217,6 @@ cmpSmallN["0"] := "{u+277f}"  ; (❿) dingbat negative circled digit 10
     if cmpSpace.Has(ihB.Input)
       Send cmpSpace[ihB.Input]
   }
     if cmpSpace.Has(ihB.Input)
       Send cmpSpace[ihB.Input]
   }
-  else if (ihA.Input == "q") {
-    if cmpQuad.Has(ihB.Input)
-      Send cmpQuad[ihB.Input]
-  }
   else if (ihA.Input == "a") {
     if cmpArrow.Has(ihB.Input)
       Send cmpArrow[ihB.Input]
   else if (ihA.Input == "a") {
     if cmpArrow.Has(ihB.Input)
       Send cmpArrow[ihB.Input]
@@ -2235,6 +2273,26 @@ cmpSmallN["0"] := "{u+277f}"  ; (❿) dingbat negative circled digit 10
     if cmpCapitalP.Has(ihB.Input)
       Send cmpCapitalP[ihB.Input]
   }
     if cmpCapitalP.Has(ihB.Input)
       Send cmpCapitalP[ihB.Input]
   }
+  else if (ihA.Input == "y") {
+    if cmpSmallY.Has(ihB.Input)
+      Send cmpSmallY[ihB.Input]
+  }
+  else if (ihA.Input == "V") {
+    if cmpCapitalV.Has(ihB.Input)
+      Send cmpCapitalV[ihB.Input]
+  }
+  else if (ihA.Input == "Y") {
+    if cmpCapitalY.Has(ihB.Input)
+      Send cmpCapitalY[ihB.Input]
+  }
+  else if (ihA.Input == "x") {
+    if cmpSmallX.Has(ihB.Input)
+      Send cmpSmallX[ihB.Input]
+  }
+  else if (ihA.Input == "X") {
+    if cmpCapitalX.Has(ihB.Input)
+      Send cmpCapitalX[ihB.Input]
+  }
   else if (ihA.Input == "|") {
     if cmpVerticalLine.Has(ihB.Input)
       Send cmpVerticalLine[ihB.Input]
   else if (ihA.Input == "|") {
     if cmpVerticalLine.Has(ihB.Input)
       Send cmpVerticalLine[ihB.Input]
@@ -2275,6 +2333,10 @@ cmpSmallN["0"] := "{u+277f}"  ; (❿) dingbat negative circled digit 10
     if cmpGreaterThan.Has(ihB.Input)
       Send cmpGreaterThan[ihB.Input]
   }
     if cmpGreaterThan.Has(ihB.Input)
       Send cmpGreaterThan[ihB.Input]
   }
+  else if (ihA.Input == "[") {
+    if cmpBracketLeft.Has(ihB.Input)
+      Send cmpBracketLeft[ihB.Input]
+  }
   else if (ihA.Input == ";") {
     if cmpSemicolon.Has(ihB.Input)
       Send cmpSemicolon[ihB.Input]
   else if (ihA.Input == ";") {
     if cmpSemicolon.Has(ihB.Input)
       Send cmpSemicolon[ihB.Input]
@@ -2307,10 +2369,6 @@ cmpSmallN["0"] := "{u+277f}"  ; (❿) dingbat negative circled digit 10
     if cmpDigitZero.Has(ihB.Input)
       Send cmpDigitZero[ihB.Input]
   }
     if cmpDigitZero.Has(ihB.Input)
       Send cmpDigitZero[ihB.Input]
   }
-  else if (ihA.Input == "[") {
-    if cmpBracketLeft.Has(ihB.Input)
-      Send cmpBracketLeft[ihB.Input]
-  }
   else if (ihA.Input == "]") {
     if cmpBracketRight.Has(ihB.Input)
       Send cmpBracketRight[ihB.Input]
   else if (ihA.Input == "]") {
     if cmpBracketRight.Has(ihB.Input)
       Send cmpBracketRight[ihB.Input]
@@ -2319,6 +2377,10 @@ cmpSmallN["0"] := "{u+277f}"  ; (❿) dingbat negative circled digit 10
     if cmpBackslash.Has(ihB.Input)
       Send cmpBackslash[ihB.Input]
   }
     if cmpBackslash.Has(ihB.Input)
       Send cmpBackslash[ihB.Input]
   }
+  else if (ihA.Input == "C") {
+    if cmpCapitalC.Has(ihB.Input)
+      Send cmpCapitalC[ihB.Input]
+  }
   else if (ihA.Input == "G") {
     if cmpCapitalG.Has(ihB.Input)
       Send cmpCapitalG[ihB.Input]
   else if (ihA.Input == "G") {
     if cmpCapitalG.Has(ihB.Input)
       Send cmpCapitalG[ihB.Input]
@@ -2339,8 +2401,4 @@ cmpSmallN["0"] := "{u+277f}"  ; (❿) dingbat negative circled digit 10
     if cmpDigitSix.Has(ihB.Input)
       Send cmpDigitSix[ihB.Input]
   }
     if cmpDigitSix.Has(ihB.Input)
       Send cmpDigitSix[ihB.Input]
   }
-  else if (ihA.Input == "C") {
-    if cmpCapitalC.Has(ihB.Input)
-      Send cmpCapitalC[ihB.Input]
-  }
 }
 }