From 22000d59b5c0fb737a0f683f2be5e71bc11f71a1 Mon Sep 17 00:00:00 2001 From: martin_r Date: Thu, 13 Nov 2008 17:14:59 +0000 Subject: git-svn-id: https://svn.neo-layout.org@1187 b9310e46-f624-0410-8ea1-cfbb3a30dc96 --- windows/neo-vars/src/source/makecompose.ahk | 1925 +++++++++++++++++++++++++++ 1 file changed, 1925 insertions(+) create mode 100644 windows/neo-vars/src/source/makecompose.ahk (limited to 'windows/neo-vars/src/source/makecompose.ahk') 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 -- cgit v1.2.3