; -*- 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 != "") { ressymb := EncodeUni(ReplaceRight) Composita .= "CD" . modkeys . ":=""" . ressymb . """`r`n" if (StrLen(ressymb)==5) Composita .= "CRC" . ressymb . ".="" " . modkeys . """`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")