summaryrefslogtreecommitdiff
path: root/windows/neo-vars/src/source/makecompose.ahk
diff options
context:
space:
mode:
authormartin_r <martin_r@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2008-11-13 17:14:59 +0000
committermartin_r <martin_r@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2008-11-13 17:14:59 +0000
commit22000d59b5c0fb737a0f683f2be5e71bc11f71a1 (patch)
treefccccabaf7df065bfed45a035d555fb252fd0919 /windows/neo-vars/src/source/makecompose.ahk
parentfe102c86d57416be8877bacce060748430874f97 (diff)
downloadneo-layout-22000d59b5c0fb737a0f683f2be5e71bc11f71a1.tar.gz
neo-layout-22000d59b5c0fb737a0f683f2be5e71bc11f71a1.tar.bz2
neo-layout-22000d59b5c0fb737a0f683f2be5e71bc11f71a1.zip
git-svn-id: https://svn.neo-layout.org@1187 b9310e46-f624-0410-8ea1-cfbb3a30dc96
Diffstat (limited to 'windows/neo-vars/src/source/makecompose.ahk')
-rw-r--r--windows/neo-vars/src/source/makecompose.ahk1925
1 files changed, 1925 insertions, 0 deletions
diff --git a/windows/neo-vars/src/source/makecompose.ahk b/windows/neo-vars/src/source/makecompose.ahk
new file mode 100644
index 0000000..5f96163
--- /dev/null
+++ b/windows/neo-vars/src/source/makecompose.ahk
@@ -0,0 +1,1925 @@
+; -*- encoding:utf-8 -*-
+; AHK versteht zwar kein utf-8, aber so lässt sich’s doch leichter eingeben.
+
+
+check(name,val) {
+ global
+ if ((XSym == name) and (ResName == "")) {
+ ResName := val
+ return 1
+ }
+ return 0
+}
+
+convertXkbsym(X) {
+ global
+ XSym := X
+ ResName := ""
+ check("BackSpace" ,"U0008")
+ check("Tab" ,"U0009")
+ check("Return" ,"U000D")
+ check("Delete" ,"S_Del")
+ check("Multi_key" ,"SComp")
+ check("Home" ,"SHome")
+ check("Left" ,"SLeft")
+ check("Up" ,"S__Up")
+ check("Right" ,"SRght")
+ check("Down" ,"SDown")
+ check("Prior" ,"SPgUp")
+ check("Page_Up" ,"SPgUp")
+ check("Next" ,"SPgDn")
+ check("Page_Down" ,"SPgDn")
+ check("End" ,"S_End")
+ check("Insert" ,"S_Ins")
+ check("KP_Space" ,"SNSpc") ; not
+ check("KP_Tab" ,"SNTab") ; not
+ check("KP_Enter" ,"SNEnt")
+ check("KP_F1" ,"SNF_1") ; not
+ check("KP_F2" ,"SNF_2") ; not
+ check("KP_F3" ,"SNF_3") ; not
+ check("KP_F4" ,"SNF_4") ; not
+ check("KP_Home" ,"SNHom")
+ check("KP_Left" ,"SN_Le")
+ check("KP_Up" ,"SN_Up")
+ check("KP_Right" ,"SN_Ri")
+ check("KP_Down" ,"SN_Dn")
+ check("KP_Prior" ,"SNPUp")
+ check("KP_Page_Up" ,"SNPUp")
+ check("KP_Next" ,"SNPDn")
+ check("KP_Page_Down" ,"SNPDn")
+ check("KP_End" ,"SNEnd")
+ check("KP_Begin" ,"SNBgn") ; not
+ check("KP_Insert" ,"SNIns")
+ check("KP_Delete" ,"SNDel")
+ check("KP_Equal" ,"SNEql") ; not
+ check("KP_Multiply" ,"SNMul")
+ check("KP_Add" ,"SNAdd")
+ check("KP_Separator" ,"SNSep") ; not
+ check("KP_Subtract" ,"SNSub")
+ check("KP_Decimal" ,"SNDot")
+ check("KP_Divide" ,"SNDiv")
+ check("KP_0" ,"SN__0")
+ check("KP_1" ,"SN__1")
+ check("KP_2" ,"SN__2")
+ check("KP_3" ,"SN__3")
+ check("KP_4" ,"SN__4")
+ check("KP_5" ,"SN__5")
+ check("KP_6" ,"SN__6")
+ check("KP_7" ,"SN__7")
+ check("KP_8" ,"SN__8")
+ check("KP_9" ,"SN__9")
+ check("dead_acute" ,"Tacut")
+ check("dead_grave" ,"Tgrav")
+ check("dead_cedilla" ,"Tcedi")
+ check("dead_abovedot" ,"Tabdt")
+ check("dead_ogonek" ,"Togon")
+ check("dead_abovering" ,"Tobrg")
+ check("dead_circumflex" ,"Tcflx")
+ check("dead_caron" ,"Tcron")
+ check("dead_breve" ,"Tbrve")
+ check("dead_belowdot" ,"Tbldt")
+ check("dead_tilde" ,"Ttlde")
+ check("dead_macron" ,"Tmcrn")
+ check("dead_diaeresis" ,"Tdrss")
+ check("dead_doubleacute" ,"Tdbac")
+ check("dead_stroke" ,"Tstrk")
+ check("space" ,"U0020")
+ check("dead_space" ,"U00A0")
+ check("exclam" ,"U0021")
+ check("quotedbl" ,"U0022")
+ check("numbersign" ,"U0023")
+ check("dollar" ,"U0024")
+ check("percent" ,"U0025")
+ check("ampersand" ,"U0026")
+ check("apostrophe" ,"U0027")
+ check("quoteright" ,"U0027")
+ check("parenleft" ,"U0028")
+ check("parenright" ,"U0029")
+ check("asterisk" ,"U002A")
+ check("plus" ,"U002B")
+ check("comma" ,"U002C")
+ check("minus" ,"U002D")
+ check("period" ,"U002E")
+ check("slash" ,"U002F")
+ check("0" ,"U0030")
+ check("1" ,"U0031")
+ check("2" ,"U0032")
+ check("3" ,"U0033")
+ check("4" ,"U0034")
+ check("5" ,"U0035")
+ check("6" ,"U0036")
+ check("7" ,"U0037")
+ check("8" ,"U0038")
+ check("9" ,"U0039")
+ check("colon" ,"U003A")
+ check("semicolon" ,"U003B")
+ check("less" ,"U003C")
+ check("equal" ,"U003D")
+ check("greater" ,"U003E")
+ check("question" ,"U003F")
+ check("at" ,"U0040")
+ check("A" ,"U0041")
+ check("B" ,"U0042")
+ check("C" ,"U0043")
+ check("D" ,"U0044")
+ check("E" ,"U0045")
+ check("F" ,"U0046")
+ check("G" ,"U0047")
+ check("H" ,"U0048")
+ check("I" ,"U0049")
+ check("J" ,"U004A")
+ check("K" ,"U004B")
+ check("L" ,"U004C")
+ check("M" ,"U004D")
+ check("N" ,"U004E")
+ check("O" ,"U004F")
+ check("P" ,"U0050")
+ check("Q" ,"U0051")
+ check("R" ,"U0052")
+ check("S" ,"U0053")
+ check("T" ,"U0054")
+ check("U" ,"U0055")
+ check("V" ,"U0056")
+ check("W" ,"U0057")
+ check("X" ,"U0058")
+ check("Y" ,"U0059")
+ check("Z" ,"U005A")
+ check("bracketleft" ,"U005B")
+ check("backslash" ,"U005C")
+ check("bracketright" ,"U005D")
+ check("asciicircum" ,"U005E")
+ check("underscore" ,"U005F")
+ check("grave" ,"U0060")
+ check("quoteleft" ,"U0060")
+ check("a" ,"U0061")
+ check("b" ,"U0062")
+ check("c" ,"U0063")
+ check("d" ,"U0064")
+ check("e" ,"U0065")
+ check("f" ,"U0066")
+ check("g" ,"U0067")
+ check("h" ,"U0068")
+ check("i" ,"U0069")
+ check("j" ,"U006A")
+ check("k" ,"U006B")
+ check("l" ,"U006C")
+ check("m" ,"U006D")
+ check("n" ,"U006E")
+ check("o" ,"U006F")
+ check("p" ,"U0070")
+ check("q" ,"U0071")
+ check("r" ,"U0072")
+ check("s" ,"U0073")
+ check("t" ,"U0074")
+ check("u" ,"U0075")
+ check("v" ,"U0076")
+ check("w" ,"U0077")
+ check("x" ,"U0078")
+ check("y" ,"U0079")
+ check("z" ,"U007A")
+ check("braceleft" ,"U007B")
+ check("bar" ,"U007C")
+ check("braceright" ,"U007D")
+ check("asciitilde" ,"U007E")
+ check("ſ" ,"U017F")
+
+; following codes are auto-generated from keysymdef.h (manually disabled if already defined or override)
+
+; check("BackSpace","U232B")
+; check("Tab","U21E5")
+; check("Return","U21B2")
+; check("Escape","U2327")
+; check("Delete","U2326")
+; check("Multi_key","U266B")
+; check("Home","U21F1")
+; check("Left","U21E0")
+; check("Up","U21E1")
+; check("Right","U21E2")
+; check("Down","U21E3")
+; check("Prior","U21DE")
+; check("Page_Up","U21DE")
+; check("Next","U21DF")
+; check("Page_Down","U21DF")
+; check("End","U21F2")
+; check("Insert","U2380")
+; check("KP_Enter","U2386")
+; check("KP_Home","U21F1")
+; check("KP_Left","U21E0")
+; check("KP_Up","U21E1")
+; check("KP_Right","U21E2")
+; check("KP_Down","U21E3")
+; check("KP_Prior","U21DE")
+; check("KP_Page_Up","U21DE")
+; check("KP_Next","U21DF")
+; check("KP_Page_Down","U21DF")
+; check("KP_End","U21F2")
+; check("KP_Insert","U2380")
+; check("KP_Delete","U2326")
+; check("KP_Multiply","U002A")
+; check("KP_Add","U002B")
+; check("KP_Subtract","U002D")
+; check("KP_Decimal","U2396")
+; check("KP_Divide","U2215")
+; check("KP_0","U0030")
+; check("KP_1","U0031")
+; check("KP_2","U0032")
+; check("KP_3","U0033")
+; check("KP_4","U0034")
+; check("KP_5","U0035")
+; check("KP_6","U0036")
+; check("KP_7","U0037")
+; check("KP_8","U0038")
+; check("KP_9","U0039")
+ check("Shift_L","U21E7")
+ check("Shift_R","U21E7")
+ check("Shift_Lock","U21E7")
+; check("ISO_Left_Tab","U21E4")
+; check("dead_grave","U0060")
+; check("dead_acute","U02CA")
+; check("dead_circumflex","U005E")
+; check("dead_tilde","U007E")
+; check("dead_macron","U02C9")
+; check("dead_breve","U0306")
+; check("dead_abovedot","U02D9")
+; check("dead_diaeresis","U00A8")
+; check("dead_abovering","U02DA")
+; check("dead_doubleacute","U02DD")
+; check("dead_caron","U02C7")
+; check("dead_cedilla","U00B8")
+; check("dead_ogonek","U02DB")
+; check("dead_belowdot","U0323")
+; check("dead_stroke","U0335")
+; check("space","U0020")
+; check("exclam","U0021")
+; check("quotedbl","U0022")
+; check("numbersign","U0023")
+; check("dollar","U0024")
+; check("percent","U0025")
+; check("ampersand","U0026")
+; check("apostrophe","U0027")
+; check("parenleft","U0028")
+; check("parenright","U0029")
+; check("asterisk","U002A")
+; check("plus","U002B")
+; check("comma","U002C")
+; check("minus","U002D")
+; check("period","U002E")
+; check("slash","U002F")
+; check("0","U0030")
+; check("1","U0031")
+; check("2","U0032")
+; check("3","U0033")
+; check("4","U0034")
+; check("5","U0035")
+; check("6","U0036")
+; check("7","U0037")
+; check("8","U0038")
+; check("9","U0039")
+; check("colon","U003A")
+; check("semicolon","U003B")
+; check("less","U003C")
+; check("equal","U003D")
+; check("greater","U003E")
+; check("question","U003F")
+; check("at","U0040")
+; check("A","U0041")
+; check("B","U0042")
+; check("C","U0043")
+; check("D","U0044")
+; check("E","U0045")
+; check("F","U0046")
+; check("G","U0047")
+; check("H","U0048")
+; check("I","U0049")
+; check("J","U004A")
+; check("K","U004B")
+; check("L","U004C")
+; check("M","U004D")
+; check("N","U004E")
+; check("O","U004F")
+; check("P","U0050")
+; check("Q","U0051")
+; check("R","U0052")
+; check("S","U0053")
+; check("T","U0054")
+; check("U","U0055")
+; check("V","U0056")
+; check("W","U0057")
+; check("X","U0058")
+; check("Y","U0059")
+; check("Z","U005A")
+; check("bracketleft","U005B")
+; check("backslash","U005C")
+; check("bracketright","U005D")
+; check("asciicircum","U005E")
+; check("underscore","U005F")
+; check("grave","U0060")
+; check("a","U0061")
+; check("b","U0062")
+; check("c","U0063")
+; check("d","U0064")
+; check("e","U0065")
+; check("f","U0066")
+; check("g","U0067")
+; check("h","U0068")
+; check("i","U0069")
+; check("j","U006A")
+; check("k","U006B")
+; check("l","U006C")
+; check("m","U006D")
+; check("n","U006E")
+; check("o","U006F")
+; check("p","U0070")
+; check("q","U0071")
+; check("r","U0072")
+; check("s","U0073")
+; check("t","U0074")
+; check("u","U0075")
+; check("v","U0076")
+; check("w","U0077")
+; check("x","U0078")
+; check("y","U0079")
+; check("z","U007A")
+; check("braceleft","U007B")
+; check("bar","U007C")
+; check("braceright","U007D")
+; check("asciitilde","U007E")
+ check("nobreakspace","U00A0")
+ check("exclamdown","U00A1")
+ check("cent","U00A2")
+ check("sterling","U00A3")
+ check("currency","U00A4")
+ check("yen","U00A5")
+ check("brokenbar","U00A6")
+ check("section","U00A7")
+ check("diaeresis","U00A8")
+ check("copyright","U00A9")
+ check("ordfeminine","U00AA")
+ check("guillemotleft","U00AB")
+ check("notsign","U00AC")
+ check("hyphen","U00AD")
+ check("registered","U00AE")
+ check("macron","U00AF")
+ check("degree","U00B0")
+ check("plusminus","U00B1")
+ check("twosuperior","U00B2")
+ check("threesuperior","U00B3")
+ check("acute","U00B4")
+ check("mu","U00B5")
+ check("paragraph","U00B6")
+ check("periodcentered","U00B7")
+ check("cedilla","U00B8")
+ check("onesuperior","U00B9")
+ check("masculine","U00BA")
+ check("guillemotright","U00BB")
+ check("onequarter","U00BC")
+ check("onehalf","U00BD")
+ check("threequarters","U00BE")
+ check("questiondown","U00BF")
+ check("Agrave","U00C0")
+ check("Aacute","U00C1")
+ check("Acircumflex","U00C2")
+ check("Atilde","U00C3")
+ check("Adiaeresis","U00C4")
+ check("Aring","U00C5")
+ check("AE","U00C6")
+ check("Ccedilla","U00C7")
+ check("Egrave","U00C8")
+ check("Eacute","U00C9")
+ check("Ecircumflex","U00CA")
+ check("Ediaeresis","U00CB")
+ check("Igrave","U00CC")
+ check("Iacute","U00CD")
+ check("Icircumflex","U00CE")
+ check("Idiaeresis","U00CF")
+ check("ETH","U00D0")
+ check("Ntilde","U00D1")
+ check("Ograve","U00D2")
+ check("Oacute","U00D3")
+ check("Ocircumflex","U00D4")
+ check("Otilde","U00D5")
+ check("Odiaeresis","U00D6")
+ check("multiply","U00D7")
+ check("Oslash","U00D8")
+ check("Ooblique","U00D8")
+ check("Ugrave","U00D9")
+ check("Uacute","U00DA")
+ check("Ucircumflex","U00DB")
+ check("Udiaeresis","U00DC")
+ check("Yacute","U00DD")
+ check("THORN","U00DE")
+ check("ssharp","U00DF")
+ check("agrave","U00E0")
+ check("aacute","U00E1")
+ check("acircumflex","U00E2")
+ check("atilde","U00E3")
+ check("adiaeresis","U00E4")
+ check("aring","U00E5")
+ check("ae","U00E6")
+ check("ccedilla","U00E7")
+ check("egrave","U00E8")
+ check("eacute","U00E9")
+ check("ecircumflex","U00EA")
+ check("ediaeresis","U00EB")
+ check("igrave","U00EC")
+ check("iacute","U00ED")
+ check("icircumflex","U00EE")
+ check("idiaeresis","U00EF")
+ check("eth","U00F0")
+ check("ntilde","U00F1")
+ check("ograve","U00F2")
+ check("oacute","U00F3")
+ check("ocircumflex","U00F4")
+ check("otilde","U00F5")
+ check("odiaeresis","U00F6")
+ check("division","U00F7")
+ check("oslash","U00F8")
+ check("ooblique","U00F8")
+ check("ugrave","U00F9")
+ check("uacute","U00FA")
+ check("ucircumflex","U00FB")
+ check("udiaeresis","U00FC")
+ check("yacute","U00FD")
+ check("thorn","U00FE")
+ check("ydiaeresis","U00FF")
+ check("Aogonek","U0104")
+ check("breve","U02D8")
+ check("Lstroke","U0141")
+ check("Lcaron","U013D")
+ check("Sacute","U015A")
+ check("Scaron","U0160")
+ check("Scedilla","U015E")
+ check("Tcaron","U0164")
+ check("Zacute","U0179")
+ check("Zcaron","U017D")
+ check("Zabovedot","U017B")
+ check("aogonek","U0105")
+ check("ogonek","U02DB")
+ check("lstroke","U0142")
+ check("lcaron","U013E")
+ check("sacute","U015B")
+ check("caron","U02C7")
+ check("scaron","U0161")
+ check("scedilla","U015F")
+ check("tcaron","U0165")
+ check("zacute","U017A")
+ check("doubleacute","U02DD")
+ check("zcaron","U017E")
+ check("zabovedot","U017C")
+ check("Racute","U0154")
+ check("Abreve","U0102")
+ check("Lacute","U0139")
+ check("Cacute","U0106")
+ check("Ccaron","U010C")
+ check("Eogonek","U0118")
+ check("Ecaron","U011A")
+ check("Dcaron","U010E")
+ check("Dstroke","U0110")
+ check("Nacute","U0143")
+ check("Ncaron","U0147")
+ check("Odoubleacute","U0150")
+ check("Rcaron","U0158")
+ check("Uring","U016E")
+ check("Udoubleacute","U0170")
+ check("Tcedilla","U0162")
+ check("racute","U0155")
+ check("abreve","U0103")
+ check("lacute","U013A")
+ check("cacute","U0107")
+ check("ccaron","U010D")
+ check("eogonek","U0119")
+ check("ecaron","U011B")
+ check("dcaron","U010F")
+ check("dstroke","U0111")
+ check("nacute","U0144")
+ check("ncaron","U0148")
+ check("odoubleacute","U0151")
+ check("udoubleacute","U0171")
+ check("rcaron","U0159")
+ check("uring","U016F")
+ check("tcedilla","U0163")
+ check("abovedot","U02D9")
+ check("Hstroke","U0126")
+ check("Hcircumflex","U0124")
+ check("Iabovedot","U0130")
+ check("Gbreve","U011E")
+ check("Jcircumflex","U0134")
+ check("hstroke","U0127")
+ check("hcircumflex","U0125")
+ check("idotless","U0131")
+ check("gbreve","U011F")
+ check("jcircumflex","U0135")
+ check("Cabovedot","U010A")
+ check("Ccircumflex","U0108")
+ check("Gabovedot","U0120")
+ check("Gcircumflex","U011C")
+ check("Ubreve","U016C")
+ check("Scircumflex","U015C")
+ check("cabovedot","U010B")
+ check("ccircumflex","U0109")
+ check("gabovedot","U0121")
+ check("gcircumflex","U011D")
+ check("ubreve","U016D")
+ check("scircumflex","U015D")
+ check("kra","U0138")
+ check("Rcedilla","U0156")
+ check("Itilde","U0128")
+ check("Lcedilla","U013B")
+ check("Emacron","U0112")
+ check("Gcedilla","U0122")
+ check("Tslash","U0166")
+ check("rcedilla","U0157")
+ check("itilde","U0129")
+ check("lcedilla","U013C")
+ check("emacron","U0113")
+ check("gcedilla","U0123")
+ check("tslash","U0167")
+ check("ENG","U014A")
+ check("eng","U014B")
+ check("Amacron","U0100")
+ check("Iogonek","U012E")
+ check("Eabovedot","U0116")
+ check("Imacron","U012A")
+ check("Ncedilla","U0145")
+ check("Omacron","U014C")
+ check("Kcedilla","U0136")
+ check("Uogonek","U0172")
+ check("Utilde","U0168")
+ check("Umacron","U016A")
+ check("amacron","U0101")
+ check("iogonek","U012F")
+ check("eabovedot","U0117")
+ check("imacron","U012B")
+ check("ncedilla","U0146")
+ check("omacron","U014D")
+ check("kcedilla","U0137")
+ check("uogonek","U0173")
+ check("utilde","U0169")
+ check("umacron","U016B")
+ check("Babovedot","U1E02")
+ check("babovedot","U1E03")
+ check("Dabovedot","U1E0A")
+ check("Wgrave","U1E80")
+ check("Wacute","U1E82")
+ check("dabovedot","U1E0B")
+ check("Ygrave","U1EF2")
+ check("Fabovedot","U1E1E")
+ check("fabovedot","U1E1F")
+ check("Mabovedot","U1E40")
+ check("mabovedot","U1E41")
+ check("Pabovedot","U1E56")
+ check("wgrave","U1E81")
+ check("pabovedot","U1E57")
+ check("wacute","U1E83")
+ check("Sabovedot","U1E60")
+ check("ygrave","U1EF3")
+ check("Wdiaeresis","U1E84")
+ check("wdiaeresis","U1E85")
+ check("sabovedot","U1E61")
+ check("Wcircumflex","U0174")
+ check("Tabovedot","U1E6A")
+ check("Ycircumflex","U0176")
+ check("wcircumflex","U0175")
+ check("tabovedot","U1E6B")
+ check("ycircumflex","U0177")
+ check("OE","U0152")
+ check("oe","U0153")
+ check("Ydiaeresis","U0178")
+ check("overline","U203E")
+ check("kana_fullstop","U3002")
+ check("kana_openingbracket","U300C")
+ check("kana_closingbracket","U300D")
+ check("kana_comma","U3001")
+ check("kana_conjunctive","U30FB")
+ check("kana_WO","U30F2")
+ check("kana_a","U30A1")
+ check("kana_i","U30A3")
+ check("kana_u","U30A5")
+ check("kana_e","U30A7")
+ check("kana_o","U30A9")
+ check("kana_ya","U30E3")
+ check("kana_yu","U30E5")
+ check("kana_yo","U30E7")
+ check("kana_tsu","U30C3")
+ check("prolongedsound","U30FC")
+ check("kana_A","U30A2")
+ check("kana_I","U30A4")
+ check("kana_U","U30A6")
+ check("kana_E","U30A8")
+ check("kana_O","U30AA")
+ check("kana_KA","U30AB")
+ check("kana_KI","U30AD")
+ check("kana_KU","U30AF")
+ check("kana_KE","U30B1")
+ check("kana_KO","U30B3")
+ check("kana_SA","U30B5")
+ check("kana_SHI","U30B7")
+ check("kana_SU","U30B9")
+ check("kana_SE","U30BB")
+ check("kana_SO","U30BD")
+ check("kana_TA","U30BF")
+ check("kana_CHI","U30C1")
+ check("kana_TSU","U30C4")
+ check("kana_TE","U30C6")
+ check("kana_TO","U30C8")
+ check("kana_NA","U30CA")
+ check("kana_NI","U30CB")
+ check("kana_NU","U30CC")
+ check("kana_NE","U30CD")
+ check("kana_NO","U30CE")
+ check("kana_HA","U30CF")
+ check("kana_HI","U30D2")
+ check("kana_FU","U30D5")
+ check("kana_HE","U30D8")
+ check("kana_HO","U30DB")
+ check("kana_MA","U30DE")
+ check("kana_MI","U30DF")
+ check("kana_MU","U30E0")
+ check("kana_ME","U30E1")
+ check("kana_MO","U30E2")
+ check("kana_YA","U30E4")
+ check("kana_YU","U30E6")
+ check("kana_YO","U30E8")
+ check("kana_RA","U30E9")
+ check("kana_RI","U30EA")
+ check("kana_RU","U30EB")
+ check("kana_RE","U30EC")
+ check("kana_RO","U30ED")
+ check("kana_WA","U30EF")
+ check("kana_N","U30F3")
+ check("voicedsound","U309B")
+ check("semivoicedsound","U309C")
+ check("Farsi_0","U06F0")
+ check("Farsi_1","U06F1")
+ check("Farsi_2","U06F2")
+ check("Farsi_3","U06F3")
+ check("Farsi_4","U06F4")
+ check("Farsi_5","U06F5")
+ check("Farsi_6","U06F6")
+ check("Farsi_7","U06F7")
+ check("Farsi_8","U06F8")
+ check("Farsi_9","U06F9")
+ check("Arabic_percent","U066A")
+ check("Arabic_superscript_alef","U0670")
+ check("Arabic_tteh","U0679")
+ check("Arabic_peh","U067E")
+ check("Arabic_tcheh","U0686")
+ check("Arabic_ddal","U0688")
+ check("Arabic_rreh","U0691")
+ check("Arabic_comma","U060C")
+ check("Arabic_fullstop","U06D4")
+ check("Arabic_0","U0660")
+ check("Arabic_1","U0661")
+ check("Arabic_2","U0662")
+ check("Arabic_3","U0663")
+ check("Arabic_4","U0664")
+ check("Arabic_5","U0665")
+ check("Arabic_6","U0666")
+ check("Arabic_7","U0667")
+ check("Arabic_8","U0668")
+ check("Arabic_9","U0669")
+ check("Arabic_semicolon","U061B")
+ check("Arabic_question_mark","U061F")
+ check("Arabic_hamza","U0621")
+ check("Arabic_maddaonalef","U0622")
+ check("Arabic_hamzaonalef","U0623")
+ check("Arabic_hamzaonwaw","U0624")
+ check("Arabic_hamzaunderalef","U0625")
+ check("Arabic_hamzaonyeh","U0626")
+ check("Arabic_alef","U0627")
+ check("Arabic_beh","U0628")
+ check("Arabic_tehmarbuta","U0629")
+ check("Arabic_teh","U062A")
+ check("Arabic_theh","U062B")
+ check("Arabic_jeem","U062C")
+ check("Arabic_hah","U062D")
+ check("Arabic_khah","U062E")
+ check("Arabic_dal","U062F")
+ check("Arabic_thal","U0630")
+ check("Arabic_ra","U0631")
+ check("Arabic_zain","U0632")
+ check("Arabic_seen","U0633")
+ check("Arabic_sheen","U0634")
+ check("Arabic_sad","U0635")
+ check("Arabic_dad","U0636")
+ check("Arabic_tah","U0637")
+ check("Arabic_zah","U0638")
+ check("Arabic_ain","U0639")
+ check("Arabic_ghain","U063A")
+ check("Arabic_tatweel","U0640")
+ check("Arabic_feh","U0641")
+ check("Arabic_qaf","U0642")
+ check("Arabic_kaf","U0643")
+ check("Arabic_lam","U0644")
+ check("Arabic_meem","U0645")
+ check("Arabic_noon","U0646")
+ check("Arabic_ha","U0647")
+ check("Arabic_waw","U0648")
+ check("Arabic_alefmaksura","U0649")
+ check("Arabic_yeh","U064A")
+ check("Arabic_fathatan","U064B")
+ check("Arabic_dammatan","U064C")
+ check("Arabic_kasratan","U064D")
+ check("Arabic_fatha","U064E")
+ check("Arabic_damma","U064F")
+ check("Arabic_kasra","U0650")
+ check("Arabic_shadda","U0651")
+ check("Arabic_sukun","U0652")
+ check("Arabic_madda_above","U0653")
+ check("Arabic_hamza_above","U0654")
+ check("Arabic_hamza_below","U0655")
+ check("Arabic_jeh","U0698")
+ check("Arabic_veh","U06A4")
+ check("Arabic_keheh","U06A9")
+ check("Arabic_gaf","U06AF")
+ check("Arabic_noon_ghunna","U06BA")
+ check("Arabic_heh_doachashmee","U06BE")
+ check("Farsi_yeh","U06CC")
+ check("Arabic_farsi_yeh","U06CC")
+ check("Arabic_yeh_baree","U06D2")
+ check("Arabic_heh_goal","U06C1")
+ check("Cyrillic_GHE_bar","U0492")
+ check("Cyrillic_ghe_bar","U0493")
+ check("Cyrillic_ZHE_descender","U0496")
+ check("Cyrillic_zhe_descender","U0497")
+ check("Cyrillic_KA_descender","U049A")
+ check("Cyrillic_ka_descender","U049B")
+ check("Cyrillic_KA_vertstroke","U049C")
+ check("Cyrillic_ka_vertstroke","U049D")
+ check("Cyrillic_EN_descender","U04A2")
+ check("Cyrillic_en_descender","U04A3")
+ check("Cyrillic_U_straight","U04AE")
+ check("Cyrillic_u_straight","U04AF")
+ check("Cyrillic_U_straight_bar","U04B0")
+ check("Cyrillic_u_straight_bar","U04B1")
+ check("Cyrillic_HA_descender","U04B2")
+ check("Cyrillic_ha_descender","U04B3")
+ check("Cyrillic_CHE_descender","U04B6")
+ check("Cyrillic_che_descender","U04B7")
+ check("Cyrillic_CHE_vertstroke","U04B8")
+ check("Cyrillic_che_vertstroke","U04B9")
+ check("Cyrillic_SHHA","U04BA")
+ check("Cyrillic_shha","U04BB")
+ check("Cyrillic_SCHWA","U04D8")
+ check("Cyrillic_schwa","U04D9")
+ check("Cyrillic_I_macron","U04E2")
+ check("Cyrillic_i_macron","U04E3")
+ check("Cyrillic_O_bar","U04E8")
+ check("Cyrillic_o_bar","U04E9")
+ check("Cyrillic_U_macron","U04EE")
+ check("Cyrillic_u_macron","U04EF")
+ check("Serbian_dje","U0452")
+ check("Macedonia_gje","U0453")
+ check("Cyrillic_io","U0451")
+ check("Ukrainian_ie","U0454")
+ check("Macedonia_dse","U0455")
+ check("Ukrainian_i","U0456")
+ check("Ukrainian_yi","U0457")
+ check("Cyrillic_je","U0458")
+ check("Cyrillic_lje","U0459")
+ check("Cyrillic_nje","U045A")
+ check("Serbian_tshe","U045B")
+ check("Macedonia_kje","U045C")
+ check("Ukrainian_ghe_with_upturn","U0491")
+ check("Byelorussian_shortu","U045E")
+ check("Cyrillic_dzhe","U045F")
+ check("numerosign","U2116")
+ check("Serbian_DJE","U0402")
+ check("Macedonia_GJE","U0403")
+ check("Cyrillic_IO","U0401")
+ check("Ukrainian_IE","U0404")
+ check("Macedonia_DSE","U0405")
+ check("Ukrainian_I","U0406")
+ check("Ukrainian_YI","U0407")
+ check("Cyrillic_JE","U0408")
+ check("Cyrillic_LJE","U0409")
+ check("Cyrillic_NJE","U040A")
+ check("Serbian_TSHE","U040B")
+ check("Macedonia_KJE","U040C")
+ check("Ukrainian_GHE_WITH_UPTURN","U0490")
+ check("Byelorussian_SHORTU","U040E")
+ check("Cyrillic_DZHE","U040F")
+ check("Cyrillic_yu","U044E")
+ check("Cyrillic_a","U0430")
+ check("Cyrillic_be","U0431")
+ check("Cyrillic_tse","U0446")
+ check("Cyrillic_de","U0434")
+ check("Cyrillic_ie","U0435")
+ check("Cyrillic_ef","U0444")
+ check("Cyrillic_ghe","U0433")
+ check("Cyrillic_ha","U0445")
+ check("Cyrillic_i","U0438")
+ check("Cyrillic_shorti","U0439")
+ check("Cyrillic_ka","U043A")
+ check("Cyrillic_el","U043B")
+ check("Cyrillic_em","U043C")
+ check("Cyrillic_en","U043D")
+ check("Cyrillic_o","U043E")
+ check("Cyrillic_pe","U043F")
+ check("Cyrillic_ya","U044F")
+ check("Cyrillic_er","U0440")
+ check("Cyrillic_es","U0441")
+ check("Cyrillic_te","U0442")
+ check("Cyrillic_u","U0443")
+ check("Cyrillic_zhe","U0436")
+ check("Cyrillic_ve","U0432")
+ check("Cyrillic_softsign","U044C")
+ check("Cyrillic_yeru","U044B")
+ check("Cyrillic_ze","U0437")
+ check("Cyrillic_sha","U0448")
+ check("Cyrillic_e","U044D")
+ check("Cyrillic_shcha","U0449")
+ check("Cyrillic_che","U0447")
+ check("Cyrillic_hardsign","U044A")
+ check("Cyrillic_YU","U042E")
+ check("Cyrillic_A","U0410")
+ check("Cyrillic_BE","U0411")
+ check("Cyrillic_TSE","U0426")
+ check("Cyrillic_DE","U0414")
+ check("Cyrillic_IE","U0415")
+ check("Cyrillic_EF","U0424")
+ check("Cyrillic_GHE","U0413")
+ check("Cyrillic_HA","U0425")
+ check("Cyrillic_I","U0418")
+ check("Cyrillic_SHORTI","U0419")
+ check("Cyrillic_KA","U041A")
+ check("Cyrillic_EL","U041B")
+ check("Cyrillic_EM","U041C")
+ check("Cyrillic_EN","U041D")
+ check("Cyrillic_O","U041E")
+ check("Cyrillic_PE","U041F")
+ check("Cyrillic_YA","U042F")
+ check("Cyrillic_ER","U0420")
+ check("Cyrillic_ES","U0421")
+ check("Cyrillic_TE","U0422")
+ check("Cyrillic_U","U0423")
+ check("Cyrillic_ZHE","U0416")
+ check("Cyrillic_VE","U0412")
+ check("Cyrillic_SOFTSIGN","U042C")
+ check("Cyrillic_YERU","U042B")
+ check("Cyrillic_ZE","U0417")
+ check("Cyrillic_SHA","U0428")
+ check("Cyrillic_E","U042D")
+ check("Cyrillic_SHCHA","U0429")
+ check("Cyrillic_CHE","U0427")
+ check("Cyrillic_HARDSIGN","U042A")
+ check("Greek_ALPHAaccent","U0386")
+ check("Greek_EPSILONaccent","U0388")
+ check("Greek_ETAaccent","U0389")
+ check("Greek_IOTAaccent","U038A")
+ check("Greek_IOTAdieresis","U03AA")
+ check("Greek_OMICRONaccent","U038C")
+ check("Greek_UPSILONaccent","U038E")
+ check("Greek_UPSILONdieresis","U03AB")
+ check("Greek_OMEGAaccent","U038F")
+ check("Greek_accentdieresis","U0385")
+ check("Greek_horizbar","U2015")
+ check("Greek_alphaaccent","U03AC")
+ check("Greek_epsilonaccent","U03AD")
+ check("Greek_etaaccent","U03AE")
+ check("Greek_iotaaccent","U03AF")
+ check("Greek_iotadieresis","U03CA")
+ check("Greek_iotaaccentdieresis","U0390")
+ check("Greek_omicronaccent","U03CC")
+ check("Greek_upsilonaccent","U03CD")
+ check("Greek_upsilondieresis","U03CB")
+ check("Greek_upsilonaccentdieresis","U03B0")
+ check("Greek_omegaaccent","U03CE")
+ check("Greek_ALPHA","U0391")
+ check("Greek_BETA","U0392")
+ check("Greek_GAMMA","U0393")
+ check("Greek_DELTA","U0394")
+ check("Greek_EPSILON","U0395")
+ check("Greek_ZETA","U0396")
+ check("Greek_ETA","U0397")
+ check("Greek_THETA","U0398")
+ check("Greek_IOTA","U0399")
+ check("Greek_KAPPA","U039A")
+ check("Greek_LAMDA","U039B")
+ check("Greek_LAMBDA","U039B")
+ check("Greek_MU","U039C")
+ check("Greek_NU","U039D")
+ check("Greek_XI","U039E")
+ check("Greek_OMICRON","U039F")
+ check("Greek_PI","U03A0")
+ check("Greek_RHO","U03A1")
+ check("Greek_SIGMA","U03A3")
+ check("Greek_TAU","U03A4")
+ check("Greek_UPSILON","U03A5")
+ check("Greek_PHI","U03A6")
+ check("Greek_CHI","U03A7")
+ check("Greek_PSI","U03A8")
+ check("Greek_OMEGA","U03A9")
+ check("Greek_alpha","U03B1")
+ check("Greek_beta","U03B2")
+ check("Greek_gamma","U03B3")
+ check("Greek_delta","U03B4")
+ check("Greek_epsilon","U03B5")
+ check("Greek_zeta","U03B6")
+ check("Greek_eta","U03B7")
+ check("Greek_theta","U03B8")
+ check("Greek_iota","U03B9")
+ check("Greek_kappa","U03BA")
+ check("Greek_lamda","U03BB")
+ check("Greek_lambda","U03BB")
+ check("Greek_mu","U03BC")
+ check("Greek_nu","U03BD")
+ check("Greek_xi","U03BE")
+ check("Greek_omicron","U03BF")
+ check("Greek_pi","U03C0")
+ check("Greek_rho","U03C1")
+ check("Greek_sigma","U03C3")
+ check("Greek_finalsmallsigma","U03C2")
+ check("Greek_tau","U03C4")
+ check("Greek_upsilon","U03C5")
+ check("Greek_phi","U03C6")
+ check("Greek_chi","U03C7")
+ check("Greek_psi","U03C8")
+ check("Greek_omega","U03C9")
+ check("leftradical","U23B7")
+ check("topleftradical","U250C")
+ check("horizconnector","U2500")
+ check("topintegral","U2320")
+ check("botintegral","U2321")
+ check("vertconnector","U2502")
+ check("topleftsqbracket","U23A1")
+ check("botleftsqbracket","U23A3")
+ check("toprightsqbracket","U23A4")
+ check("botrightsqbracket","U23A6")
+ check("topleftparens","U239B")
+ check("botleftparens","U239D")
+ check("toprightparens","U239E")
+ check("botrightparens","U23A0")
+ check("leftmiddlecurlybrace","U23A8")
+ check("rightmiddlecurlybrace","U23AC")
+ check("lessthanequal","U2264")
+ check("notequal","U2260")
+ check("greaterthanequal","U2265")
+ check("integral","U222B")
+ check("therefore","U2234")
+ check("variation","U221D")
+ check("infinity","U221E")
+ check("nabla","U2207")
+ check("approximate","U223C")
+ check("similarequal","U2243")
+ check("ifonlyif","U21D4")
+ check("implies","U21D2")
+ check("identical","U2261")
+ check("radical","U221A")
+ check("includedin","U2282")
+ check("includes","U2283")
+ check("intersection","U2229")
+ check("union","U222A")
+ check("logicaland","U2227")
+ check("logicalor","U2228")
+ check("partialderivative","U2202")
+ check("function","U0192")
+ check("leftarrow","U2190")
+ check("uparrow","U2191")
+ check("rightarrow","U2192")
+ check("downarrow","U2193")
+ check("soliddiamond","U25C6")
+ check("checkerboard","U2592")
+ check("ht","U2409")
+ check("ff","U240C")
+ check("cr","U240D")
+ check("lf","U240A")
+ check("nl","U2424")
+ check("vt","U240B")
+ check("lowrightcorner","U2518")
+ check("uprightcorner","U2510")
+ check("upleftcorner","U250C")
+ check("lowleftcorner","U2514")
+ check("crossinglines","U253C")
+ check("horizlinescan1","U23BA")
+ check("horizlinescan3","U23BB")
+ check("horizlinescan5","U2500")
+ check("horizlinescan7","U23BC")
+ check("horizlinescan9","U23BD")
+ check("leftt","U251C")
+ check("rightt","U2524")
+ check("bott","U2534")
+ check("topt","U252C")
+ check("vertbar","U2502")
+ check("emspace","U2003")
+ check("enspace","U2002")
+ check("em3space","U2004")
+ check("em4space","U2005")
+ check("digitspace","U2007")
+ check("punctspace","U2008")
+ check("thinspace","U2009")
+ check("hairspace","U200A")
+ check("emdash","U2014")
+ check("endash","U2013")
+ check("signifblank","U2423")
+ check("ellipsis","U2026")
+ check("doubbaselinedot","U2025")
+ check("onethird","U2153")
+ check("twothirds","U2154")
+ check("onefifth","U2155")
+ check("twofifths","U2156")
+ check("threefifths","U2157")
+ check("fourfifths","U2158")
+ check("onesixth","U2159")
+ check("fivesixths","U215A")
+ check("careof","U2105")
+ check("figdash","U2012")
+ check("leftanglebracket","U27E8")
+ check("decimalpoint","U002E")
+ check("rightanglebracket","U27E9")
+ check("oneeighth","U215B")
+ check("threeeighths","U215C")
+ check("fiveeighths","U215D")
+ check("seveneighths","U215E")
+ check("trademark","U2122")
+ check("signaturemark","U2613")
+ check("leftopentriangle","U25C1")
+ check("rightopentriangle","U25B7")
+ check("emopencircle","U25CB")
+ check("emopenrectangle","U25AF")
+ check("leftsinglequotemark","U2018")
+ check("rightsinglequotemark","U2019")
+ check("leftdoublequotemark","U201C")
+ check("rightdoublequotemark","U201D")
+ check("prescription","U211E")
+ check("minutes","U2032")
+ check("seconds","U2033")
+ check("latincross","U271D")
+ check("filledrectbullet","U25AC")
+ check("filledlefttribullet","U25C0")
+ check("filledrighttribullet","U25B6")
+ check("emfilledcircle","U25CF")
+ check("emfilledrect","U25AE")
+ check("enopencircbullet","U25E6")
+ check("enopensquarebullet","U25AB")
+ check("openrectbullet","U25AD")
+ check("opentribulletup","U25B3")
+ check("opentribulletdown","U25BD")
+ check("openstar","U2606")
+ check("enfilledcircbullet","U2022")
+ check("enfilledsqbullet","U25AA")
+ check("filledtribulletup","U25B2")
+ check("filledtribulletdown","U25BC")
+ check("leftpointer","U261C")
+ check("rightpointer","U261E")
+ check("club","U2663")
+ check("diamond","U2666")
+ check("heart","U2665")
+ check("maltesecross","U2720")
+ check("dagger","U2020")
+ check("doubledagger","U2021")
+ check("checkmark","U2713")
+ check("ballotcross","U2717")
+ check("musicalsharp","U266F")
+ check("musicalflat","U266D")
+ check("malesymbol","U2642")
+ check("femalesymbol","U2640")
+ check("telephone","U260E")
+ check("telephonerecorder","U2315")
+ check("phonographcopyright","U2117")
+ check("caret","U2038")
+ check("singlelowquotemark","U201A")
+ check("doublelowquotemark","U201E")
+ check("leftcaret","U003C")
+ check("rightcaret","U003E")
+ check("downcaret","U2228")
+ check("upcaret","U2227")
+ check("overbar","U00AF")
+ check("downtack","U22A5")
+ check("upshoe","U2229")
+ check("downstile","U230A")
+ check("underbar","U005F")
+ check("jot","U2218")
+ check("quad","U2395")
+ check("uptack","U22A4")
+ check("circle","U25CB")
+ check("upstile","U2308")
+ check("downshoe","U222A")
+ check("rightshoe","U2283")
+ check("leftshoe","U2282")
+ check("lefttack","U22A2")
+ check("righttack","U22A3")
+ check("hebrew_doublelowline","U2017")
+ check("hebrew_aleph","U05D0")
+ check("hebrew_bet","U05D1")
+ check("hebrew_gimel","U05D2")
+ check("hebrew_dalet","U05D3")
+ check("hebrew_he","U05D4")
+ check("hebrew_waw","U05D5")
+ check("hebrew_zain","U05D6")
+ check("hebrew_chet","U05D7")
+ check("hebrew_tet","U05D8")
+ check("hebrew_yod","U05D9")
+ check("hebrew_finalkaph","U05DA")
+ check("hebrew_kaph","U05DB")
+ check("hebrew_lamed","U05DC")
+ check("hebrew_finalmem","U05DD")
+ check("hebrew_mem","U05DE")
+ check("hebrew_finalnun","U05DF")
+ check("hebrew_nun","U05E0")
+ check("hebrew_samech","U05E1")
+ check("hebrew_ayin","U05E2")
+ check("hebrew_finalpe","U05E3")
+ check("hebrew_pe","U05E4")
+ check("hebrew_finalzade","U05E5")
+ check("hebrew_zade","U05E6")
+ check("hebrew_qoph","U05E7")
+ check("hebrew_resh","U05E8")
+ check("hebrew_shin","U05E9")
+ check("hebrew_taw","U05EA")
+ check("Thai_kokai","U0E01")
+ check("Thai_khokhai","U0E02")
+ check("Thai_khokhuat","U0E03")
+ check("Thai_khokhwai","U0E04")
+ check("Thai_khokhon","U0E05")
+ check("Thai_khorakhang","U0E06")
+ check("Thai_ngongu","U0E07")
+ check("Thai_chochan","U0E08")
+ check("Thai_choching","U0E09")
+ check("Thai_chochang","U0E0A")
+ check("Thai_soso","U0E0B")
+ check("Thai_chochoe","U0E0C")
+ check("Thai_yoying","U0E0D")
+ check("Thai_dochada","U0E0E")
+ check("Thai_topatak","U0E0F")
+ check("Thai_thothan","U0E10")
+ check("Thai_thonangmontho","U0E11")
+ check("Thai_thophuthao","U0E12")
+ check("Thai_nonen","U0E13")
+ check("Thai_dodek","U0E14")
+ check("Thai_totao","U0E15")
+ check("Thai_thothung","U0E16")
+ check("Thai_thothahan","U0E17")
+ check("Thai_thothong","U0E18")
+ check("Thai_nonu","U0E19")
+ check("Thai_bobaimai","U0E1A")
+ check("Thai_popla","U0E1B")
+ check("Thai_phophung","U0E1C")
+ check("Thai_fofa","U0E1D")
+ check("Thai_phophan","U0E1E")
+ check("Thai_fofan","U0E1F")
+ check("Thai_phosamphao","U0E20")
+ check("Thai_moma","U0E21")
+ check("Thai_yoyak","U0E22")
+ check("Thai_rorua","U0E23")
+ check("Thai_ru","U0E24")
+ check("Thai_loling","U0E25")
+ check("Thai_lu","U0E26")
+ check("Thai_wowaen","U0E27")
+ check("Thai_sosala","U0E28")
+ check("Thai_sorusi","U0E29")
+ check("Thai_sosua","U0E2A")
+ check("Thai_hohip","U0E2B")
+ check("Thai_lochula","U0E2C")
+ check("Thai_oang","U0E2D")
+ check("Thai_honokhuk","U0E2E")
+ check("Thai_paiyannoi","U0E2F")
+ check("Thai_saraa","U0E30")
+ check("Thai_maihanakat","U0E31")
+ check("Thai_saraaa","U0E32")
+ check("Thai_saraam","U0E33")
+ check("Thai_sarai","U0E34")
+ check("Thai_saraii","U0E35")
+ check("Thai_saraue","U0E36")
+ check("Thai_sarauee","U0E37")
+ check("Thai_sarau","U0E38")
+ check("Thai_sarauu","U0E39")
+ check("Thai_phinthu","U0E3A")
+ check("Thai_baht","U0E3F")
+ check("Thai_sarae","U0E40")
+ check("Thai_saraae","U0E41")
+ check("Thai_sarao","U0E42")
+ check("Thai_saraaimaimuan","U0E43")
+ check("Thai_saraaimaimalai","U0E44")
+ check("Thai_lakkhangyao","U0E45")
+ check("Thai_maiyamok","U0E46")
+ check("Thai_maitaikhu","U0E47")
+ check("Thai_maiek","U0E48")
+ check("Thai_maitho","U0E49")
+ check("Thai_maitri","U0E4A")
+ check("Thai_maichattawa","U0E4B")
+ check("Thai_thanthakhat","U0E4C")
+ check("Thai_nikhahit","U0E4D")
+ check("Thai_leksun","U0E50")
+ check("Thai_leknung","U0E51")
+ check("Thai_leksong","U0E52")
+ check("Thai_leksam","U0E53")
+ check("Thai_leksi","U0E54")
+ check("Thai_lekha","U0E55")
+ check("Thai_lekhok","U0E56")
+ check("Thai_lekchet","U0E57")
+ check("Thai_lekpaet","U0E58")
+ check("Thai_lekkao","U0E59")
+ check("Korean_Won","U20A9")
+ check("Armenian_ligature_ew","U0587")
+ check("Armenian_full_stop","U0589")
+ check("Armenian_verjaket","U0589")
+ check("Armenian_separation_mark","U055D")
+ check("Armenian_but","U055D")
+ check("Armenian_hyphen","U058A")
+ check("Armenian_yentamna","U058A")
+ check("Armenian_exclam","U055C")
+ check("Armenian_amanak","U055C")
+ check("Armenian_accent","U055B")
+ check("Armenian_shesht","U055B")
+ check("Armenian_question","U055E")
+ check("Armenian_paruyk","U055E")
+ check("Armenian_AYB","U0531")
+ check("Armenian_ayb","U0561")
+ check("Armenian_BEN","U0532")
+ check("Armenian_ben","U0562")
+ check("Armenian_GIM","U0533")
+ check("Armenian_gim","U0563")
+ check("Armenian_DA","U0534")
+ check("Armenian_da","U0564")
+ check("Armenian_YECH","U0535")
+ check("Armenian_yech","U0565")
+ check("Armenian_ZA","U0536")
+ check("Armenian_za","U0566")
+ check("Armenian_E","U0537")
+ check("Armenian_e","U0567")
+ check("Armenian_AT","U0538")
+ check("Armenian_at","U0568")
+ check("Armenian_TO","U0539")
+ check("Armenian_to","U0569")
+ check("Armenian_ZHE","U053A")
+ check("Armenian_zhe","U056A")
+ check("Armenian_INI","U053B")
+ check("Armenian_ini","U056B")
+ check("Armenian_LYUN","U053C")
+ check("Armenian_lyun","U056C")
+ check("Armenian_KHE","U053D")
+ check("Armenian_khe","U056D")
+ check("Armenian_TSA","U053E")
+ check("Armenian_tsa","U056E")
+ check("Armenian_KEN","U053F")
+ check("Armenian_ken","U056F")
+ check("Armenian_HO","U0540")
+ check("Armenian_ho","U0570")
+ check("Armenian_DZA","U0541")
+ check("Armenian_dza","U0571")
+ check("Armenian_GHAT","U0542")
+ check("Armenian_ghat","U0572")
+ check("Armenian_TCHE","U0543")
+ check("Armenian_tche","U0573")
+ check("Armenian_MEN","U0544")
+ check("Armenian_men","U0574")
+ check("Armenian_HI","U0545")
+ check("Armenian_hi","U0575")
+ check("Armenian_NU","U0546")
+ check("Armenian_nu","U0576")
+ check("Armenian_SHA","U0547")
+ check("Armenian_sha","U0577")
+ check("Armenian_VO","U0548")
+ check("Armenian_vo","U0578")
+ check("Armenian_CHA","U0549")
+ check("Armenian_cha","U0579")
+ check("Armenian_PE","U054A")
+ check("Armenian_pe","U057A")
+ check("Armenian_JE","U054B")
+ check("Armenian_je","U057B")
+ check("Armenian_RA","U054C")
+ check("Armenian_ra","U057C")
+ check("Armenian_SE","U054D")
+ check("Armenian_se","U057D")
+ check("Armenian_VEV","U054E")
+ check("Armenian_vev","U057E")
+ check("Armenian_TYUN","U054F")
+ check("Armenian_tyun","U057F")
+ check("Armenian_RE","U0550")
+ check("Armenian_re","U0580")
+ check("Armenian_TSO","U0551")
+ check("Armenian_tso","U0581")
+ check("Armenian_VYUN","U0552")
+ check("Armenian_vyun","U0582")
+ check("Armenian_PYUR","U0553")
+ check("Armenian_pyur","U0583")
+ check("Armenian_KE","U0554")
+ check("Armenian_ke","U0584")
+ check("Armenian_O","U0555")
+ check("Armenian_o","U0585")
+ check("Armenian_FE","U0556")
+ check("Armenian_fe","U0586")
+ check("Armenian_apostrophe","U055A")
+ check("Georgian_an","U10D0")
+ check("Georgian_ban","U10D1")
+ check("Georgian_gan","U10D2")
+ check("Georgian_don","U10D3")
+ check("Georgian_en","U10D4")
+ check("Georgian_vin","U10D5")
+ check("Georgian_zen","U10D6")
+ check("Georgian_tan","U10D7")
+ check("Georgian_in","U10D8")
+ check("Georgian_kan","U10D9")
+ check("Georgian_las","U10DA")
+ check("Georgian_man","U10DB")
+ check("Georgian_nar","U10DC")
+ check("Georgian_on","U10DD")
+ check("Georgian_par","U10DE")
+ check("Georgian_zhar","U10DF")
+ check("Georgian_rae","U10E0")
+ check("Georgian_san","U10E1")
+ check("Georgian_tar","U10E2")
+ check("Georgian_un","U10E3")
+ check("Georgian_phar","U10E4")
+ check("Georgian_khar","U10E5")
+ check("Georgian_ghan","U10E6")
+ check("Georgian_qar","U10E7")
+ check("Georgian_shin","U10E8")
+ check("Georgian_chin","U10E9")
+ check("Georgian_can","U10EA")
+ check("Georgian_jil","U10EB")
+ check("Georgian_cil","U10EC")
+ check("Georgian_char","U10ED")
+ check("Georgian_xan","U10EE")
+ check("Georgian_jhan","U10EF")
+ check("Georgian_hae","U10F0")
+ check("Georgian_he","U10F1")
+ check("Georgian_hie","U10F2")
+ check("Georgian_we","U10F3")
+ check("Georgian_har","U10F4")
+ check("Georgian_hoe","U10F5")
+ check("Georgian_fi","U10F6")
+ check("Xabovedot","U1E8A")
+ check("Ibreve","U012C")
+ check("Zstroke","U01B5")
+ check("Gcaron","U01E6")
+ check("Ocaron","U01D2")
+ check("Obarred","U019F")
+ check("xabovedot","U1E8B")
+ check("ibreve","U012D")
+ check("zstroke","U01B6")
+ check("gcaron","U01E7")
+ check("ocaron","U01D2")
+ check("obarred","U0275")
+ check("SCHWA","U018F")
+ check("schwa","U0259")
+ check("Lbelowdot","U1E36")
+ check("lbelowdot","U1E37")
+ check("Abelowdot","U1EA0")
+ check("abelowdot","U1EA1")
+ check("Ahook","U1EA2")
+ check("ahook","U1EA3")
+ check("Acircumflexacute","U1EA4")
+ check("acircumflexacute","U1EA5")
+ check("Acircumflexgrave","U1EA6")
+ check("acircumflexgrave","U1EA7")
+ check("Acircumflexhook","U1EA8")
+ check("acircumflexhook","U1EA9")
+ check("Acircumflextilde","U1EAA")
+ check("acircumflextilde","U1EAB")
+ check("Acircumflexbelowdot","U1EAC")
+ check("acircumflexbelowdot","U1EAD")
+ check("Abreveacute","U1EAE")
+ check("abreveacute","U1EAF")
+ check("Abrevegrave","U1EB0")
+ check("abrevegrave","U1EB1")
+ check("Abrevehook","U1EB2")
+ check("abrevehook","U1EB3")
+ check("Abrevetilde","U1EB4")
+ check("abrevetilde","U1EB5")
+ check("Abrevebelowdot","U1EB6")
+ check("abrevebelowdot","U1EB7")
+ check("Ebelowdot","U1EB8")
+ check("ebelowdot","U1EB9")
+ check("Ehook","U1EBA")
+ check("ehook","U1EBB")
+ check("Etilde","U1EBC")
+ check("etilde","U1EBD")
+ check("Ecircumflexacute","U1EBE")
+ check("ecircumflexacute","U1EBF")
+ check("Ecircumflexgrave","U1EC0")
+ check("ecircumflexgrave","U1EC1")
+ check("Ecircumflexhook","U1EC2")
+ check("ecircumflexhook","U1EC3")
+ check("Ecircumflextilde","U1EC4")
+ check("ecircumflextilde","U1EC5")
+ check("Ecircumflexbelowdot","U1EC6")
+ check("ecircumflexbelowdot","U1EC7")
+ check("Ihook","U1EC8")
+ check("ihook","U1EC9")
+ check("Ibelowdot","U1ECA")
+ check("ibelowdot","U1ECB")
+ check("Obelowdot","U1ECC")
+ check("obelowdot","U1ECD")
+ check("Ohook","U1ECE")
+ check("ohook","U1ECF")
+ check("Ocircumflexacute","U1ED0")
+ check("ocircumflexacute","U1ED1")
+ check("Ocircumflexgrave","U1ED2")
+ check("ocircumflexgrave","U1ED3")
+ check("Ocircumflexhook","U1ED4")
+ check("ocircumflexhook","U1ED5")
+ check("Ocircumflextilde","U1ED6")
+ check("ocircumflextilde","U1ED7")
+ check("Ocircumflexbelowdot","U1ED8")
+ check("ocircumflexbelowdot","U1ED9")
+ check("Ohornacute","U1EDA")
+ check("ohornacute","U1EDB")
+ check("Ohorngrave","U1EDC")
+ check("ohorngrave","U1EDD")
+ check("Ohornhook","U1EDE")
+ check("ohornhook","U1EDF")
+ check("Ohorntilde","U1EE0")
+ check("ohorntilde","U1EE1")
+ check("Ohornbelowdot","U1EE2")
+ check("ohornbelowdot","U1EE3")
+ check("Ubelowdot","U1EE4")
+ check("ubelowdot","U1EE5")
+ check("Uhook","U1EE6")
+ check("uhook","U1EE7")
+ check("Uhornacute","U1EE8")
+ check("uhornacute","U1EE9")
+ check("Uhorngrave","U1EEA")
+ check("uhorngrave","U1EEB")
+ check("Uhornhook","U1EEC")
+ check("uhornhook","U1EED")
+ check("Uhorntilde","U1EEE")
+ check("uhorntilde","U1EEF")
+ check("Uhornbelowdot","U1EF0")
+ check("uhornbelowdot","U1EF1")
+ check("Ybelowdot","U1EF4")
+ check("ybelowdot","U1EF5")
+ check("Yhook","U1EF6")
+ check("yhook","U1EF7")
+ check("Ytilde","U1EF8")
+ check("ytilde","U1EF9")
+ check("Ohorn","U01A0")
+ check("ohorn","U01A1")
+ check("Uhorn","U01AF")
+ check("uhorn","U01B0")
+ check("EcuSign","U20A0")
+ check("ColonSign","U20A1")
+ check("CruzeiroSign","U20A2")
+ check("FFrancSign","U20A3")
+ check("LiraSign","U20A4")
+ check("MillSign","U20A5")
+ check("NairaSign","U20A6")
+ check("PesetaSign","U20A7")
+ check("RupeeSign","U20A8")
+ check("WonSign","U20A9")
+ check("NewSheqelSign","U20AA")
+ check("DongSign","U20AB")
+ check("EuroSign","U20AC")
+ check("zerosuperior","U2070")
+ check("foursuperior","U2074")
+ check("fivesuperior","U2075")
+ check("sixsuperior","U2076")
+ check("sevensuperior","U2077")
+ check("eightsuperior","U2078")
+ check("ninesuperior","U2079")
+ check("zerosubscript","U2080")
+ check("onesubscript","U2081")
+ check("twosubscript","U2082")
+ check("threesubscript","U2083")
+ check("foursubscript","U2084")
+ check("fivesubscript","U2085")
+ check("sixsubscript","U2086")
+ check("sevensubscript","U2087")
+ check("eightsubscript","U2088")
+ check("ninesubscript","U2089")
+ check("partdifferential","U2202")
+ check("emptyset","U2205")
+ check("elementof","U2208")
+ check("notelementof","U2209")
+ check("containsas","U220B")
+ check("squareroot","U221A")
+ check("cuberoot","U221B")
+ check("fourthroot","U221C")
+ check("dintegral","U222C")
+ check("tintegral","U222D")
+ check("because","U2235")
+ check("approxeq","U2245")
+ check("notapproxeq","U2247")
+ check("notidentical","U2262")
+ check("stricteq","U2263")
+ check("braille_blank","U2800")
+ check("braille_dots_1","U2801")
+ check("braille_dots_2","U2802")
+ check("braille_dots_12","U2803")
+ check("braille_dots_3","U2804")
+ check("braille_dots_13","U2805")
+ check("braille_dots_23","U2806")
+ check("braille_dots_123","U2807")
+ check("braille_dots_4","U2808")
+ check("braille_dots_14","U2809")
+ check("braille_dots_24","U280a")
+ check("braille_dots_124","U280b")
+ check("braille_dots_34","U280c")
+ check("braille_dots_134","U280d")
+ check("braille_dots_234","U280e")
+ check("braille_dots_1234","U280f")
+ check("braille_dots_5","U2810")
+ check("braille_dots_15","U2811")
+ check("braille_dots_25","U2812")
+ check("braille_dots_125","U2813")
+ check("braille_dots_35","U2814")
+ check("braille_dots_135","U2815")
+ check("braille_dots_235","U2816")
+ check("braille_dots_1235","U2817")
+ check("braille_dots_45","U2818")
+ check("braille_dots_145","U2819")
+ check("braille_dots_245","U281a")
+ check("braille_dots_1245","U281b")
+ check("braille_dots_345","U281c")
+ check("braille_dots_1345","U281d")
+ check("braille_dots_2345","U281e")
+ check("braille_dots_12345","U281f")
+ check("braille_dots_6","U2820")
+ check("braille_dots_16","U2821")
+ check("braille_dots_26","U2822")
+ check("braille_dots_126","U2823")
+ check("braille_dots_36","U2824")
+ check("braille_dots_136","U2825")
+ check("braille_dots_236","U2826")
+ check("braille_dots_1236","U2827")
+ check("braille_dots_46","U2828")
+ check("braille_dots_146","U2829")
+ check("braille_dots_246","U282a")
+ check("braille_dots_1246","U282b")
+ check("braille_dots_346","U282c")
+ check("braille_dots_1346","U282d")
+ check("braille_dots_2346","U282e")
+ check("braille_dots_12346","U282f")
+ check("braille_dots_56","U2830")
+ check("braille_dots_156","U2831")
+ check("braille_dots_256","U2832")
+ check("braille_dots_1256","U2833")
+ check("braille_dots_356","U2834")
+ check("braille_dots_1356","U2835")
+ check("braille_dots_2356","U2836")
+ check("braille_dots_12356","U2837")
+ check("braille_dots_456","U2838")
+ check("braille_dots_1456","U2839")
+ check("braille_dots_2456","U283a")
+ check("braille_dots_12456","U283b")
+ check("braille_dots_3456","U283c")
+ check("braille_dots_13456","U283d")
+ check("braille_dots_23456","U283e")
+ check("braille_dots_123456","U283f")
+ check("braille_dots_7","U2840")
+ check("braille_dots_17","U2841")
+ check("braille_dots_27","U2842")
+ check("braille_dots_127","U2843")
+ check("braille_dots_37","U2844")
+ check("braille_dots_137","U2845")
+ check("braille_dots_237","U2846")
+ check("braille_dots_1237","U2847")
+ check("braille_dots_47","U2848")
+ check("braille_dots_147","U2849")
+ check("braille_dots_247","U284a")
+ check("braille_dots_1247","U284b")
+ check("braille_dots_347","U284c")
+ check("braille_dots_1347","U284d")
+ check("braille_dots_2347","U284e")
+ check("braille_dots_12347","U284f")
+ check("braille_dots_57","U2850")
+ check("braille_dots_157","U2851")
+ check("braille_dots_257","U2852")
+ check("braille_dots_1257","U2853")
+ check("braille_dots_357","U2854")
+ check("braille_dots_1357","U2855")
+ check("braille_dots_2357","U2856")
+ check("braille_dots_12357","U2857")
+ check("braille_dots_457","U2858")
+ check("braille_dots_1457","U2859")
+ check("braille_dots_2457","U285a")
+ check("braille_dots_12457","U285b")
+ check("braille_dots_3457","U285c")
+ check("braille_dots_13457","U285d")
+ check("braille_dots_23457","U285e")
+ check("braille_dots_123457","U285f")
+ check("braille_dots_67","U2860")
+ check("braille_dots_167","U2861")
+ check("braille_dots_267","U2862")
+ check("braille_dots_1267","U2863")
+ check("braille_dots_367","U2864")
+ check("braille_dots_1367","U2865")
+ check("braille_dots_2367","U2866")
+ check("braille_dots_12367","U2867")
+ check("braille_dots_467","U2868")
+ check("braille_dots_1467","U2869")
+ check("braille_dots_2467","U286a")
+ check("braille_dots_12467","U286b")
+ check("braille_dots_3467","U286c")
+ check("braille_dots_13467","U286d")
+ check("braille_dots_23467","U286e")
+ check("braille_dots_123467","U286f")
+ check("braille_dots_567","U2870")
+ check("braille_dots_1567","U2871")
+ check("braille_dots_2567","U2872")
+ check("braille_dots_12567","U2873")
+ check("braille_dots_3567","U2874")
+ check("braille_dots_13567","U2875")
+ check("braille_dots_23567","U2876")
+ check("braille_dots_123567","U2877")
+ check("braille_dots_4567","U2878")
+ check("braille_dots_14567","U2879")
+ check("braille_dots_24567","U287a")
+ check("braille_dots_124567","U287b")
+ check("braille_dots_34567","U287c")
+ check("braille_dots_134567","U287d")
+ check("braille_dots_234567","U287e")
+ check("braille_dots_1234567","U287f")
+ check("braille_dots_8","U2880")
+ check("braille_dots_18","U2881")
+ check("braille_dots_28","U2882")
+ check("braille_dots_128","U2883")
+ check("braille_dots_38","U2884")
+ check("braille_dots_138","U2885")
+ check("braille_dots_238","U2886")
+ check("braille_dots_1238","U2887")
+ check("braille_dots_48","U2888")
+ check("braille_dots_148","U2889")
+ check("braille_dots_248","U288a")
+ check("braille_dots_1248","U288b")
+ check("braille_dots_348","U288c")
+ check("braille_dots_1348","U288d")
+ check("braille_dots_2348","U288e")
+ check("braille_dots_12348","U288f")
+ check("braille_dots_58","U2890")
+ check("braille_dots_158","U2891")
+ check("braille_dots_258","U2892")
+ check("braille_dots_1258","U2893")
+ check("braille_dots_358","U2894")
+ check("braille_dots_1358","U2895")
+ check("braille_dots_2358","U2896")
+ check("braille_dots_12358","U2897")
+ check("braille_dots_458","U2898")
+ check("braille_dots_1458","U2899")
+ check("braille_dots_2458","U289a")
+ check("braille_dots_12458","U289b")
+ check("braille_dots_3458","U289c")
+ check("braille_dots_13458","U289d")
+ check("braille_dots_23458","U289e")
+ check("braille_dots_123458","U289f")
+ check("braille_dots_68","U28a0")
+ check("braille_dots_168","U28a1")
+ check("braille_dots_268","U28a2")
+ check("braille_dots_1268","U28a3")
+ check("braille_dots_368","U28a4")
+ check("braille_dots_1368","U28a5")
+ check("braille_dots_2368","U28a6")
+ check("braille_dots_12368","U28a7")
+ check("braille_dots_468","U28a8")
+ check("braille_dots_1468","U28a9")
+ check("braille_dots_2468","U28aa")
+ check("braille_dots_12468","U28ab")
+ check("braille_dots_3468","U28ac")
+ check("braille_dots_13468","U28ad")
+ check("braille_dots_23468","U28ae")
+ check("braille_dots_123468","U28af")
+ check("braille_dots_568","U28b0")
+ check("braille_dots_1568","U28b1")
+ check("braille_dots_2568","U28b2")
+ check("braille_dots_12568","U28b3")
+ check("braille_dots_3568","U28b4")
+ check("braille_dots_13568","U28b5")
+ check("braille_dots_23568","U28b6")
+ check("braille_dots_123568","U28b7")
+ check("braille_dots_4568","U28b8")
+ check("braille_dots_14568","U28b9")
+ check("braille_dots_24568","U28ba")
+ check("braille_dots_124568","U28bb")
+ check("braille_dots_34568","U28bc")
+ check("braille_dots_134568","U28bd")
+ check("braille_dots_234568","U28be")
+ check("braille_dots_1234568","U28bf")
+ check("braille_dots_78","U28c0")
+ check("braille_dots_178","U28c1")
+ check("braille_dots_278","U28c2")
+ check("braille_dots_1278","U28c3")
+ check("braille_dots_378","U28c4")
+ check("braille_dots_1378","U28c5")
+ check("braille_dots_2378","U28c6")
+ check("braille_dots_12378","U28c7")
+ check("braille_dots_478","U28c8")
+ check("braille_dots_1478","U28c9")
+ check("braille_dots_2478","U28ca")
+ check("braille_dots_12478","U28cb")
+ check("braille_dots_3478","U28cc")
+ check("braille_dots_13478","U28cd")
+ check("braille_dots_23478","U28ce")
+ check("braille_dots_123478","U28cf")
+ check("braille_dots_578","U28d0")
+ check("braille_dots_1578","U28d1")
+ check("braille_dots_2578","U28d2")
+ check("braille_dots_12578","U28d3")
+ check("braille_dots_3578","U28d4")
+ check("braille_dots_13578","U28d5")
+ check("braille_dots_23578","U28d6")
+ check("braille_dots_123578","U28d7")
+ check("braille_dots_4578","U28d8")
+ check("braille_dots_14578","U28d9")
+ check("braille_dots_24578","U28da")
+ check("braille_dots_124578","U28db")
+ check("braille_dots_34578","U28dc")
+ check("braille_dots_134578","U28dd")
+ check("braille_dots_234578","U28de")
+ check("braille_dots_1234578","U28df")
+ check("braille_dots_678","U28e0")
+ check("braille_dots_1678","U28e1")
+ check("braille_dots_2678","U28e2")
+ check("braille_dots_12678","U28e3")
+ check("braille_dots_3678","U28e4")
+ check("braille_dots_13678","U28e5")
+ check("braille_dots_23678","U28e6")
+ check("braille_dots_123678","U28e7")
+ check("braille_dots_4678","U28e8")
+ check("braille_dots_14678","U28e9")
+ check("braille_dots_24678","U28ea")
+ check("braille_dots_124678","U28eb")
+ check("braille_dots_34678","U28ec")
+ check("braille_dots_134678","U28ed")
+ check("braille_dots_234678","U28ee")
+ check("braille_dots_1234678","U28ef")
+ check("braille_dots_5678","U28f0")
+ check("braille_dots_15678","U28f1")
+ check("braille_dots_25678","U28f2")
+ check("braille_dots_125678","U28f3")
+ check("braille_dots_35678","U28f4")
+ check("braille_dots_135678","U28f5")
+ check("braille_dots_235678","U28f6")
+ check("braille_dots_1235678","U28f7")
+ check("braille_dots_45678","U28f8")
+ check("braille_dots_145678","U28f9")
+ check("braille_dots_245678","U28fa")
+ check("braille_dots_1245678","U28fb")
+ check("braille_dots_345678","U28fc")
+ check("braille_dots_1345678","U28fd")
+ check("braille_dots_2345678","U28fe")
+ check("braille_dots_12345678","U28ff")
+ check("NoSymbol","U0020")
+
+ if (ResName != "")
+ return ResName
+ else if (SubStr(X,1,1) == "U")
+ return X
+ else {
+ ResName := EncodeUni(Xkbsym)
+ if (StrLen(ResName) == 5)
+ return ResName
+ }
+ return ""
+}
+
+DecodeUni(Uni) {
+ result := ""
+ loop {
+ code := "0x" . SubStr(Uni,2,4)
+ Uni := SubStr(Uni,6)
+ if (code < 0x0080)
+ result := result . chr(code)
+ else if (code < 0x0800)
+ result := result . chr(0xC0 + (code >> 6)) . chr(0x80 + (code & 0x3F))
+ else
+ result := result . chr(0xE0 + (code >> 12)) . chr(0x80 + ((code >> 6) & 0x3F)) . chr(0x80 + (code & 0x3F))
+ if (Uni == "")
+ break
+ }
+ return result
+}
+
+EncodeUni(str) {
+SetFormat, Integer, hex
+; MsgBox % Asc(SubStr(str,1,1)) . Asc(SubStr(str,2,1))
+ result := ""
+ loop {
+ char := SubStr(str,1,1)
+ str := SubStr(str,2)
+ if (asc(char) < 0x80)
+ result := result . "U" . SubStr("0000" . SubStr(asc(char),3),-3)
+ else if (asc(char) < 0xC0) {
+ ; error
+ } else if (asc(char) < 0xE0) {
+ char2 := Substr(str,1,1)
+ str := SubStr(str,2)
+ if ((asc(char2) < 0x80) or (asc(char2) > 0xBF)) {
+ ; error
+ } else {
+ result := result . "U" . SubStr("0000" . SubStr((((asc(char) & 0x1F) << 6) + (asc(char2) & 0x3F)),3),-3)
+ }
+ } else if (asc(char) < 0xF8) {
+ char2 := SubStr(str,1,1)
+ char3 := SubStr(str,2,1)
+ str := SubStr(str,3)
+; MsgBox % "chars: " . char . ", " . char2 . ", " . char3 . ", str: " . str
+ if ((asc(char2) < 0x80) or (asc(char2) > 0xBF)
+ or (asc(char3) < 0x80) or (asc(char3) > 0xBF)) {
+ ; error
+ } else {
+; MsgBox % asc(char) . asc(char2) . asc(char3)
+; MsgBox % (((asc(char) & 0x0F) << 12) + ((asc(char2) & 0x3F) << 6) + (asc(char3) & 0x3F))
+ result := result . "U" . SubStr("0000" . SubStr((((asc(char) & 0x0F) << 12) + ((asc(char2) & 0x3F) << 6) + (asc(char3) & 0x3F)),3),-3)
+ }
+ }
+ if (str == "")
+ break
+ }
+SetFormat, Integer, d
+ StringUpper,result,result
+ return result
+}
+
+VarSetCapacity(Composita,10240000) ; 10 MB
+
+EncodeUnicodeFile(FFrom,FTo) {
+ Composita := ""
+ Miss := 0
+ FileRead, FileContents, %FFrom%
+ ProgressTop := "Converting " . FFrom . "..."
+
+ Loop, parse, FileContents, `n, `r ; Specifying `n prior to `r allows both Windows and Unix files to be parsed.
+ {
+ NumLines := A_Index
+ }
+
+ Count := 0
+ Loop, parse, FileContents, `n, `r ; Specifying `n prior to `r allows both Windows and Unix files to be parsed.
+ {
+ Count := Count + 1
+ ProgressVal := Count/NumLines*100
+ ProgressInd := "Lines: " . Count . ", Errors: " . Miss
+ Progress,%ProgressVal%,%ProgressInd%,%ProgressTop%
+ Line := A_LoopField
+ if ((Line == "") or (SubStr(Line,1,5) == "XCOMM") or (SubStr(Line,1,1) == "#"))
+ continue
+ Line := RegExReplace(Line,"[\t ]*(<[^>]*>)[\t ]*","$1")
+ RegExMatch(Line,"([^:]*):[\t ]*""((\\.|[^""])*)"".*",OutputVar)
+ ReplaceLeft := OutputVar1
+ ReplaceRight := ""
+ loop {
+ thechar := SubStr(OutputVar2,1,1)
+ OutputVar2 := SubStr(OutputVar2,2)
+ if (thechar == "\") {
+ thechar := SubStr(OutputVar2,1,1)
+ OutputVar2 := SubStr(OutputVar2,2)
+ if (thechar == "n")
+ thechar := chr(0x000d) ; Line-Feed
+ ReplaceRight := ReplaceRight . thechar
+ } else
+ ReplaceRight := ReplaceRight . thechar
+ if (OutputVar2 == "")
+ break
+ }
+
+ ; care for replaceleft
+ modkeys := ""
+ loop {
+ if ((SubStr(ReplaceLeft,1,1)=="<") and (InStr(ReplaceLeft,">"))) {
+ Xkbsym := SubStr(ReplaceLeft,2,InStr(ReplaceLeft,">")-2)
+ ReplaceLeft := SubStr(ReplaceLeft,InStr(ReplaceLeft,">")+1)
+
+ modkey := ConvertXkbsym(Xkbsym)
+ if (modkey == "") {
+ modkeys := "" ; invalidate whole line
+ break
+ }
+ modkeys := modkeys . modkey
+ if (ReplaceLeft != "") {
+ if (CM%modkeys% != 1) {
+ CM%modkeys% := 1
+ Composita := Composita . "CM" modkeys . ":=1`r`n"
+ }
+ }
+ else
+ break
+ }
+ else {
+ Xkbsym := "*entry*" ; make a non-fancy name from parsing error
+ modkeys := "" ; invalidate whole line
+ break
+ }
+ }
+ if (modkeys != "")
+ Composita := Composita "CD" modkeys ":=""" EncodeUni(ReplaceRight) """`r`n"
+ else {
+ Composita := Composita "; illegal " Xkbsym " in " A_LoopField "`r`n"
+ Miss := Miss + 1
+ }
+ }
+ Progress,off
+ FileAppend,%Composita%,%FTo%
+}
+
+NumPars = %0%
+if (NumPars < 2) {
+ MsgBox,Zu wenige Parameter`, Minimum=2
+ exit
+}
+
+CompRevision = %1%
+OutputFile = %2%
+
+FileDelete,%OutputFile%
+FileAppend,CompRevision := "%CompRevision%"`r`n, %OutputFile%
+
+loop %Numpars% {
+ if (A_Index < 3)
+ continue
+ EncodeUnicodeFile(%A_Index%, OutputFile)
+}
+
+; MsgBox % EncodeUni(DecodeUni("U20ACU0041U0070"))
+
+; MsgBox % ConvertXkbsym("KP_5") . ConvertXkbsym("a") \ No newline at end of file