diff options
Diffstat (limited to 'windows/neo-vars/Source')
| -rw-r--r-- | windows/neo-vars/Source/_subwcrev1.tmpl.ahk | 1 | ||||
| -rw-r--r-- | windows/neo-vars/Source/_subwcrev1.tmpl.bat | 1 | ||||
| -rw-r--r-- | windows/neo-vars/Source/_subwcrev2.tmpl.ahk | 1 | ||||
| -rw-r--r-- | windows/neo-vars/Source/keydefinitions.ahk | 122 | ||||
| -rw-r--r-- | windows/neo-vars/Source/keyhooks.ahk | 218 | ||||
| -rw-r--r-- | windows/neo-vars/Source/makecompose.ahk | 1890 | ||||
| -rw-r--r-- | windows/neo-vars/Source/neo20-all.ahk | 28 | ||||
| -rw-r--r-- | windows/neo-vars/Source/neovarscomp.ahk | 49 | ||||
| -rw-r--r-- | windows/neo-vars/Source/recycle.ahk | 808 | ||||
| -rw-r--r-- | windows/neo-vars/Source/shortcuts.ahk | 136 | ||||
| -rw-r--r-- | windows/neo-vars/Source/varsfunctions.ahk | 563 | 
11 files changed, 0 insertions, 3817 deletions
diff --git a/windows/neo-vars/Source/_subwcrev1.tmpl.ahk b/windows/neo-vars/Source/_subwcrev1.tmpl.ahk deleted file mode 100644 index 888b651..0000000 --- a/windows/neo-vars/Source/_subwcrev1.tmpl.ahk +++ /dev/null @@ -1 +0,0 @@ -Revision:="$WCREV$$WCMODS?M:$$WCMIXED?X:$"
 diff --git a/windows/neo-vars/Source/_subwcrev1.tmpl.bat b/windows/neo-vars/Source/_subwcrev1.tmpl.bat deleted file mode 100644 index b958643..0000000 --- a/windows/neo-vars/Source/_subwcrev1.tmpl.bat +++ /dev/null @@ -1 +0,0 @@ -set Revision=$WCREV$$WCMODS?M:$$WCMIXED?X:$
 diff --git a/windows/neo-vars/Source/_subwcrev2.tmpl.ahk b/windows/neo-vars/Source/_subwcrev2.tmpl.ahk deleted file mode 100644 index 89b9549..0000000 --- a/windows/neo-vars/Source/_subwcrev2.tmpl.ahk +++ /dev/null @@ -1 +0,0 @@ -CompRevision:="$WCREV$$WCMODS?M:$$WCMIXED?X:$"
 diff --git a/windows/neo-vars/Source/keydefinitions.ahk b/windows/neo-vars/Source/keydefinitions.ahk deleted file mode 100644 index cfc8821..0000000 --- a/windows/neo-vars/Source/keydefinitions.ahk +++ /dev/null @@ -1,122 +0,0 @@ -;  KeyCode     Ebene1  Ebene2  Ebene3  Ebene4  Ebene5  Ebene6  Ebene7* Ebene8*
 -; Reihe 1
 -ED("VKDCSC029",0,"Tcflx","Ttlde","Tobrg","Tcron","Tbrve","Tmcrn") ; circumflex
 -ED("VK31SC002",0,"U0031","U00B0","U00B9","U00BA","U2081","U00AC") ; 1
 -ED("VK32SC003",0,"U0032","U00A7","U00B2","U00AA","U2082","U2228") ; 2
 -ED("VK33SC004",0,"U0033","U2113","U00B3","U2116","U2083","U2227") ; 3
 -ED("VK34SC005",0,"U0034","U00BB","U203A","SPgUp","U2020","U22A5") ; 4
 -ED("VK35SC006",0,"U0035","U00AB","U2039",""     ,"U2640","U2221") ; 5
 -ED("VK36SC007",0,"U0036","U20AC","U00A2","U00A3","U2642","U2225") ; 6
 -ED("VK37SC008",0,"U0037","U0024","U00A5","U00A4","U03BA","U2209") ; 7
 -ED("VK38SC009",0,"U0038","U201E","U201A","SNDiv","U27E8","U2204") ; 8
 -ED("VK39SC00A",0,"U0039","U201C","U2018","SNMul","U27E9","U2226") ; 9
 -ED("VK30SC00B",0,"U0030","U201D","U2019","SNSub","U2080","U2205") ; 0
 -ED("VKDBSC00C",0,"U002D","U2013","U2014",""     ,"U2011","U00AD") ; -
 -ED("VKDDSC00D",0,"Tgrav",""     ,"Tdrss","Tdgrv","U1FFE",""     ) ; grave
 -; Reihe 2
 -ED("VK51SC010",1,"U0078","U0058","U2026","U22EE","U03BE","U039E") ; x
 -ED("VK57SC011",1,"U0076","U0056","U005F","U0008",""     ,"U2259") ; v
 -ED("VK45SC012",1,"U006C","U004C","U005B","S__Up","U03BB","U039B") ; l
 -ED("VK52SC013",1,"U0063","U0043","U005D","S_Del","U03C7","U2102") ; c
 -ED("VK54SC014",1,"U0077","U0057","U005E","S_Ins","U03C9","U03A9") ; w
 -ED("VK5ASC015",1,"U006B","U004B","U0021","U00A1","U03F0","U221A") ; k
 -ED("VK55SC016",1,"U0068","U0048","U003C","SN__7","U03C8","U03A8") ; h
 -ED("VK49SC017",1,"U0067","U0047","U003E","SN__8","U03B3","U0393") ; g
 -ED("VK4FSC018",1,"U0066","U0046","U003D","SN__9","U03C6","U03A6") ; f
 -ED("VK50SC019",1,"U0071","U0051","U0026","SNAdd","U03D5","U211A") ; q
 -ED("VKBASC01A",1,"U00DF","U1E9E","U017F",""     ,"U03C2","U2218") ; ß
 -ED("VKBBSC01B",0,"Tacut","Tcedi","Tstrk","Tdbac","U1FBF","Tabdt") ; acute
 -; Reihe 3
 -ED("VK41SC01E",1,"U0075","U0055","U005C","SHome","P_Uni","U222E") ; u
 -ED("VK53SC01F",1,"U0069","U0049","U002F","SLeft","U03B9","U222B") ; i
 -ED("VK44SC020",1,"U0061","U0041","U007B","SDown","U03B1","U2200") ; a
 -ED("VK46SC021",1,"U0065","U0045","U007D","SRght","U03B5","U2203") ; e
 -ED("VK47SC022",1,"U006F","U004F","U002A","S_End","U03BF","U2208") ; o
 -ED("VK48SC023",1,"U0073","U0053","U003F","U00BF","U03C3","U03A3","U017F") ; s
 -ED("VK4ASC024",1,"U006E","U004E","U0028","SN__4","U03BD","U2115") ; n
 -ED("VK4BSC025",1,"U0072","U0052","U0029","SN__5","U03F1","U211D") ; r
 -ED("VK4CSC026",1,"U0074","U0054","U002D","SN__6","U03C4","U2202") ; t
 -ED("VKC0SC027",1,"U0064","U0044","U003A","SNDot","U03B4","U0394") ; d
 -ED("VKDESC028",1,"U0079","U0059","U0040","U002E","U03C5","U2207") ; y
 -; Reihe 4
 -ED("VK59SC02C",1,"U00FC","U00DC","U0023","U001B",""     ,"U221C") ; ü
 -ED("VK58SC02D",1,"U00F6","U00D6","U0024","U0009",""     ,"U2111") ; ö
 -ED("VK43SC02E",1,"U00E4","U00C4","U007C","SPgDn","U03B7","U2135") ; ä
 -ED("VK56SC02F",1,"U0070","U0050","U007E","U000D","U03C0","U03A0") ; p
 -ED("VK42SC030",1,"U007A","U005A","U0060",""     ,"U03B6","U2124") ; z
 -ED("VK4ESC031",1,"U0062","U0042","U002B","U003A","U03B2","U21D0") ; b
 -ED("VK4DSC032",1,"U006D","U004D","U0025","SN__1","U03BC","U21D4") ; m
 -ED("VKBCSC033",0,"U002C","U2022","U0022","SN__2","U03C1","U21D2") ; ,
 -ED("VKBESC034",0,"U002E","U2023","U0027","SN__3","U03D1","U0398") ; .
 -ED("VKBDSC035",1,"U006A","U004A","U003B","U003B","U03B8","U221D") ; j
 -
 -; Numpad
 -ED("VK90SC145",0,"U0009","U0009","U003D","U2260","U2248","U2261") ; NumLock
 -ED("VK6FSC135",0,"SNDiv","SNDiv","U00F7","U2300","U2223","U2044") ; NumpadDiv
 -ED("VK6ASC037",0,"SNMul","SNMul","U22C5","U00D7","U2299","U2297") ; NumpadMult
 -ED("VK6DSC04A",0,"SNSub","SNSub","U2212","U2216","U2296","U2238") ; NumpadSub
 -ED("VK6BSC04E",0,"SNAdd","SNAdd","U00B1","U2213","U2295","U2214") ; NumpadAdd
 -
 -EDN("VK67SC047","VK24SC047",0,"SN__7","U2714","U2195","SNHom","U226A","U2308") ; Numpad7, NumpadHome
 -EDN("VK68SC048","VK26SC048",0,"SN__8","U2718","U2191","SN_Up","U2229","U22C2") ; Numpad8, NumpadUp
 -EDN("VK69SC049","VK21SC049",0,"SN__9",""     ,"U20D7","SNPUp","U226B","U2309") ; Numpad9, NumpadPgUp
 -
 -EDN("VK64SC04B","VK25SC04B",0,"SN__4","U2663","U2190","SN_Le","U2282","U2286") ; Numpad4, NumpadLeft
 -EDN("VK65SC04C","VK0CSC04C",0,"SN__5","U20AC","U00A6","SNClr","U22B6","U22B7") ; Numpad5, NumpadClear
 -EDN("VK66SC04D","VK27SC04D",0,"SN__6",""     ,"U2192","SN_Ri","U2283","U2287") ; Numpad6, NumpadRight
 -
 -EDN("VK61SC04F","VK23SC04F",0,"SN__1","U2666","U2194","SNEnd","U2264","U230A") ; Numpad1, NumpadEnd
 -EDN("VK62SC050","VK28SC050",0,"SN__2","U2665","U2193","SN_Dn","U222A","U22C3") ; Numpad2, NumpadDown
 -EDN("VK63SC051","VK22SC051",0,"SN__3","U2660","U21CC","SNPDn","U2265","U230B") ; Numpad3, NumpadPgDn
 -
 -EDN("VK60SC052","VK2DSC052",0,"SN__0","U2423","U0025","SNIns","U2030","U25A1") ; Numpad0, NumpadIns
 -EDN("VK6ESC053","VK2ESC053",0,"SNDot","U002E","U002C","SNDel","U2032","U2033") ; NumpadDot, NumpadDel
 -
 -; other chars
 -ED("space",0,"U0020","U0020","U0020","SN__0","U00A0","U202F")
 -ED("esc"  ,0,"U001B","U001B","U001B","PRlod","U001B","U001B")
 -ED("tab"  ,0,"U0009","U0009","SComp","U0009","U0009","U0009")
 -ED("F10"  ,0,"S_F10","S_F10","P_EHt","P_VMt","S_F10","S_F10")
 -ED("F11"  ,0,"S_F11","S_F11","P_LMt","PLnSt","S_F11","S_F11")
 -ED1("enter"    ,"U000D")
 -ED1("backspace","U0008")
 -ED1("del"      ,"S_Del")
 -ED1("ins"      ,"S_Ins")
 -ED1("home"     ,"SHome")
 -ED1("end"      ,"S_End")
 -ED1("pgup"     ,"SPgUp")
 -ED1("pgdn"     ,"SPgDn")
 -ED1("up"       ,"S__Up")
 -ED1("down"     ,"SDown")
 -ED1("left"     ,"SLeft")
 -ED1("right"    ,"SRght")
 -ED1("numpadenter","SNEnt")
 -
 -ED(pos,caps,e1,e2,e3,e4,e5,e6,e7="",e8="") {
 -  global
 -  if (caps == 0)
 -    NOC%pos% := 1
 -  else {
 -    if (e1 != "")
 -      UNSH%e1% := 1 ; unshift wenn caps lock + Shift?
 -  }
 -  CP1%pos% := e1
 -  CP2%pos% := e2
 -  CP3%pos% := e3
 -  CP4%pos% := e4
 -  CP5%pos% := e5
 -  CP6%pos% := e6
 -  CP7%pos% := e7
 -  CP8%pos% := e8
 -}
 -
 -EDN(pos1,pos2,caps,e1,e2,e3,e4,e5,e6) {
 -  ED(pos1,caps,e1,e2,e3,e4,e5,e6)
 -  ED(pos2,caps,e1,e2,e3,e4,e5,e6)
 -}
 -
 -ED1(pos,e1) {
 - ED(pos,0,e1,e1,e1,e1,e1,e1)
 -}
 -
 -Comp := ""
 diff --git a/windows/neo-vars/Source/keyhooks.ahk b/windows/neo-vars/Source/keyhooks.ahk deleted file mode 100644 index ff818f6..0000000 --- a/windows/neo-vars/Source/keyhooks.ahk +++ /dev/null @@ -1,218 +0,0 @@ -;;;;;; DOWN EVENTS
 -; Reihe 1
 -
 -*VKDCSC029:: ; Zirkumflex
 -*VK31SC002:: ; 1
 -*VK32SC003:: ; 2
 -*VK33SC004:: ; 3
 -*VK34SC005:: ; 4
 -*VK35SC006:: ; 5
 -*VK36SC007:: ; 6
 -*VK37SC008:: ; 7
 -*VK38SC009:: ; 8
 -*VK39SC00A:: ; 9
 -*VK30SC00B:: ; 0
 -*VKDBSC00C:: ; ß
 -*VKDDSC00D:: ; Akut
 -
 -; Reihe 2
 -
 -*VK51SC010:: ; q (x)
 -*VK57SC011:: ; w (v)x
 -*VK45SC012:: ; e (l)
 -*VK52SC013:: ; r (c)
 -*VK54SC014:: ; t (w)
 -*VK5ASC015:: ; z (k) 
 -*VK55SC016:: ; u (h)
 -*VK49SC017:: ; i (g)
 -*VK4FSC018:: ; o (f)
 -*VK50SC019:: ; p (q)
 -*VKBASC01A:: ; ü (ß)
 -*VKBBSC01B:: ; + (tot3)
 -
 -; Reihe 3
 -
 -*VK41SC01E:: ; a (u)
 -*VK53SC01F:: ; s (i)
 -*VK44SC020:: ; d (a)
 -*VK46SC021:: ; f (e)
 -*VK47SC022:: ; g (o)
 -*VK48SC023:: ; h (s)
 -*VK4ASC024:: ; j (n)
 -*VK4BSC025:: ; k (r)
 -*VK4CSC026:: ; l (t)
 -*VKC0SC027:: ; ö (d)
 -*VKDESC028:: ; ä (y)
 -
 -; Reihe 4
 -
 -*VK59SC02C:: ; y (ü)
 -*VK58SC02D:: ; x (ö)
 -*VK43SC02E:: ; c (ä)
 -*VK56SC02F:: ; v (p)
 -*VK42SC030:: ; b (z)
 -*VK4ESC031:: ; n (b)
 -*VK4DSC032:: ; m (m)
 -*VKBCSC033:: ; , (,)
 -*VKBESC034:: ; . (.)
 -*VKBDSC035:: ; - (j)
 -*space::
 -
 -; Numpad
 -
 -*VK90SC145:: ; NumLock
 -*VK6FSC135:: ; NumpadDiv
 -*VK6ASC037:: ; NumpadMult
 -*VK6DSC04A:: ; NumpadSub
 -*VK6BSC04E:: ; NumpadAdd
 -; *VK0DSC11C:: ; NumpadEnter
 -*VK67SC047:: ; NumPad7
 -*VK24SC047:: ; NumPadHome
 -*VK68SC048:: ; NumPad8
 -*VK26SC048:: ; NumPadUp
 -*VK69SC049:: ; NumPad9
 -*VK21SC049:: ; NumPadPgUp
 -*VK64SC04B:: ; NumPad4
 -*VK25SC04B:: ; NumPadLeft
 -*VK65SC04C:: ; NumPad5
 -*VK0CSC04C:: ; NumPadClear
 -*VK66SC04D:: ; NumPad6
 -*VK27SC04D:: ; NumPadRight
 -*VK61SC04F:: ; NumPad1
 -*VK23SC04F:: ; NumPadEnd
 -*VK62SC050:: ; NumPad2
 -*VK28SC050:: ; NumPadDown
 -*VK63SC051:: ; NumPad3
 -*VK22SC051:: ; NumPadPgDn
 -*VK60SC052:: ; NumPad0
 -*VK2DSC052:: ; NumPadIns
 -*VK6ESC053:: ; NumPadDot
 -*VK2ESC053:: ; NumPadDel
 -tab::
 -esc::
 -*enter::
 -*backspace::
 -*del::
 -*ins::
 -*home::
 -*end::
 -*pgup::
 -*pgdn::
 -*up::
 -*down::
 -*left::
 -*right::
 -F10::
 -F11::
 -numpadenter::
 -
 -;;;;;; UP EVENTS
 -; Reihe 1
 -
 -*VKDCSC029 up:: ; Zirkumflex
 -*VK31SC002 up:: ; 1
 -*VK32SC003 up:: ; 2
 -*VK33SC004 up:: ; 3
 -*VK34SC005 up:: ; 4
 -*VK35SC006 up:: ; 5
 -*VK36SC007 up:: ; 6
 -*VK37SC008 up:: ; 7
 -*VK38SC009 up:: ; 8
 -*VK39SC00A up:: ; 9
 -*VK30SC00B up:: ; 0
 -*VKDBSC00C up:: ; ß
 -*VKDDSC00D up:: ; Akut
 -
 -; Reihe 2
 -
 -*VK51SC010 up:: ; q (x)
 -*VK57SC011 up:: ; w (v)x
 -*VK45SC012 up:: ; e (l)
 -*VK52SC013 up:: ; r (c)
 -*VK54SC014 up:: ; t (w)
 -*VK5ASC015 up:: ; z (k) 
 -*VK55SC016 up:: ; u (h)
 -*VK49SC017 up:: ; i (g)
 -*VK4FSC018 up:: ; o (f)
 -*VK50SC019 up:: ; p (q)
 -*VKBASC01A up:: ; ü (ß)
 -*VKBBSC01B up:: ; + (tot3)
 -
 -; Reihe 3
 -
 -*VK41SC01E up:: ; a (u)
 -*VK53SC01F up:: ; s (i)
 -*VK44SC020 up:: ; d (a)
 -*VK46SC021 up:: ; f (e)
 -*VK47SC022 up:: ; g (o)
 -*VK48SC023 up:: ; h (s)
 -*VK4ASC024 up:: ; j (n)
 -*VK4BSC025 up:: ; k (r)
 -*VK4CSC026 up:: ; l (t)
 -*VKC0SC027 up:: ; ö (d)
 -*VKDESC028 up:: ; ä (y)
 -
 -; Reihe 4
 -
 -*VK59SC02C up:: ; y (ü)
 -*VK58SC02D up:: ; x (ö)
 -*VK43SC02E up:: ; c (ä)
 -*VK56SC02F up:: ; v (p)
 -*VK42SC030 up:: ; b (z)
 -*VK4ESC031 up:: ; n (b)
 -*VK4DSC032 up:: ; m (m)
 -*VKBCSC033 up:: ; , (,)
 -*VKBESC034 up:: ; . (.)
 -*VKBDSC035 up:: ; - (j)
 -*space up::
 -
 -; Numpad
 -
 -*VK90SC145 up:: ; NumLock
 -*VK6FSC135 up:: ; NumpadDiv
 -*VK6ASC037 up:: ; NumpadMult
 -*VK6DSC04A up:: ; NumpadSub
 -*VK6BSC04E up:: ; NumpadAdd
 -; *VK0DSC11C up:: ; NumpadEnter
 -*VK67SC047 up:: ; NumPad7
 -*VK24SC047 up:: ; NumPadHome
 -*VK68SC048 up:: ; NumPad8
 -*VK26SC048 up:: ; NumPadUp
 -*VK69SC049 up:: ; NumPad9
 -*VK21SC049 up:: ; NumPadPgUp
 -*VK64SC04B up:: ; NumPad4
 -*VK25SC04B up:: ; NumPadLeft
 -*VK65SC04C up:: ; NumPad5
 -*VK0CSC04C up:: ; NumPadClear
 -*VK66SC04D up:: ; NumPad6
 -*VK27SC04D up:: ; NumPadRight
 -*VK61SC04F up:: ; NumPad1
 -*VK23SC04F up:: ; NumPadEnd
 -*VK62SC050 up:: ; NumPad2
 -*VK28SC050 up:: ; NumPadDown
 -*VK63SC051 up:: ; NumPad3
 -*VK22SC051 up:: ; NumPadPgDn
 -*VK60SC052 up:: ; NumPad0
 -*VK2DSC052 up:: ; NumPadIns
 -*VK6ESC053 up:: ; NumPadDot
 -*VK2ESC053 up:: ; NumPadDel
 -tab up::
 -esc up::
 -*enter up::
 -*backspace up::
 -*del up::
 -*ins up::
 -*home up::
 -*end up::
 -*pgup up::
 -*pgdn up::
 -*up up::
 -*down up::
 -*left up::
 -*right up::
 -F10 up::
 -F11 up::
 -numpadenter up::
 -
 -  AllStar(A_ThisHotkey)
 -return
 diff --git a/windows/neo-vars/Source/makecompose.ahk b/windows/neo-vars/Source/makecompose.ahk deleted file mode 100644 index 1f98aad..0000000 --- a/windows/neo-vars/Source/makecompose.ahk +++ /dev/null @@ -1,1890 +0,0 @@ -; -*- 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 . "U00" . SubStr(asc(char),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,NumLines) {
 -Composita := ""
 -Count := 0
 -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.
 -{
 -    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 := RegExReplace(OutputVar2,"\\(.)","$1")
 -
 -    ; 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
 -    }
 -}
 -FileDelete,%FTo%
 -FileAppend,%Composita%,%FTo%
 -}
 -
 -EncodeUnicodeFile("..\..\Compose\en_US.UTF-8","Source\en_us.ahk"   ,5609)
 -EncodeUnicodeFile("..\..\Compose\Compose.neo","Source\neocomp.ahk" ,1067)
 -
 -; MsgBox % EncodeUni(DecodeUni("U20ACU0041U0070"))
 -
 -; MsgBox % ConvertXkbsym("KP_5") . ConvertXkbsym("a")
\ No newline at end of file diff --git a/windows/neo-vars/Source/neo20-all.ahk b/windows/neo-vars/Source/neo20-all.ahk deleted file mode 100644 index 38eb336..0000000 --- a/windows/neo-vars/Source/neo20-all.ahk +++ /dev/null @@ -1,28 +0,0 @@ -; Change working dir
 -#Include %a_scriptdir%\..
 -
 -; Revision Information (don't moun)
 -#Include *i %a_scriptdir%\_subwcrev1.ahk
 -#Include *i %a_scriptdir%\_subwcrev2.ahk
 -
 -; die Compose-Definitionen
 -#Include *i %a_scriptdir%\en_us.ahk
 -#Include *i %a_scriptdir%\neocomp.ahk
 -#Include %a_scriptdir%\neovarscomp.ahk
 -
 -; Hier liegt die Tastaturbelegung
 -#Include %a_scriptdir%\keydefinitions.ahk
 -
 -; Shortcuts, um die Zeichen wieder sauber zur Applikation bringen zu können
 -#Include %a_scriptdir%\shortcuts.ahk
 -
 -; Good-old AHK-Skripts, enthalten die ersten Key-Hooks für Mod-Tasten
 -; Achtung: Hinter dem ersten Keyboard-Hook werden keine globalen Variablen
 -; mehr gesetzt!
 -#Include %a_scriptdir%\recycle.ahk
 -
 -; Normale Keyboard-Hooks
 -#Include %a_scriptdir%\keyhooks.ahk
 -
 -; Das Herz von neo20.ahk: die Tasten- und Zeichen-Behandlungsroutinen
 -#Include %a_scriptdir%\varsfunctions.ahk
 diff --git a/windows/neo-vars/Source/neovarscomp.ahk b/windows/neo-vars/Source/neovarscomp.ahk deleted file mode 100644 index 9ae608c..0000000 --- a/windows/neo-vars/Source/neovarscomp.ahk +++ /dev/null @@ -1,49 +0,0 @@ -/*
 -CM* == 1: Await more compose chars after this sequence? 
 -CD*     : Replace compose sequence by this character
 -CPx*    : Key press for * in Ebene x
 -CPNx*   : Key press for numpad * in Ebene x
 -CS*     : shortcut to output instead of *
 -PP*     : repeat code for key *
 -PR*     : release code for key *
 -*/
 -
 -; ein wenig COMPOSE
 -CMSCompU002D := 1
 -CDSCompU002DSLeft := "U2190"
 -CDSCompU002DS__Up := "U2191"
 -CDSCompU002DSRght := "U2192"
 -CDSCompU002DSDown := "U2193"
 -CDSCompU002DSHome := "U2196"
 -CDSCompU002DSPgUp := "U2197"
 -CDSCompU002DSPgDn := "U2198"
 -CDSCompU002DS_End := "U2199"
 -CMSCompU003D := 1
 -CDSCompU003DSLeft := "U21D0"
 -CDSCompU003DS__Up := "U21D1"
 -CDSCompU003DSRght := "U21D2"
 -CDSCompU003DSDown := "U21D3"
 -CDSCompU003DSHome := "U21D6"
 -CDSCompU003DSPgUp := "U21D7"
 -CDSCompU003DSPgDn := "U21D8"
 -CDSCompU003DS_End := "U21D9"
 -CDSCompSComp := "U266B"
 -CDSCompU000D := "U240D"
 -CDSCompSNEnt := "U2318"
 -
 -CDSCompU0072U0072 := "P_rom"
 -CDSCompU0072U0052 := "P_rom"
 -CDSCompU0052U0072 := "P_Rom"
 -CDSCompU0052U0052 := "P_Rom"
 -CMSCompU0075 := 1
 -CMSCompU0055 := 1
 -CDSCompU0075U0075 := "P_Uni"
 -CDSCompU0075U0055 := "P_Uni"
 -CDSCompU0055U0075 := "P_Uni"
 -CDSCompU0055U0055 := "P_Uni"
 -CMSCompU0064 := 1
 -CMSCompU0044 := 1
 -CDSCompU0064U0064 := "PDUni"
 -CDSCompU0064U0044 := "PDUni"
 -CDSCompU0044U0064 := "PDUni"
 -CDSCompU0044U0044 := "PDUni"
 diff --git a/windows/neo-vars/Source/recycle.ahk b/windows/neo-vars/Source/recycle.ahk deleted file mode 100644 index d0fd704..0000000 --- a/windows/neo-vars/Source/recycle.ahk +++ /dev/null @@ -1,808 +0,0 @@ -/******************
 -* Initialisierung *
 -*******************
 -*/
 -
 -#MaxThreadsPerHotKey 4
 -
 -EbeneAktualisieren()
 -SetBatchLines -1
 -SetCapsLockState Off
 -SetNumLockState Off
 -SetScrollLockState Off
 -
 -name=Neo 2.0 (%A_ScriptName%) (r%Revision%-r%CompRevision%)
 -enable=Aktiviere %name%
 -disable=Deaktiviere %name%
 -#usehook on
 -#singleinstance force
 -#LTrim ; Quelltext kann eingerückt werden, 
 -Process,Priority,,High
 -Sendmode Input
 -#MaxHotkeysPerInterval 2000
 -
 -/****************
 -* Verzeichnisse *
 -*****************
 -*/
 -; Setzt den Pfad zu einem temporären Verzeichnis
 -EnvGet, WindowsEnvTempFolder, TEMP
 -ResourceFolder = %WindowsEnvTempFolder%\NEO2
 -FileCreateDir, %ResourceFolder%
 -
 -; Setzt den Pfad zu den NEO-Anwendungsdateien
 -EnvGet, WindowsEnvAppDataFolder, APPDATA
 -ApplicationFolder = %WindowsEnvAppDataFolder%\NEO2
 -FileCreateDir, %ApplicationFolder%
 -ini = %ApplicationFolder%\NEO2.ini
 -
 -/*******************
 -* Globale Schalter *
 -********************
 -*/
 -; Im folgenden gilt (soweit nicht anders angegeben) Ja = 1, Nein = 0:
 -
 -; Sollen die Bilder für die Bildschirmtastatur in die compilierte EXE-Datei miteingebunden werden? (Nachteil: grössere Dateigrösse, Vorteil: Referenz für Anfänger stets einfach verfügbar)
 -bildschirmTastaturEinbinden := 1
 -
 -; Syntaxhinweis: IniRead, Variable, InputFilename, Section, Key [, DefaultValue]
 -
 -; Soll der Treiber im Einhandmodus betrieben werden?
 -IniRead,einHandNeo,%ini%,Global,einHandNeo,0
 -
 -; Soll der Lernmodus aktiviert werden?
 -IniRead,lernModus,%ini%,Global,lernModus,0
 -
 -; Soll mit einer MsgBox explizit auf das Ein- und Ausschalten des Mod4-Locks hingewiesen werden?
 -IniRead,zeigeLockBox,%ini%,Global,zeigeLockBox,1
 -
 -; Soll aktivierter Mod4-Lock über die Rollen-LED des Keybord angezeigt werden (analog zu CapsLock)?
 -IniRead,UseMod4Light,%ini%,Global,UseMod4Light,1
 -
 -; Soll Lang-s auf s, s auf ß und ß auf Lang-s gelegt (bzw. vertauscht) werden?
 -IniRead,LangSTastatur,%ini%,Global,LangSTastatur,0
 -If LangSTastatur
 -  CharProc("LnS1")
 -else
 -  KeyboardLED(2,"off") ; deaktivieren, falls sie doch brennt
 -
 -IniRead,isVM,%ini%,Global,isVM,0
 -if (isVM)
 -  CharProc("_VM1")
 -
 -;Soll der Mod2Lock auch auf die Akzente, die Ziffernreihe und das Numpad angewandt werden?
 -; Wird striktesMod2Lock auf 1 gesetzt, wirkt CapsLock wie ShiftLock
 -IniRead,striktesMod2Lock,%ini%,Global,striktesMod2Lock,0
 -
 -
 -/***********************
 -* Resourcen-Verwaltung *
 -************************
 -*/
 -if(FileExist("ResourceFolder")<>false){
 -  ; Versuche, alle möglicherweise in die EXE eingebundenen Dateien zu extrahieren 
 -  FileInstall,neo_enabled.ico,%ResourceFolder%\neo_enabled.ico,1
 -  FileInstall,neo_disabled.ico,%ResourceFolder%\neo_disabled.ico,1
 -  iconBenutzen=1
 -  if (bildschirmTastaturEinbinden=1){
 -    FileInstall,ebene1.png,%ResourceFolder%\ebene1.png,1
 -    FileInstall,ebene2.png,%ResourceFolder%\ebene2.png,1
 -    FileInstall,ebene3.png,%ResourceFolder%\ebene3.png,1
 -    FileInstall,ebene4.png,%ResourceFolder%\ebene4.png,1
 -    FileInstall,ebene5.png,%ResourceFolder%\ebene5.png,1
 -    FileInstall,ebene6.png,%ResourceFolder%\ebene6.png,1
 -    zeigeBildschirmTastatur=1
 -  }
 -}else{
 -  MsgBox,"Das Verzeichnis %ResourceFolder% konnte nicht angelegt werden!" ; Diese Zeile dient nur der eventuellen Fehlersuche und sollte eigentlich niemals auftauchen.
 -}
 -
 -; Benutze die Dateien auch dann, wenn sie eventuell im aktuellen Verzeichnis vorhanden sind 
 -if(FileExist("ebene1.png")&&FileExist("ebene2.png")&&FileExist("ebene3.png")&&FileExist("ebene4.png")&&FileExist("ebene5.png")&&FileExist("ebene6.png"))
 -  zeigeBildschirmTastatur=1
 -if(FileExist("neo_enabled.ico")&&FileExist("neo_disabled.ico"))
 -  iconBenutzen=1
 -
 -/*******************************************
 -* Überprüfung auf deutsches Tastaturlayout *
 -********************************************
 -*/
 -regread,inputlocale,HKEY_CURRENT_USER,Keyboard Layout\Preload,1
 -regread,inputlocalealias,HKEY_CURRENT_USER,Keyboard Layout\Substitutes,%inputlocale%
 -if (inputlocalealias<>inputlocale=%inputlocalealias% and inputlocale<>00000407) {
 -  suspend   
 -  regread,inputlocale,HKEY_LOCAL_MACHINE,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\%inputlocale%,Layout Text
 -  msgbox, 48, Warnung!,
 -    (
 -    Nicht kompatibles Tastaturlayout:   
 -    `t%inputlocale%   
 -    `nDas deutsche QWERTZ muss als Standardlayout eingestellt  
 -    sein, damit %name% wie erwartet funktioniert.   
 -    `nÄndern Sie die Tastatureinstellung unter 
 -    `tSystemsteuerung   
 -    `t-> Regions- und Sprachoptionen   
 -    `t-> Sprachen 
 -    `t-> Details...   `n
 -    )
 -  exitapp
 -}
 -
 -/*************************
 -* Menü des Systray-Icons *
 -**************************
 -*/
 -if (iconBenutzen)
 -  menu,tray,icon,%ResourceFolder%\neo_enabled.ico,,1
 -menu,tray,nostandard
 -menu,tray,add,Öffnen,open
 -  menu,helpmenu,add,About,about
 -  menu,helpmenu,add,Autohotkey-Hilfe,help
 -  menu,helpmenu,add
 -  menu,helpmenu,add,http://autohotkey.com/,autohotkey
 -  menu,helpmenu,add,http://www.neo-layout.org/,neo
 -menu,tray,add,Hilfe,:helpmenu
 -menu,tray,add
 -menu,tray,add,%disable%,togglesuspend
 -menu,tray,add
 -menu,tray,add,Bearbeiten,edit
 -menu,tray,add,Neu Laden,reload
 -menu,tray,add
 -menu,tray,add,Nicht im Systray anzeigen,hide
 -menu,tray,add,%name% beenden, exitprogram
 -menu,tray,default,%disable%
 -menu,tray,tip,%name%
 -
 -/*
 -Sonstige Variablen
 -*/
 -guiErstellt := 0
 -alwaysOnTop := 1
 -isShiftRPressed := 0
 -isShiftLPressed := 0
 -isShiftPressed := 0
 -isMod2Locked := 0
 -IsMod3RPressed := 0
 -IsMod3LPressed := 0
 -IsMod3Pressed := 0
 -IsMod4RPressed := 0
 -IsMod4LPressed := 0
 -IsMod4Pressed := 0
 -IsMod4Locked := 0
 -; die Nachfolgenden sind nützlich um sich die Qwertz-Tasten abzugewöhnen, da alle auf der 4. Ebene vorhanden.
 -lernModus_std_Return := 0
 -lernModus_std_Backspace := 0
 -lernModus_std_PgUp := 0
 -lernModus_std_PgDn := 0
 -lernModus_std_Einf := 0
 -lernModus_std_Entf := 0
 -lernModus_std_Pos0 := 0
 -lernModus_std_Ende := 0
 -lernModus_std_Hoch := 0
 -lernModus_std_Runter := 0
 -lernModus_std_Links := 0
 -lernModus_std_Rechts := 0
 -lernModus_std_ZahlenReihe := 0
 -
 -; im folgenden kann man auch noch ein paar Tasten der 4. Ebene deaktivieren
 -; nützlich um sich zu zwingen, richtig zu schreiben
 -lernModus_neo_Backspace := 0
 -lernModus_neo_Entf := 1
 -
 -
 -
 -EbeneAktualisieren()
 -{
 -  global
 -  Modstate := IsMod4Active() . IsMod3Active()
 -  Ebene7 := 0
 -  Ebene8 := 0
 -  if        (Modstate == "00") { ; Ebene 1 oder 2
 -    if (IsShiftActive())         ; Ebene 2: Shift oder CapsLock
 -      Ebene := 2
 -    else                         ; Ebene 1: Ohne Mod oder CapsLock mit Shift
 -      Ebene := 1
 -    if (IsShiftPressed)          ; NC: Ebene 2: Shift (ignoriert CapsLock)
 -      EbeneNC := 2
 -    else                         ; NC: Ebene 1: Ohne Mod (ignoriert CapsLock)
 -      EbeneNC := 1
 -  } else if (Modstate == "01") { ; Ebene 3 oder 5 (ignoriert CapsLock)
 -    if (IsShiftPressed)          ; Ebene 5: Shift+Mod3
 -      Ebene := 5
 -    else                         ; Ebene 3: Mod3
 -      Ebene := 3
 -    EbeneNC := Ebene             ; NC: gleich
 -  } else if (Modstate == "10") { ; Ebene 4 (Mit Shift: Auch Ebene 7) (ignoriert CapsLock)
 -    Ebene := 4
 -    if (IsShiftPressed)          ; Ebene 7: Shift+Mod4
 -      Ebene7 := 1
 -    EbeneNC := Ebene             ; NC: gleich
 -  } else if (ModState == "11") { ; Ebene 6 (Mit Shift Xoder CapsLock: Auch Ebene 8)
 -    Ebene := 6
 -    if (IsShiftPressed)          ; Ebene 8: Shift (ignoriert CapsLock)
 -      Ebene8 := 1
 -    EbeneNC := Ebene             ; NC: gleich
 -  }
 -}
 -
 -IsShiftActive() {
 -  global
 -  if (isMod2Locked)
 -    if (isShiftPressed)
 -      return 0
 -    else
 -      return 1
 -  else
 -    if (isShiftPressed)
 -      return 1
 -    else
 -      return 0
 -}
 -
 -IsMod3Active() {
 -   global
 -   return isMod3Pressed
 -}
 -
 -IsMod4Active() {
 -  global
 -  if (isMod4Locked)
 -    if (isMod4Pressed)
 -      return 0
 -    else
 -      return 1
 -  else
 -    if (isMod4Pressed)
 -      return 1
 -    else
 -      return 0
 -}
 -
 -/* 
 -   ------------------------------------------------------
 -   Methode KeyboardLED zur Steuerung der Keyboard-LEDs
 -   (NumLock/CapsLock/ScrollLock-Lichter)
 -   
 -   Benutzungshinweise: Man benutze
 -   KeyboardLED(LEDvalue,"Cmd"), wobei
 -   Cmd = on/off/switch,
 -   LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4,
 -   bzw. eine beliebige Summe dieser Werte:
 -   AlleAus=0, CapsLock+NumLock=6, etc.
 -   
 -   Der folgende Code wurde übernommen von:
 -   http://www.autohotkey.com/forum/viewtopic.php?t=10532
 -   
 -   Um eventuelle Wechselwirkungen mit dem bestehenden
 -   Code (insb. der Unicode-Konvertierung) auszuschließen,
 -   sind auch alle (Hilfsmethoden) mit dem Postfix LED
 -   versehen worden.
 -   ------------------------------------------------------
 -*/
 -
 -KeyboardLED(LEDvalue, Cmd){ ; LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4 ; Cmd = on/off/switch
 -  Static h_device
 -  If ! h_device ; initialise
 -  {
 -    device=\Device\KeyBoardClass0
 -    SetUnicodeStrLED(fn,device) 
 -    h_device:=NtCreateFileLED(fn,0+0x00000100+0x00000080+0x00100000,1,1,0x00000040+0x00000020,0)
 -  }
 -  VarSetCapacity(output_actual,4,0)
 -  input_size=4
 -  VarSetCapacity(input,input_size,0)
 -  If Cmd=switch ;switches every LED according to LEDvalue
 -   KeyLED:=LEDvalue
 -  If Cmd=on ;forces all choosen LED's to ON (LEDvalue= 0 ->LED's according to keystate)
 -   KeyLED:=LEDvalue | (GetKeyState("ScrollLock", "T") + 2*GetKeyState("NumLock", "T") + 4*GetKeyState("CapsLock", "T"))
 -  If Cmd=off ;forces all choosen LED's to OFF (LEDvalue= 0 ->LED's according to keystate)
 -    {
 -    LEDvalue:=LEDvalue ^ 7
 -    KeyLED:=LEDvalue & (GetKeyState("ScrollLock","T") + 2*GetKeyState("NumLock","T") + 4*GetKeyState("CapsLock","T"))
 -    }
 -  ; EncodeIntegerLED(KeyLED,1,&input,2) ;input bit pattern (KeyLED): bit 0 = scrolllock ;bit 1 = numlock ;bit 2 = capslock
 -  input:=Chr(1) Chr(1) Chr(KeyLED)
 -  input:=Chr(1)
 -  input=
 -  success:=DllCall("DeviceIoControl"
 -    , "uint", h_device
 -    , "uint", CTL_CODE_LED( 0x0000000b     ; FILE_DEVICE_KEYBOARD
 -              , 2
 -              , 0             ; METHOD_BUFFERED
 -              , 0  )          ; FILE_ANY_ACCESS
 -    , "uint", &input
 -    , "uint", input_size
 -    , "uint", 0
 -    , "uint", 0
 -    , "uint", &output_actual
 -    , "uint", 0 )
 -}
 -
 -CTL_CODE_LED(p_device_type,p_function,p_method,p_access ){
 -  Return, ( p_device_type << 16 ) | ( p_access << 14 ) | ( p_function << 2 ) | p_method
 -}
 -
 -NtCreateFileLED(ByRef wfilename,desiredaccess,sharemode,createdist,flags,fattribs){ 
 -  VarSetCapacity(fh,4,0) 
 -  VarSetCapacity(objattrib,24,0) 
 -  VarSetCapacity(io,8,0) 
 -  VarSetCapacity(pus,8) 
 -  uslen:=DllCall("lstrlenW","str",wfilename)*2 
 -  InsertIntegerLED(uslen,pus,0,2) 
 -  InsertIntegerLED(uslen,pus,2,2) 
 -  InsertIntegerLED(&wfilename,pus,4) 
 -  InsertIntegerLED(24,objattrib,0) 
 -  InsertIntegerLED(&pus,objattrib,8) 
 -  status:=DllCall("ntdll\ZwCreateFile","str",fh,"UInt",desiredaccess,"str",objattrib,"str",io,"UInt",0,"UInt",fattribs
 -                  ,"UInt",sharemode,"UInt",createdist,"UInt",flags,"UInt",0,"UInt",0, "UInt") 
 -  return ExtractIntegerLED(fh) 
 -} 
 -
 -SetUnicodeStrLED(ByRef out, str_){ 
 -  VarSetCapacity(st1, 8, 0) 
 -  InsertIntegerLED(0x530025, st1) 
 -  VarSetCapacity(out, (StrLen(str_)+1)*2, 0) 
 -  DllCall("wsprintfW", "str", out, "str", st1, "str", str_, "Cdecl UInt") 
 -} 
 -
 -ExtractIntegerLED(ByRef pSource, pOffset = 0, pIsSigned = false, pSize = 4){
 -; pSource is a string (buffer) whose memory area contains a raw/binary integer at pOffset. 
 -; The caller should pass true for pSigned to interpret the result as signed vs. unsigned. 
 -; pSize is the size of PSource's integer in bytes (e.g. 4 bytes for a DWORD or Int). 
 -; pSource must be ByRef to avoid corruption during the formal-to-actual copying process 
 -; (since pSource might contain valid data beyond its first binary zero). 
 -  Loop %pSize%  ; Build the integer by adding up its bytes. 
 -    result += *(&pSource + pOffset + A_Index-1) << 8*(A_Index-1) 
 -  if (!pIsSigned OR pSize > 4 OR result < 0x80000000) 
 -    return result  ; Signed vs. unsigned doesn't matter in these cases. 
 -  ; Otherwise, convert the value (now known to be 32-bit) to its signed counterpart: 
 -  return -(0xFFFFFFFF - result + 1) 
 -} 
 -
 -InsertIntegerLED(pInteger, ByRef pDest, pOffset = 0, pSize = 4){ 
 -; The caller must ensure that pDest has sufficient capacity.  To preserve any existing contents in pDest, 
 -; only pSize number of bytes starting at pOffset are altered in it. 
 -  Loop %pSize%  ; Copy each byte in the integer into the structure as raw binary data. 
 -    DllCall("RtlFillMemory", "UInt", &pDest + pOffset + A_Index-1, "UInt", 1, "UChar", pInteger >> 8*(A_Index-1) & 0xFF) 
 -}
 -
 -/*
 -   ------------------------------------------------------
 -   Methoden zum Senden von Unicode-Zeichen
 -   ------------------------------------------------------
 -
 -Über den GTK-Workaround:
 -Dieser basiert auf http://www.autohotkey.com/forum/topic32947.html
 -Der Aufruf von »SubStr(charCode,3)« geht davon aus, dass alle charCodes in Hex mit führendem „0x“ angegeben sind. Die abenteuerliche „^+u“-Konstruktion benötigt im Übrigen den Hex-Wert in Kleinschrift, was derzeit nicht bei den Zeichendefinitionen umgesetzt ist, daher zentral und weniger fehlerträchtig an dieser Stelle. Außerdem ein abschließend gesendetes Space, sonst bleibt der „eingetippte“ Unicode-Wert noch kurz sichtbar stehen, bevor er sich GTK-sei-dank in das gewünschte Zeichen verwandelt.
 -*/
 -
 -SendUnicodeChar(charCode){
 -  IfWinActive,ahk_class gdkWindowToplevel
 -  {
 -    StringLower,charCode,charCode
 -    send % "^+u" . SubStr(charCode,3) . " "
 -  }else{
 -    VarSetCapacity(ki,28*2,0)
 -    EncodeInteger(&ki+0,1)
 -    EncodeInteger(&ki+6,charCode)
 -    EncodeInteger(&ki+8,4)
 -    EncodeInteger(&ki+28,1)
 -    EncodeInteger(&ki+34,charCode)
 -    EncodeInteger(&ki+36,4|2)
 -    DllCall("SendInput","UInt",2,"UInt",&ki,"Int",28)
 -  }
 -}
 -
 -SendUnicodeCharDown(charCode){
 -  IfWinActive,ahk_class gdkWindowToplevel
 -  {
 -    StringLower,charCode,charCode
 -    send % "^+u" . SubStr(charCode,3) . " "
 -  }else{
 -    VarSetCapacity(ki,28,0)
 -    EncodeInteger(&ki+0,1)
 -    EncodeInteger(&ki+6,charCode)
 -    EncodeInteger(&ki+8,4)
 -
 -    DllCall("SendInput","UInt",1,"UInt",&ki,"Int",28)
 -  }
 -}
 -
 -SendUnicodeCharUp(charCode){
 -  IfWinActive,ahk_class gdkWindowToplevel
 -  {
 -    ; nothing
 -  }else{
 -    VarSetCapacity(ki,28,0)
 -    EncodeInteger(&ki+0,1)
 -    EncodeInteger(&ki+6,charCode)
 -    EncodeInteger(&ki+8,4|2)
 -
 -    DllCall("SendInput","UInt",1,"UInt",&ki,"Int",28)
 -  }
 -}
 -
 -EncodeInteger(ref,val){
 -  DllCall("ntdll\RtlFillMemoryUlong","Uint",ref,"Uint",4,"Uint",val)
 -}
 -
 -/**********************
 -* Tastenkombinationen *
 -***********************
 -*/
 -
 -
 -+pause::
 -Suspend, Permit
 -  goto togglesuspend
 -
 -/*****************
 -* Menüfunktionen *
 -******************
 -*/
 -togglesuspend:
 -  if A_IsSuspended {
 -    menu, tray, rename, %enable%, %disable%
 -    menu, tray, tip, %name%
 -    if (iconBenutzen)
 -      menu, tray, icon, %ResourceFolder%\neo_enabled.ico,,1
 -    suspend , off ; Schaltet Suspend aus -> NEO
 -  } else {
 -    menu, tray, rename, %disable%, %enable%
 -    menu, tray, tip, %name% : Deaktiviert
 -    if (iconBenutzen)
 -      menu, tray, icon, %ResourceFolder%\neo_disabled.ico,,1
 -    suspend , on  ; Schaltet Suspend ein -> QWERTZ
 -  }
 -return
 -
 -help:
 -  Run, %A_WinDir%\hh mk:@MSITStore:autohotkey.chm
 -return
 -
 -about:
 -  msgbox, 64, %name% – Ergonomische Tastaturbelegung, 
 -  (
 -  %name% 
 -  `nDas Neo-Layout ersetzt das übliche deutsche 
 -  Tastaturlayout mit der Alternative Neo, 
 -  beschrieben auf http://neo-layout.org/. 
 -  `nDazu sind keine Administratorrechte nötig. 
 -  `nWenn Autohotkey aktiviert ist, werden alle Tastendrucke 
 -  abgefangen und statt dessen eine Übersetzung weitergeschickt. 
 -  `nDies geschieht transparent für den Anwender, 
 -  es muss nichts installiert werden. 
 -  `nDie Zeichenübersetzung kann leicht über das Icon im 
 -  Systemtray deaktiviert werden.  `n
 -  )
 -return
 -
 -neo:
 -  run http://neo-layout.org/
 -return
 -
 -autohotkey:
 -  run http://autohotkey.com/
 -return
 -
 -open:
 -  ListLines ; shows the Autohotkey window
 -return
 -
 -edit:
 -  edit
 -return
 -
 -reload:
 -  Reload
 -return
 -
 -hide:
 -  menu, tray, noicon
 -return
 -
 -exitprogram:
 -  exitapp
 -return
 -
 -/**************************
 -* lernModus Konfiguration *
 -* nur relevant wenn       *
 -* lernModus = 1           *
 -* Strg+Komma schaltet um  *
 -***************************
 -*/
 -^,::lernModus := not(lernModus)
 -
 -; 0 = aus, 1 = an
 -
 -; LShift+RShift == CapsLock (simuliert)
 -; Es werden nur die beiden Tastenkombinationen abgefragt,
 -; daher kommen LShift und RShift ungehindert bis in die
 -; Applikation. Dies ist aber merkwürdig, da beide Shift-
 -; Tasten nun /modifier keys/ werden und, wie in der AHK-
 -; Hilfe beschrieben, eigentlich nicht mehr bis zur App
 -; durchkommen sollten.
 -; KeyboardLED(4,"switch") hatte ich zuerst genommen, aber
 -; das schaltet, oh Wunder, die LED nicht wieder aus.
 -
 -~*VKA1SC136::
 -  if (isShiftLPressed and !isShiftRPressed)
 -    ToggleMod2Lock()
 -  isShiftRPressed := 1
 -  isShiftPressed := 1
 -return
 -
 -~*VKA1SC136 up::
 -  isShiftRPressed := 0
 -  isShiftPressed := isShiftLPressed
 -return
 -
 -~*VKA0SC02A::
 -  if (isShiftRPressed and !isShiftLPressed)
 -    ToggleMod2Lock()
 -  isShiftLPressed := 1
 -  isShiftPressed := 1
 -return
 -
 -~*VKA0SC02A up::
 -  isShiftLPressed := 0
 -  isShiftPressed := isShiftRPressed
 -return
 -
 -ToggleMod2Lock() {
 -  global
 -  if (isMod2Locked)
 -  {
 -    isMod2Locked := 0
 -    KeyboardLED(4,"off")
 -  }
 -  else
 -  {
 -    isMod2Locked := 1
 -    KeyBoardLED(4,"on")
 -  }
 -}
 -
 -
 -*VKBFSC02B::
 -  if (isMod3LPressed and !isMod3RPressed)
 -    CharStarDown("MOD3", "MOD3", "SComp")
 -  isMod3RPressed := 1
 -  isMod3Pressed := 1
 -return
 -
 -*VKBFSC02B up::
 -  if (isMod3LPressed)
 -    CharStarUp("MOD3")
 -  isMod3RPressed := 0
 -  isMod3Pressed := isMod3LPressed
 -return
 -
 -*VK14SC03A::
 -  if (isMod3RPressed and !isMod3LPressed)
 -    CharStarDown("MOD3", "MOD3", "SComp")
 -  isMod3LPressed := 1
 -  isMod3Pressed := 1
 -return
 -
 -*VK14SC03A up::
 -  if (isMod3RPressed)
 -    CharStarUp("MOD3")
 -  isMod3LPressed := 0
 -  isMod3Pressed := isMod3RPressed
 -return
 -
 -;Mod4+Mod4 == Mod4-Lock
 -; Im Gegensatz zu LShift+RShift werden die beiden Tasten
 -; _nicht_ zur Applikation weitergeleitet, und nur bei
 -; gleichzeitigem Drücken wird der Mod4-Lock aktiviert und
 -; angezeigt.
 -
 -*VKA5SC138::
 -  wasMod4RPressed := isMod4RPressed
 -  isMod4RPressed := 1
 -  isMod4Pressed := 1
 -  if (isMod4LPressed and !wasMod4RPressed)
 -    ToggleMod4Lock()
 -return
 -
 -*VKA5SC138 up::
 -  isMod4RPressed := 0
 -  isMod4Pressed := isMod4LPressed
 -return
 -
 -*VKE2SC056::
 -  wasMod4LPressed := isMod4LPressed
 -  isMod4LPressed := 1
 -  isMod4Pressed := 1
 -  if (isMod4RPressed and !wasMod4LPressed)
 -    ToggleMod4Lock()
 -return
 -
 -*VKE2SC056 up::
 -  isMod4LPressed := 0
 -  isMod4Pressed := isMod4RPressed
 -return
 -
 -ToggleMod4Lock() {
 -  global
 -  if (IsMod4Locked) {
 -    IsMod4Locked := 0
 -    if (UseMod4Light)
 -      KeyboardLED(1,"off")
 -    if (zeigeLockBox)
 -      MsgBox Mod4-Feststellung aufgehoben!
 -  } else {
 -    IsMod4Locked := 1
 -    if (UseMod4Light)
 -      KeyboardLED(1,"on")
 -    if (zeigeLockBox)
 -      MsgBox Mod4 festgestellt: Um Mod4 wieder zu lösen, drücke beide Mod4-Tasten gleichzeitig!
 -  }
 -}
 -
 -/*
 -   ------------------------------------------------------
 -   BildschirmTastatur
 -   ------------------------------------------------------
 -*/
 -
 -F1::
 -  if(isMod4Active() && zeigeBildschirmTastatur)
 -    goto Switch1
 -  else send {blind}{F1}
 -return
 -
 -F2::
 -  if(isMod4Active() && zeigeBildschirmTastatur)
 -    goto Switch2
 -  else send {blind}{F2}
 -return
 -
 -F3::
 -  if(isMod4Active() && zeigeBildschirmTastatur)
 -    goto Switch3
 -  else send {blind}{F3}
 -return
 -
 -F4::
 -  if(isMod4Active() && zeigeBildschirmTastatur)
 -    goto Switch4
 -  else send {blind}{F4}
 -return
 -
 -F5::
 -  if(isMod4Active() && zeigeBildschirmTastatur)
 -    goto Switch5
 -  else send {blind}{F5}
 -return
 -
 -F6::
 -  if(isMod4Active() && zeigeBildschirmTastatur)
 -    goto Switch6
 -  else send {blind}{F6}
 -return
 -
 -F7::
 -  if(isMod4Active() && zeigeBildschirmTastatur)
 -    goto Show
 -  else send {blind}{F7}
 -return
 -
 -F8::
 -  if(isMod4Active() && zeigeBildschirmTastatur)
 -    goto ToggleAlwaysOnTop
 -  else send {blind}{F8}
 -return
 -
 -Switch1:
 -  tImage := ResourceFolder . "\ebene1.png"
 -  goto Switch
 -Return
 -
 -Switch2:
 -  tImage := ResourceFolder . "\ebene2.png"
 -  goto Switch
 -Return
 -
 -Switch3:
 -  tImage := ResourceFolder . "\ebene3.png"
 -  goto Switch
 -Return
 -
 -Switch4:
 -  tImage := ResourceFolder . "\ebene4.png"
 -  goto Switch
 -Return
 -
 -Switch5:
 -  tImage := ResourceFolder . "\ebene5.png"
 -  goto Switch
 -Return
 -
 -Switch6:
 -  tImage := ResourceFolder . "\ebene6.png"
 -  goto Switch
 -Return
 -
 -Switch:
 -  if (guiErstellt) 
 -  {
 -     if (Image = tImage)
 -        goto Close
 -     else
 -     {
 -       Image := tImage
 -       SetTimer, Refresh
 -     }
 -  }
 -  else 
 -  {
 -    Image := tImage
 -    goto Show    
 -  }
 -Return
 -
 -Show:
 -  if (guiErstellt) 
 -  {
 -     goto Close
 -  }
 -  else
 -  {
 -    if (Image = "") 
 -    {
 -      Image := ResourceFolder . "\ebene1.png"
 -    }     
 -    yPosition := A_ScreenHeight -270
 -    Gui, Color, FFFFFF
 -    Gui, Add, Button, xm+5 gSwitch1, F1
 -    Gui, Add, Text, x+5, kleine Buchstaben
 -    Gui, Add, Button, xm+5 gSwitch2, F2
 -    Gui, Add, Text, x+5, große Buchstaben
 -    Gui, Add, Button, xm+5 gSwitch3, F3
 -    Gui, Add, Text, x+5, Satz-/Sonderzeichen
 -    Gui, Add, Button, xm+5 gSwitch4, F4
 -    Gui, Add, Text, x+5, Zahlen / Steuerung
 -    Gui, Add, Button, xm+5 gSwitch5, F5
 -    Gui, Add, Text, x+5, Sprachen
 -    Gui, Add, Button, xm+5 gSwitch6, F6
 -    Gui, Add, Text, x+5, Mathesymbole
 -    Gui, Add, Button, xm+5 gShow, F7
 -    Gui, Add, Text, x+5, An /
 -    Gui, Add, Text, y+3, Aus
 -    Gui, Add, Button, x+10 y+-30 gShow, F8
 -    Gui, Add, Text, x+5, OnTop
 -    Gui, Add, Picture,AltSubmit ys w564 h200 vPicture, %Image%
 -    Gui, +AlwaysOnTop
 -    Gui, Show, y%yposition% Autosize
 -;    SetTimer, Refresh
 -    guiErstellt = 1
 -  } 
 -Return
 -
 -Close:
 -  guiErstellt = 0
 -  Gui, Destroy
 -Return
 -
 -Refresh:
 -   If (Image != OldImage)
 -   {
 -      GuiControl, , Picture, %Image%
 -      OldImage := Image
 -   }
 -Return
 -
 -ToggleAlwaysOnTop:
 -    if (alwaysOnTop)
 -    {
 -      Gui, -AlwaysOnTop
 -      alwaysOnTop = 0    
 -    }
 -    else
 -    {
 -      Gui, +AlwaysOnTop
 -      alwaysOnTop = 1
 -    }
 -Return
 diff --git a/windows/neo-vars/Source/shortcuts.ahk b/windows/neo-vars/Source/shortcuts.ahk deleted file mode 100644 index e0d2cc5..0000000 --- a/windows/neo-vars/Source/shortcuts.ahk +++ /dev/null @@ -1,136 +0,0 @@ -/* SHORTCUTS
 -   Da in diesem AHK-Skript sämtliche Tastendrücke zur weiteren Verarbeitung
 -   in Unicode- und Spezialzeichen umgewandelt werden, müssen sie für eine
 -   effiziente Tasten-Ausgabe, wo möglich, zurück gewandelt werden. Dazu
 -   dienen Shortcuts: Soll beispielsweise das Unicode-Zeichen U0061 (kleines
 -   a) ausgegeben werden, muss dieses durch "send {a}" ersetzt werden. Die
 -   dafür notwendigen Rückwandlungskonstanten werden hier, teilweise
 -   automatisiert, definiert und im entsprechenden Unterprogramm zur Anwendung
 -   gebracht.
 -*/
 -
 -; ###### Shortcuts für alle ASCII-Zeichen (0x21 bis 0x7E)
 -SetFormat, integer, hex
 -char := 0x21
 -loop {
 -  s1 := SubStr(char,3)
 -  CSU00%s1% := chr(char)
 -  char += 1
 -  if (char = 0x7E)
 -    break
 -}
 -SetFormat, integer, d
 -
 -; #### weitere Shortcuts
 -CSU0008 := "Backspace"
 -CSU0009 := "tab"
 -CSU000D := "Enter"
 -CSU001B := "esc"
 -CSU0020 := "space"
 -
 -/**** die folgenden Shortcuts ersetzen die automatische Wahl entsprechender
 - **** down- und up-Sendezeichen, da die Zeichenerzeugung entweder aufwändiger
 - **** ist (wie bei den diversen toten Zeichen) oder schlicht mit AHK nicht
 - **** geht (wie das Key-Repeat der schließenden Klammer).
 -*/
 -DNCSU005E := "{^}{space}"
 -DNCSU0060 := "{``}{space}"
 -DNCSU007D := "{}}"                 ; "{} down}" geht nicht, warum auch immer
 -DNCSU00B4 := "{´}{space}"
 -UNSHU00B4 := 1
 -
 -/**** die meisten der folgenden Shortcuts werden von AHK zwar verarbeitet,
 - **** von dort aber nur als ALT+Numpad verschickt und daher nicht für alle
 - **** Programme nutzbar, also auskommentiert und als Unicode-Zeichen
 - **** geschickt.
 -*/
 -CSU20AC := chr(128)   ; €
 -UNSHU20AC := 1
 -; CSU201A := chr(130) ; ‚
 -; CSU0192 := chr(131) ; ƒ
 -; CSU201E := chr(132) ; „
 -; CSU2026 := chr(133) ; …
 -; CSU2020 := chr(134) ; †
 -; CSU2021 := chr(135) ; ‡
 -; CSU02C6 := chr(136) ; ˆ
 -; CSU2030 := chr(137) ; ‰
 -; CSU0160 := chr(138) ; Š
 -; CSU2039 := chr(139) ; ‹
 -; CSU0152 := chr(140) ; Œ
 -; CSU017D := chr(142) ; Ž
 -; CSU2018 := chr(145) ; ‘
 -; CSU2019 := chr(146) ; ’
 -; CSU201C := chr(147) ; “
 -; CSU201D := chr(148) ; ”
 -; CSU2022 := chr(149) ; •
 -; CSU2013 := chr(150) ; –
 -; CSU2014 := chr(151) ; —
 -; CSU02DC := chr(152) ; ˜
 -; CSU2122 := chr(153) ; ™
 -; CSU0161 := chr(154) ; š
 -; CSU203A := chr(155) ; ›
 -; CSU0153 := chr(156) ; œ
 -; CSU017E := chr(158) ; ž
 -; CSU0178 := chr(159) ; Ÿ
 -CSU00A7 := chr(167)   ; §
 -CSU00B0 := chr(176)   ; °
 -CSU00B2 := chr(178)   ; ²
 -CSU00B3 := chr(179)   ; ³
 -; CSU00B4 := chr(180)   ; ´
 -CSU00B5 := chr(181)   ; µ
 -CSU00C4 := chr(196)   ; Ä
 -CSU00D6 := chr(214)   ; Ö
 -CSU00DC := chr(220)   ; Ü
 -CSU00DF := chr(223)   ; ß
 -CSU00E4 := chr(228)   ; ä
 -CSU00F6 := chr(246)   ; ö
 -CSU00FC := chr(252)   ; ü
 -CSU00FF := chr(255)   ; ÿ
 -
 -CSSSh_L := "LShift"
 -CSSSh_R := "RShift"
 -CSSCaps := "CapsLock"
 -CSS_Del := "Delete"
 -CSS_Ins := "Insert"
 -CSS__Up := "Up"
 -CSSDown := "Down"
 -CSSRght := "Right"
 -CSSLeft := "Left"
 -CSSPgUp := "PgUp"
 -CSSPgDn := "PgDn"
 -CSSHome := "Home"
 -CSS_End := "End"
 -CSS_F10 := "F10"
 -CSS_F11 := "F11"
 -
 -CSSN__0 := "Numpad0"
 -CSSN__1 := "Numpad1"
 -CSSN__2 := "Numpad2"
 -CSSN__3 := "Numpad3"
 -
 -CSSN__4 := "Numpad4"
 -CSSN__5 := "Numpad5"
 -CSSN__6 := "Numpad6"
 -
 -CSSN__7 := "Numpad7"
 -CSSN__8 := "Numpad8"
 -CSSN__9 := "Numpad9"
 -
 -CSSNDiv := "NumpadDiv"
 -CSSNMul := "NumpadMult"
 -CSSNSub := "NumpadSub"
 -CSSNAdd := "NumpadAdd"
 -CSSNDot := "NumpadDot"
 -CSSNEnt := "NumpadEnter"
 -
 -CSSNDel := "NumpadDel"
 -CSSNIns := "NumpadIns"
 -CSSN_Up := "NumpadUp"
 -CSSN_Dn := "NumpadDown"
 -CSSN_Ri := "NumpadRight"
 -CSSN_Le := "NumpadLeft"
 -CSSNPUp := "NumpadPgUp"
 -CSSNPDn := "NumpadPgDn"
 -CSSNHom := "NumpadHome"
 -CSSNEnd := "NumpadEnd"
 -CSSNClr := "NumpadClear"
 diff --git a/windows/neo-vars/Source/varsfunctions.ahk b/windows/neo-vars/Source/varsfunctions.ahk deleted file mode 100644 index 4ea6229..0000000 --- a/windows/neo-vars/Source/varsfunctions.ahk +++ /dev/null @@ -1,563 +0,0 @@ -AllStar(This_HotKey) {
 -  global
 -  PhysKey := This_HotKey
 -  EbeneAktualisieren()
 -  if (SubStr(PhysKey,1,1) == "*")
 -    PhysKey := SubStr(PhysKey,2)
 -  if (SubStr(PhysKey,-2) == " up") {
 -    PhysKey := SubStr(PhysKey,1,StrLen(PhysKey)-3)
 -    IsDown := 0
 -  } else
 -    IsDown := 1
 -  ActKey := TransformKey(PhysKey)
 -  if ((striktesMod2Lock == 0) && (NOC%ActKey% == 1))
 -    Ebene := EbeneNC
 -  if (Ebene7 and (CP7%ActKey% != ""))
 -    Char := CP7%ActKey%
 -  else if (Ebene8 and (CP8%ActKey% != ""))
 -    Char := CP8%ActKey%
 -  else
 -    Char := CP%Ebene%%ActKey%
 -  if (IsPressHooked == 1) {
 -    if (IsDown == 1)
 -      PressHookProc(PressHookRoutine, PhysKey, ActKey, Char)
 -  } else if (IsDown == 1)
 -    CharStarDown(PhysKey, ActKey, Char)
 -  else
 -    CharStarUp(PhysKey)
 -}
 -
 -CharStarDown(PhysKey, ActKey, char) {
 -  global
 -  CompEntry := Comp
 -  if (PP%PhysKey% != "")
 -    Comp := PP%PhysKey%     ; resulting from key repeat
 -  else
 -    Comp := Comp . char  ; normal compositum
 -
 -  tosend := ""
 -  PP%PhysKey% := ""
 -
 -  if (CD%Comp% != "") {
 -    tosend := CD%Comp%
 -    PP%PhysKey% := Comp
 -    Comp := ""
 -  } else if (CM%Comp% != 1) {
 -    Comp := ""
 -    if (CompEntry == "") {
 -      tosend := char
 -      PP%PhysKey% := char
 -    }
 -  }
 -
 -  if (strlen(tosend) > 5) { ; multiple chars
 -    if (PR%PhysKey% != "")
 -      CharOutUp(PR%PhysKey%)
 -    PR%PhysKey% := ""
 -
 -    loop {
 -      if (tosend == "") 
 -        break                ; erledigt
 -      if (SubStr(tosend,1,1)=="P") {
 -        CharProc(SubStr(tosend,2,4))
 -      } else {
 -        CharOut(SubStr(tosend,1,5))
 -      }
 -      tosend := SubStr(tosend,6)
 -    }
 -  } else if (tosend != "")
 -    if (SubStr(tosend,1,1)=="P") {
 -      if (PR%PhysKey% != "")
 -        CharOutUp(PR%PhysKey%)
 -      PR%PhysKey% := ""
 -      CharProc(SubStr(tosend,2))
 -    } else {
 -      if ((PR%PhysKey% != "") and (PR%PhysKey% != tosend))
 -        CharOutUp(PR%PhysKey%)
 -      PR%PhysKey% := tosend
 -      CharOutDown(tosend)
 -    }
 -  else {
 -    if (PR%PhysKey% != "")
 -      CharOutUp(PR%PhysKey%)
 -    PR%PhysKey% := ""
 -  }
 -}
 -
 -CharStarUp(PhysKey) {
 -  global
 -  if (PR%PhysKey% != "") {
 -    tosend := PR%PhysKey%
 -    if (SubStr(tosend,1,1)=="P")
 -      CharProc(SubStr(tosend,2))
 -    else
 -      CharOutUp(tosend)
 -  }
 -  PR%PhysKey% := ""
 -  PP%PhysKey% := ""
 -}
 -
 -
 -CharOut(char) {
 -  global
 -  if (DNCS%char% != "") {
 -    seq := DNCS%char% . UPCS%char%
 -    if (isShiftPressed and UNSH%char%)
 -      seq := FixSeq(seq,isShiftLPressed,isShiftRPressed)
 -    send % "{blind}" . seq
 -  } else if (CS%char% != "") {
 -    seq := "{" . CS%char% . "}"
 -    if (isShiftPressed and UNSH%char%)
 -      seq := FixSeq(seq,isShiftLPressed,isShiftRPressed)
 -    send % "{blind}" . seq
 -  } else
 -    SendUnicodeChar("0x" . SubStr(char,2))
 -}
 -
 -CharOutDown(char) {
 -  global
 -  if (DNCS%char% != "") {
 -    seq := DNCS%char%
 -    if (isShiftPressed and UNSH%char%)
 -      seq := FixSeq(seq,isShiftLPressed,isShiftRPressed)
 -    send % "{blind}" . seq
 -  } else if (CS%char% != "") {
 -    seq := CS%char%
 -    seq := "{". seq . " down}"
 -    if (isShiftPressed and UNSH%char%)
 -      seq := FixSeq(seq,isShiftLPressed,isShiftRPressed)
 -    send % "{blind}" . seq
 -  } else
 -    SendUnicodeCharDown("0x" . SubStr(char,2))
 -}
 -
 -CharOutUp(char) {
 -  global
 -  if (DNCS%char% != "") {
 -    seq := UPCS%char%
 -    if (isShiftPressed and UNSH%char%)
 -      seq := FixSeq(seq,isShiftLPressed,isShiftRPressed)
 -    send % "{blind}" . seq
 -  } else if (CS%char% != "") {
 -    seq := CS%char%
 -    seq := "{". seq . " up}"
 -    if (isShiftPressed and UNSH%char%)
 -      seq := FixSeq(seq,isShiftLPressed,isShiftRPressed)
 -    send % "{blind}" . seq
 -  } else
 -    SendUnicodeCharUp("0x" . SubStr(char,2))
 -}
 -
 -FixSeq(seq,LP,RP) {
 -  ret := seq
 -  if (LP)
 -    ret := "{Shift Up}" . ret . "{Shift Down}"
 -  if (RP)
 -    ret := "{RShift Up}" . ret . "{RShift Down}"
 -  return ret
 -}
 -
 -CharProc(subroutine) {
 -  global
 -  if (subroutine == "_Rom") {
 -    ; starte groß geschriebene römische Zahlen
 -    IsPressHooked := 1
 -    PressHookRoutine := "Roman"
 -    RomanSum := 0
 -  } else if (subroutine == "_rom") {
 -    ; starte klein geschriebene römische Zahlen
 -    IsPressHooked := 1
 -    PressHookRoutine := "roman"
 -    RomanSum := 0
 -  } else if (subroutine == "_Uni") {
 -    ; starte Unicode-Hex-in-Zeichen-Umwandlung
 -    IsPressHooked := 1
 -    PressHookRoutine := "Uni"
 -    UniSum := ""
 -  } else if (subroutine == "DUni") {
 -    ; starte Unicode-Zeichen-in-Hex-Umwandlung
 -    IsPressHooked := 1
 -    PressHookRoutine := "DUni"
 -  }  else if (subroutine == "Rlod") {
 -    ; Neustart des AHK-Skripts
 -    reload
 -  } else if (subroutine == "LnSt") {
 -    ;Lang-s-Tastatur: Toggle
 -    LangSTastatur := !(LangSTastatur)
 -    if (LangSTastatur)
 -      CharProc("LnS1")
 -    else
 -      CharProc("LnS0")
 -  } else if (subroutine == "LnS1") {
 -    ; Lange-s-Tastatur aktivieren
 -    ED("VKBASC01A",1,"U0073","U1E9E","U00DF",""     ,"U03C2","U2218") ; ß
 -    ED("VK48SC023",1,"U017F","U0053","U003F","U00BF","U03C3","U03A3","U0073") ; s
 -    KeyboardLED(2,"on")
 -  } else if (subroutine == "LnS0") {
 -    ; Lange-s-Tastatur deaktivieren
 -    ED("VKBASC01A",1,"U00DF","U1E9E","U017F",""     ,"U03C2","U2218") ; ß
 -    ED("VK48SC023",1,"U0073","U0053","U003F","U00BF","U03C3","U03A3","U017F") ; s
 -    KeyboardLED(2,"off")
 -  } else if (subroutine == "_VMt") {
 -    ; VM-Tastaturbelegungsvariante togglen
 -    ; Belegungsvariante VM
 -    isVM := !(isVM)
 -    if (isVM) {
 -      CharProc("_VM1")
 -      MsgBox,Willkommen bei der NEO-VM-Belegungsvariante! Zum Deaktivieren, Mod4+F10 drücken
 -    } else {
 -      CharProc("_VM0")
 -      MsgBox,NEO-VM-Belegungsvariante deaktiviert
 -    }
 -  } else if (subroutine == "_VM1") {
 -    ; VM-Tastaturbelegungsvariante aktivieren
 -    ED("VK51SC010",1,"U0079","U0059","U2026","U22EE","U03C5","U2207") ; y
 -    ED("VK57SC011",1,"U006F","U004F","U005F","U0008","U03BF","U2208") ; o
 -    ED("VK45SC012",1,"U0061","U0041","U005B","S__Up","U03B1","U2200") ; a
 -    ED("VK52SC013",1,"U0070","U0050","U005D","S_Del","U03C0","U03A0") ; p
 -    ED("VK41SC01E",1,"U0069","U0049","U005C","SHome","U03B9","U222B") ; i
 -    ED("VK53SC01F",1,"U0075","U0055","U002F","SLeft","P_Uni","U222E") ; u
 -    ED("VK44SC020",1,"U0065","U0045","U007B","SDown","U03B5","U2203") ; e
 -    ED("VK46SC021",1,"U0063","U0043","U007D","SRght","U03C7","U2102") ; c
 -    ED("VK47SC022",1,"U006C","U004C","U002A","S_End","U03BB","U039B") ; l
 -    ED("VKDESC028",1,"U0078","U0058","U0040","U002E","U03BE","U039E") ; x
 -    ED("VK56SC02F",1,"U0076","U0056","U007E","U000D",""     ,"U2259") ; v
 -  } else if (subroutine == "_VM0") {
 -    ; VM-Tastaturbelegungsvariante deaktivieren
 -    ED("VK51SC010",1,"U0078","U0058","U2026","U22EE","U03BE","U039E") ; x
 -    ED("VK57SC011",1,"U0076","U0056","U005F","U0008",""     ,"U2259") ; v
 -    ED("VK45SC012",1,"U006C","U004C","U005B","S__Up","U03BB","U039B") ; l
 -    ED("VK52SC013",1,"U0063","U0043","U005D","S_Del","U03C7","U2102") ; c
 -    ED("VK41SC01E",1,"U0075","U0055","U005C","SHome","P_Uni","U222E") ; u
 -    ED("VK53SC01F",1,"U0069","U0049","U002F","SLeft","U03B9","U222B") ; i
 -    ED("VK44SC020",1,"U0061","U0041","U007B","SDown","U03B1","U2200") ; a
 -    ED("VK46SC021",1,"U0065","U0045","U007D","SRght","U03B5","U2203") ; e
 -    ED("VK47SC022",1,"U006F","U004F","U002A","S_End","U03BF","U2208") ; o
 -    ED("VKDESC028",1,"U0079","U0059","U0040","U002E","U03C5","U2207") ; y
 -    ED("VK56SC02F",1,"U0070","U0050","U007E","U000D","U03C0","U03A0") ; p
 -  } else if (subroutine == "_EHt") {
 -    ; Einhandmodus togglen
 -    einHandNeo := !(einHandNeo)
 -    if (einHandNeo) {
 -      CharProc("_EH1")
 -      MsgBox,Willkommen beim NEO-Einhand-Modus! Zum Deaktivieren, Mod3+F10 drücken
 -    } else {
 -      CharProc("_EH0")
 -      MsgBox,NEO-Einhand-Modus deaktiviert
 -    }
 -  } else if (subroutine == "_EH1") {
 -    ; Einhand-NEO aktivieren
 -    ; Reihe 1
 -    TKEH_VK37SC008 := "VK36SC007" ; 7 -> 6
 -    TKEH_VK38SC009 := "VK35SC006" ; 8 -> 5
 -    TKEH_VK39SC00A := "VK34SC005" ; 9 -> 4
 -    TKEH_VK30SC00B := "VK33SC004" ; 0 -> 3
 -    TKEH_VKDBSC00C := "VK32SC003" ; ß -> 2
 -    TKEH_VKDDSC00D := "VK31SC002" ; tot2 -> 1
 -    ; Reihe 2
 -    TKEH_VK5ASC015 := "VK54SC014" ; k -> w
 -    TKEH_VK55SC016 := "VK52SC013" ; h -> c
 -    TKEH_VK49SC017 := "VK45SC012" ; g -> l
 -    TKEH_VK4FSC018 := "VK57SC011" ; f -> v
 -    TKEH_VK50SC019 := "VK51SC010" ; q -> x
 -    TKEH_VKBASC01A := "VK09SC00F" ; ß -> tab
 -    TKEH_VKBBSC01B := "VKDCSC029" ; tot3 -> tot1
 -    ; Reihe 3
 -    TKEH_VK48SC023 := "VK47SC022" ; s -> o
 -    TKEH_VK4ASC024 := "VK46SC021" ; n -> e
 -    TKEH_VK4BSC025 := "VK44SC020" ; r -> a
 -    TKEH_VK4CSC026 := "VK53SC01F" ; t -> i
 -    TKEH_VKC0SC027 := "VK41SC01E" ; d -> u
 -    ; Reihe 4
 -    TKEH_VK4ESC031 := "VK42SC030" ; b -> z
 -    TKEH_VK4DSC032 := "VK56SC02F" ; m -> p
 -    TKEH_VKBCSC033 := "VK43SC02E" ; , -> ä
 -    TKEH_VKBESC034 := "VK58SC02D" ; . -> ö
 -    TKEH_VKBDSC035 := "VK59SC02C" ; j -> ü
 -    ; Modify Space
 -    ED1("space","PEHSd")
 -    ED("EHSpace",0,"U0020","U0020","U0020","SN__0","U00A0","U202F")
 -  } else if (subroutine == "_EH0") {
 -    ; Einhand-NEO deaktivieren
 -    ; Reihe 1
 -    TKEH_VK37SC008 := "" ; 7
 -    TKEH_VK38SC009 := "" ; 8
 -    TKEH_VK39SC00A := "" ; 9
 -    TKEH_VK30SC00B := "" ; 0
 -    TKEH_VKDBSC00C := "" ; ß
 -    TKEH_VKDDSC00D := "" ; tot2
 -    ; Reihe 2
 -    TKEH_VK5ASC015 := "" ; k
 -    TKEH_VK55SC016 := "" ; h
 -    TKEH_VK49SC017 := "" ; g
 -    TKEH_VK4FSC018 := "" ; f
 -    TKEH_VK50SC019 := "" ; q
 -    TKEH_VKBASC01A := "" ; ß
 -    TKEH_VKBBSC01B := "" ; tot3
 -    ; Reihe 3
 -    TKEH_VK48SC023 := "" ; s
 -    TKEH_VK4ASC024 := "" ; n
 -    TKEH_VK4BSC025 := "" ; r
 -    TKEH_VK4CSC026 := "" ; t
 -    TKEH_VKC0SC027 := "" ; d
 -    ; Reihe 4
 -    TKEH_VK4ESC031 := "" ; b
 -    TKEH_VK4DSC032 := "" ; m
 -    TKEH_VKBCSC033 := "" ; ,
 -    TKEH_VKBESC034 := "" ; .
 -    TKEH_VKBDSC035 := "" ; j
 -    ED("space",0,"U0020","U0020","U0020","SN__0","U00A0","U202F")
 -  } else if (subroutine == "EHSd") {
 -    ; Space im Einhandmodus gedrückt
 -    EHSpacePressed := 1
 -    PRspace := "PEHSu"
 -  } else if (subroutine == "EHSu") {
 -    ; Space im Einhandmodus losgelassen
 -    if (!EHKeyPressed) {
 -      AllStar("*EHSpace")
 -      AllStar("*EHSpace up")
 -    }
 -    EHKeyPressed := 0
 -    EHSpacePressed := 0
 -  } else if (subroutine == "_LMt") {
 -    ; Lernmodus togglen
 -    lernModus := !(lernModus)
 -    if (lernModus) {
 -      CharProc("_LM1")
 -      MsgBox,Willkommen im NEO-Lernmodus! Zum Deaktivieren, Mod3+F11 drücken
 -    } else {
 -      CharProc("_LM0")
 -      MsgBox,NEO-Lernmodus deaktiviert
 -    }
 -  } else if (subroutine == "_LM1") {
 -    ; Lernmodus aktivieren
 -    if (!lernModus_std_Return)
 -      ED1("enter","")
 -    if (!lernModus_std_Backspace)
 -      ED1("backspace","")
 -    if (!lernModus_std_PgUp)
 -      ED1("pgup","")
 -    if (!lernModus_std_PgDn)
 -      ED1("pgdn","")
 -    if (!lernModus_std_Einf)
 -      ED1("ins","")
 -    if (!lernModus_std_Entf)
 -      ED1("del","")
 -    if (!lernModus_std_Pos0)
 -      ED1("home","")
 -    if (!lernModus_std_Ende)
 -      ED1("end","")
 -    if (!lernModus_std_Hoch)
 -      ED1("up","")
 -    if (!lernModus_std_Runter)
 -      ED1("down","")
 -    if (!lernModus_std_Links)
 -      ED1("left","")
 -    if (!lernModus_std_Rechts)
 -      ED1("right","")
 -    if (!lernModus_neo_Backspace)
 -      CP4VK57SC011 := "" ; Ebene 4 unter v (QWERTZ: w)
 -    if (!lernModus_neo_Entf)
 -      CP4VK52SC013 := "" ; Ebene 4 unter c (QWERTZ: r)
 -  } else if (subroutine == "_LM0") {
 -    ; Lernmodus deaktivieren
 -    ED1("enter"    ,"U000D")
 -    ED1("backspace","U0008")
 -    ED1("pgup"     ,"SPgUp")
 -    ED1("pgdn"     ,"SPgDn")
 -    ED1("ins"      ,"S_Ins")
 -    ED1("del"      ,"S_Del")
 -    ED1("home"     ,"SHome")
 -    ED1("end"      ,"S_End")
 -    ED1("up"       ,"S__Up")
 -    ED1("down"     ,"SDown")
 -    ED1("left"     ,"SLeft")
 -    ED1("right"    ,"SRght")
 -    CP4VK57SC011 := "U0008"
 -    CP4VK52SC013 := "S_Del"
 -  }
 -}
 -
 -PressHookProc(HookRoutine, PhysKey, ActKey, Char) {
 -  global
 -  if ((HookRoutine == "Roman") or (HookRoutine == "roman")) {
 -    if ((Char == "U0030") or (Char == "SN__0"))
 -      RomanSum := 10*RomanSum
 -    else if ((Char == "U0031") or (Char == "SN__1"))
 -      RomanSum := 10*RomanSum + 1
 -    else if ((Char == "U0032") or (Char == "SN__2"))
 -      RomanSum := 10*RomanSum + 2
 -    else if ((Char == "U0033") or (Char == "SN__3"))
 -      RomanSum := 10*RomanSum + 3
 -    else if ((Char == "U0034") or (Char == "SN__4"))
 -      RomanSum := 10*RomanSum + 4
 -    else if ((Char == "U0035") or (Char == "SN__5"))
 -      RomanSum := 10*RomanSum + 5
 -    else if ((Char == "U0036") or (Char == "SN__6"))
 -      RomanSum := 10*RomanSum + 6
 -    else if ((Char == "U0037") or (Char == "SN__7"))
 -      RomanSum := 10*RomanSum + 7
 -    else if ((Char == "U0038") or (Char == "SN__8"))
 -      RomanSum := 10*RomanSum + 8
 -    else if ((Char == "U0039") or (Char == "SN__9"))
 -      RomanSum := 10*RomanSum + 9
 -    else if ((Char == "U000D") or (Char == "U0020")) {
 -      RomanSum := mod(RomanSum,400000)
 -      RomanStr := ""
 -      RomanPos := 0
 -      if (HookRoutine == "Roman")
 -        loop {
 -          RomanDigit := mod(RomanSum,10)
 -          RomanSum := RomanSum//10
 -          RomanStr := GenRomanDigit(RomanPos,RomanDigit,1,"U2160","U2169","U216D","U216F","U2182","U2188") . RomanStr
 -          RomanStr := GenRomanDigit(RomanPos,RomanDigit,2,"U2160U2160","U2169U2169","U216DU216D","U216FU216F","U2182U2182","U2188U2188") . RomanStr
 -          RomanStr := GenRomanDigit(RomanPos,RomanDigit,3,"U2160U2160U2160","U2169U2169U2169","U216DU216DU216D","U216FU216FU216F","U2182U2182U2182","U2188U2188U2188") . RomanStr
 -          RomanStr := GenRomanDigit(RomanPos,RomanDigit,4,"U2160U2164","U2169U216C","U216DU216E","U2180U2181","U2182U2187","") . RomanStr
 -          RomanStr := GenRomanDigit(RomanPos,RomanDigit,5,"U2164","U216C","U216E","U2181","U2187","") . RomanStr
 -          RomanStr := GenRomanDigit(RomanPos,RomanDigit,6,"U2164U2160","U216CU2169","U216EU216D","U2181U2180","U2187U2182","") . RomanStr
 -          RomanStr := GenRomanDigit(RomanPos,RomanDigit,7,"U2164U2160U2160","U216CU2169U2169","U216EU216DU216D","U2181U2180U2180","U2187U2182U2182","") . RomanStr
 -          RomanStr := GenRomanDigit(RomanPos,RomanDigit,8,"U2164U2160U2160U2160","U216CU2169U2169U2169","U216EU216DU216DU216D","U2181U2180U2180U2180","U2187U2182U2182U2182","") . RomanStr
 -          RomanStr := GenRomanDigit(RomanPos,RomanDigit,9,"U2160U2169","U2169U216D","U216DU216F","U2180U2182","U2182U2188","") . RomanStr
 -          if (RomanSum == 0)
 -            break
 -          RomanPos := RomanPos + 1
 -        }
 -      else
 -        loop {
 -          RomanDigit := mod(RomanSum,10)
 -          RomanSum := RomanSum//10
 -          RomanStr := GenRomanDigit(RomanPos,RomanDigit,1,"U2170","U2179","U217D","U217F","U2182","U2188") . RomanStr
 -          RomanStr := GenRomanDigit(RomanPos,RomanDigit,2,"U2170U2170","U2179U2179","U217DU217D","U217FU217F","U2182U2182","U2188U2188") . RomanStr
 -          RomanStr := GenRomanDigit(RomanPos,RomanDigit,3,"U2170U2170U2170","U2179U2179U2179","U217DU217DU217D","U217FU217FU217F","U2182U2182U2182","U2188U2188U2188") . RomanStr
 -          RomanStr := GenRomanDigit(RomanPos,RomanDigit,4,"U2170U2174","U2179U217C","U217DU217E","U2180U2181","U2182U2187","") . RomanStr
 -          RomanStr := GenRomanDigit(RomanPos,RomanDigit,5,"U2174","U217C","U217E","U2181","U2187","") . RomanStr
 -          RomanStr := GenRomanDigit(RomanPos,RomanDigit,6,"U2174U2170","U217CU2179","U217EU217D","U2181U2180","U2187U2182","") . RomanStr
 -          RomanStr := GenRomanDigit(RomanPos,RomanDigit,7,"U2174U2170U2170","U217CU2179U2179","U217EU217DU217D","U2181U2180U2180","U2187U2182U2182","") . RomanStr
 -          RomanStr := GenRomanDigit(RomanPos,RomanDigit,8,"U2174U2170U2170U2170","U217CU2179U2179U2179","U217EU217DU217DU217D","U2181U2180U2180U2180","U2187U2182U2182U2182","") . RomanStr
 -          RomanStr := GenRomanDigit(RomanPos,RomanDigit,9,"U2178","U2179U217D","U217DU217F","U2180U2182","U2182U2188","") . RomanStr
 -          if (RomanSum == 0)
 -            break
 -          RomanPos := RomanPos + 1
 -        }
 -      loop {
 -        if (RomanStr == "") 
 -          break ; erledigt
 -        CharOut(SubStr(RomanStr,1,5))
 -        RomanStr := SubStr(RomanStr,6)
 -      }
 -      IsPressHooked := 0
 -    } else
 -      IsPressHooked := 0
 -  } else if (HookRoutine == "Uni") {
 -    if ((Char == "U0030") or (Char == "SN__0"))
 -      UniSum := UniSum . "0"
 -    else if ((Char == "U0031") or (Char == "SN__1"))
 -      UniSum := UniSum . "1"
 -    else if ((Char == "U0032") or (Char == "SN__2"))
 -      UniSum := UniSum . "2"
 -    else if ((Char == "U0033") or (Char == "SN__3"))
 -      UniSum := UniSum . "3"
 -    else if ((Char == "U0034") or (Char == "SN__4"))
 -      UniSum := UniSum . "4"
 -    else if ((Char == "U0035") or (Char == "SN__5"))
 -      UniSum := UniSum . "5"
 -    else if ((Char == "U0036") or (Char == "SN__6"))
 -      UniSum := UniSum . "6"
 -    else if ((Char == "U0037") or (Char == "SN__7"))
 -      UniSum := UniSum . "7"
 -    else if ((Char == "U0038") or (Char == "SN__8"))
 -      UniSum := UniSum . "8"
 -    else if ((Char == "U0039") or (Char == "SN__9"))
 -      UniSum := UniSum . "9"
 -    else if ((Char == "U0041") or (Char == "U0061"))
 -      UniSum := UniSum . "A"
 -    else if ((Char == "U0042") or (Char == "U0062"))
 -      UniSum := UniSum . "B"
 -    else if ((Char == "U0043") or (Char == "U0063"))
 -      UniSum := UniSum . "C"
 -    else if ((Char == "U0044") or (Char == "U0064"))
 -      UniSum := UniSum . "D"
 -    else if ((Char == "U0045") or (Char == "U0065"))
 -      UniSum := UniSum . "E"
 -    else if ((Char == "U0046") or (Char == "U0066"))
 -      UniSum := UniSum . "F"
 -    else if ((Char == "U000D") or (Char == "U0020")) {
 -      UniSum := "U" . SubStr("0000" . UniSum, -3)
 -      PP%PhysKey% := UniSum
 -      PR%PhysKey% := UniSum
 -      CharOutDown(UniSum)
 -      IsPressHooked := 0
 -    } else
 -      IsPressHooked := 0
 -  } else if (HookRoutine == "DUni") {
 -    OutStr := EncodeUni(Char)
 -    loop {
 -      if (OutStr == "") 
 -        break ; erledigt
 -      CharOut(SubStr(OutStr,1,5))
 -      OutStr := SubStr(OutStr,6)
 -    }
 -    IsPressHooked := 0
 -  } else
 -    IsPressHooked := 0
 -}
 -
 -GenRomanDigit(Pos, DigitIs, DigitTest, str0, str1, str2, str3, str4, str5) {
 -  res := ""
 -  if (DigitIs == DigitTest)
 -    res := str%Pos%
 -  return res
 -}
 -
 -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 . "U00" . SubStr(asc(char),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
 -}
 -
 -TransformKey(PhysKey) {
 -  global
 -  if (einHandNeo and EHSpacePressed and (TKEH_%PhysKey% != "")) {
 -    ActKey := TKEH_%PhysKey%
 -    EHKeyPressed := 1
 -  } else if (TK_%PhysKey% != "")
 -    ActKey := TK_%PhysKey%
 -  else
 -    ActKey := PhysKey
 -  return ActKey
 -}
  | 
