From 586a21f43867ebbb1123e3f6784087436c6d8d46 Mon Sep 17 00:00:00 2001 From: mösi Date: Mon, 3 Nov 2008 16:00:11 +0000 Subject: Unterscheidung in src und out git-svn-id: https://svn.neo-layout.org@1100 b9310e46-f624-0410-8ea1-cfbb3a30dc96 --- windows/neo-vars/Make-Build.bat | 52 - windows/neo-vars/Source/_subwcrev1.tmpl.ahk | 1 - windows/neo-vars/Source/_subwcrev1.tmpl.bat | 1 - windows/neo-vars/Source/_subwcrev2.tmpl.ahk | 1 - windows/neo-vars/Source/keydefinitions.ahk | 122 -- windows/neo-vars/Source/keyhooks.ahk | 218 --- windows/neo-vars/Source/makecompose.ahk | 1890 ----------------------- windows/neo-vars/Source/neo20-all.ahk | 28 - windows/neo-vars/Source/neovarscomp.ahk | 49 - windows/neo-vars/Source/recycle.ahk | 808 ---------- windows/neo-vars/Source/shortcuts.ahk | 136 -- windows/neo-vars/Source/varsfunctions.ahk | 563 ------- windows/neo-vars/ebene1.png | Bin 25831 -> 0 bytes windows/neo-vars/ebene2.png | Bin 25656 -> 0 bytes windows/neo-vars/ebene3.png | Bin 25528 -> 0 bytes windows/neo-vars/ebene4.png | Bin 25967 -> 0 bytes windows/neo-vars/ebene5.png | Bin 25888 -> 0 bytes windows/neo-vars/ebene6.png | Bin 25616 -> 0 bytes windows/neo-vars/neo_disabled.ico | Bin 2238 -> 0 bytes windows/neo-vars/neo_enabled.ico | Bin 2238 -> 0 bytes windows/neo-vars/src/Make-Build.bat | 59 + windows/neo-vars/src/Source/_subwcrev1.tmpl.ahk | 1 + windows/neo-vars/src/Source/_subwcrev1.tmpl.bat | 1 + windows/neo-vars/src/Source/_subwcrev2.tmpl.ahk | 1 + windows/neo-vars/src/Source/keydefinitions.ahk | 122 ++ windows/neo-vars/src/Source/keyhooks.ahk | 218 +++ windows/neo-vars/src/Source/makecompose.ahk | 1890 +++++++++++++++++++++++ windows/neo-vars/src/Source/neo20-all.ahk | 28 + windows/neo-vars/src/Source/neovarscomp.ahk | 49 + windows/neo-vars/src/Source/recycle.ahk | 808 ++++++++++ windows/neo-vars/src/Source/shortcuts.ahk | 136 ++ windows/neo-vars/src/Source/varsfunctions.ahk | 563 +++++++ windows/neo-vars/src/ebene1.png | Bin 0 -> 25831 bytes windows/neo-vars/src/ebene2.png | Bin 0 -> 25656 bytes windows/neo-vars/src/ebene3.png | Bin 0 -> 25528 bytes windows/neo-vars/src/ebene4.png | Bin 0 -> 25967 bytes windows/neo-vars/src/ebene5.png | Bin 0 -> 25888 bytes windows/neo-vars/src/ebene6.png | Bin 0 -> 25616 bytes windows/neo-vars/src/neo_disabled.ico | Bin 0 -> 2238 bytes windows/neo-vars/src/neo_enabled.ico | Bin 0 -> 2238 bytes 40 files changed, 3876 insertions(+), 3869 deletions(-) delete mode 100644 windows/neo-vars/Make-Build.bat delete mode 100644 windows/neo-vars/Source/_subwcrev1.tmpl.ahk delete mode 100644 windows/neo-vars/Source/_subwcrev1.tmpl.bat delete mode 100644 windows/neo-vars/Source/_subwcrev2.tmpl.ahk delete mode 100644 windows/neo-vars/Source/keydefinitions.ahk delete mode 100644 windows/neo-vars/Source/keyhooks.ahk delete mode 100644 windows/neo-vars/Source/makecompose.ahk delete mode 100644 windows/neo-vars/Source/neo20-all.ahk delete mode 100644 windows/neo-vars/Source/neovarscomp.ahk delete mode 100644 windows/neo-vars/Source/recycle.ahk delete mode 100644 windows/neo-vars/Source/shortcuts.ahk delete mode 100644 windows/neo-vars/Source/varsfunctions.ahk delete mode 100644 windows/neo-vars/ebene1.png delete mode 100644 windows/neo-vars/ebene2.png delete mode 100644 windows/neo-vars/ebene3.png delete mode 100644 windows/neo-vars/ebene4.png delete mode 100644 windows/neo-vars/ebene5.png delete mode 100644 windows/neo-vars/ebene6.png delete mode 100644 windows/neo-vars/neo_disabled.ico delete mode 100644 windows/neo-vars/neo_enabled.ico create mode 100644 windows/neo-vars/src/Make-Build.bat create mode 100644 windows/neo-vars/src/Source/_subwcrev1.tmpl.ahk create mode 100644 windows/neo-vars/src/Source/_subwcrev1.tmpl.bat create mode 100644 windows/neo-vars/src/Source/_subwcrev2.tmpl.ahk create mode 100644 windows/neo-vars/src/Source/keydefinitions.ahk create mode 100644 windows/neo-vars/src/Source/keyhooks.ahk create mode 100644 windows/neo-vars/src/Source/makecompose.ahk create mode 100644 windows/neo-vars/src/Source/neo20-all.ahk create mode 100644 windows/neo-vars/src/Source/neovarscomp.ahk create mode 100644 windows/neo-vars/src/Source/recycle.ahk create mode 100644 windows/neo-vars/src/Source/shortcuts.ahk create mode 100644 windows/neo-vars/src/Source/varsfunctions.ahk create mode 100644 windows/neo-vars/src/ebene1.png create mode 100644 windows/neo-vars/src/ebene2.png create mode 100644 windows/neo-vars/src/ebene3.png create mode 100644 windows/neo-vars/src/ebene4.png create mode 100644 windows/neo-vars/src/ebene5.png create mode 100644 windows/neo-vars/src/ebene6.png create mode 100644 windows/neo-vars/src/neo_disabled.ico create mode 100644 windows/neo-vars/src/neo_enabled.ico diff --git a/windows/neo-vars/Make-Build.bat b/windows/neo-vars/Make-Build.bat deleted file mode 100644 index 3c7fc8c..0000000 --- a/windows/neo-vars/Make-Build.bat +++ /dev/null @@ -1,52 +0,0 @@ -@echo off - -echo Setting local path variables -:: TortoiseSVN and its clever tool SubWCRev -set Tsvnpath=C:\Programme\TortoiseSVN\bin -set SubWCRev=%Tsvnpath%\SubWCRev.exe - -set ahkpath=C:\Programme\AutoHotkey -set Ahk2Exe=%ahkpath%\Compiler\Ahk2Exe.exe - -REM The path to the authohotkey directory in the local svn copy, MUST be "." -set srcdir=. -set Ssrcdir=%srcdir%\Source -set ahkrevtemplate1=%Ssrcdir%\_subwcrev1.tmpl.ahk -set ahkrevoutput1=%Ssrcdir%\_subwcrev1.ahk -set batrevtemplate1=%Ssrcdir%\_subwcrev1.tmpl.bat -set batrevoutput1=%Ssrcdir%\_subwcrev1.bat -set ahkrevtemplate2=%Ssrcdir%\_subwcrev2.tmpl.ahk -set ahkrevoutput2=%Ssrcdir%\_subwcrev2.ahk - -REM The path to the directory used for generating a consistent SVN version (revision number) -set svnversiondir1=. -set svnversiondir2=..\..\Compose - -:next1 -echo Generating Version File -"%SubWCRev%" "%svnversiondir1%" "%ahkrevtemplate1%" "%ahkrevoutput1%" -"%SubWCRev%" "%svnversiondir1%" "%batrevtemplate1%" "%batrevoutput1%" -"%SubWCRev%" "%svnversiondir2%" "%ahkrevtemplate2%" "%ahkrevoutput2%" -call "%batrevoutput1%" - -set fn=%srcdir%\neo20-r%Revision% - -echo Compiling Compose sequences -%Ssrcdir%\makecompose.ahk - -rem echo Killing the old (AHK)Driver -rem tskill %fn% - -echo removing old version(s) of NEO AHK Exe file -del %srcdir%\neo20-r*.exe %srcdir%\neo20-r*.ahk 2> nul - -echo creating all-in-one script -echo ; Gesamtdatei > %fn%.ahk - -for %%i in (_subwcrev1 _subwcrev2 en_us neocomp neovarscomp keydefinitions shortcuts recycle keyhooks varsfunctions) do (type "%Ssrcdir%\%%i.ahk" >> "%fn%.ahk") - -echo Compiling the new Driver using Autohotkey -"%Ahk2Exe%" /in "%fn%.ahk" /out "%fn%.exe" /icon "%srcdir%\neo_enabled.ico" - -echo Driver Update complete! You can now close this log-window. -pause \ No newline at end of file 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 -} diff --git a/windows/neo-vars/ebene1.png b/windows/neo-vars/ebene1.png deleted file mode 100644 index 6929759..0000000 Binary files a/windows/neo-vars/ebene1.png and /dev/null differ diff --git a/windows/neo-vars/ebene2.png b/windows/neo-vars/ebene2.png deleted file mode 100644 index 433f89a..0000000 Binary files a/windows/neo-vars/ebene2.png and /dev/null differ diff --git a/windows/neo-vars/ebene3.png b/windows/neo-vars/ebene3.png deleted file mode 100644 index 5ad6231..0000000 Binary files a/windows/neo-vars/ebene3.png and /dev/null differ diff --git a/windows/neo-vars/ebene4.png b/windows/neo-vars/ebene4.png deleted file mode 100644 index c9a1f32..0000000 Binary files a/windows/neo-vars/ebene4.png and /dev/null differ diff --git a/windows/neo-vars/ebene5.png b/windows/neo-vars/ebene5.png deleted file mode 100644 index 8cfce0d..0000000 Binary files a/windows/neo-vars/ebene5.png and /dev/null differ diff --git a/windows/neo-vars/ebene6.png b/windows/neo-vars/ebene6.png deleted file mode 100644 index 2e508cf..0000000 Binary files a/windows/neo-vars/ebene6.png and /dev/null differ diff --git a/windows/neo-vars/neo_disabled.ico b/windows/neo-vars/neo_disabled.ico deleted file mode 100644 index 1e2c2af..0000000 Binary files a/windows/neo-vars/neo_disabled.ico and /dev/null differ diff --git a/windows/neo-vars/neo_enabled.ico b/windows/neo-vars/neo_enabled.ico deleted file mode 100644 index bf8f8be..0000000 Binary files a/windows/neo-vars/neo_enabled.ico and /dev/null differ diff --git a/windows/neo-vars/src/Make-Build.bat b/windows/neo-vars/src/Make-Build.bat new file mode 100644 index 0000000..8cf0c8f --- /dev/null +++ b/windows/neo-vars/src/Make-Build.bat @@ -0,0 +1,59 @@ +@echo off + +echo Setting local path variables +:: TortoiseSVN and its clever tool SubWCRev +set Tsvnpath=C:\Programme\TortoiseSVN\bin +set SubWCRev=%Tsvnpath%\SubWCRev.exe + +set ahkpath=C:\Programme\AutoHotkey +set Ahk2Exe=%ahkpath%\Compiler\Ahk2Exe.exe + +REM The path to the authohotkey directory in the local svn copy, MUST be "." +set srcdir=. +set outdir=..\out +set Ssrcdir=%srcdir%\Source +set ahkrevtemplate1=%Ssrcdir%\_subwcrev1.tmpl.ahk +set ahkrevoutput1=%Ssrcdir%\_subwcrev1.ahk +set batrevtemplate1=%Ssrcdir%\_subwcrev1.tmpl.bat +set batrevoutput1=%Ssrcdir%\_subwcrev1.bat +set ahkrevtemplate2=%Ssrcdir%\_subwcrev2.tmpl.ahk +set ahkrevoutput2=%Ssrcdir%\_subwcrev2.ahk + +REM The path to the directory used for generating a consistent SVN version (revision number) +set svnversiondir1=. +set svnversiondir2=..\..\..\Compose + +:next1 +echo Generating Version File +"%SubWCRev%" "%svnversiondir1%" "%ahkrevtemplate1%" "%ahkrevoutput1%" +"%SubWCRev%" "%svnversiondir1%" "%batrevtemplate1%" "%batrevoutput1%" +"%SubWCRev%" "%svnversiondir2%" "%ahkrevtemplate2%" "%ahkrevoutput2%" +call "%batrevoutput1%" + +set fnahk=%srcdir%\neo20-r%Revision%.ahk +"%SubWCRev%" "%svnversiondir1%" -nm +if errorlevel 1 ( + set fnexe=%outdir%\neo20-r%Revision%.exe +) else ( + set fnexe=%outdir%\neo20.exe +) + +echo Compiling Compose sequences +%Ssrcdir%\makecompose.ahk + +rem echo Killing the old (AHK)Driver +rem tskill %fn% + +echo removing old version(s) of NEO AHK Exe file +del %srcdir%\neo20-r*.exe %srcdir%\neo20-r*.ahk 2> nul + +echo creating all-in-one script +echo ; Gesamtdatei > %fn%.ahk + +for %%i in (_subwcrev1 _subwcrev2 en_us neocomp neovarscomp keydefinitions shortcuts recycle keyhooks varsfunctions) do (type "%Ssrcdir%\%%i.ahk" >> "%fn%.ahk") + +echo Compiling the new Driver using Autohotkey +"%Ahk2Exe%" /in "%fnahk%" /out "%fnexe%" /icon "%srcdir%\neo_enabled.ico" + +echo Driver Update complete! You can now close this log-window. +pause \ No newline at end of file diff --git a/windows/neo-vars/src/Source/_subwcrev1.tmpl.ahk b/windows/neo-vars/src/Source/_subwcrev1.tmpl.ahk new file mode 100644 index 0000000..888b651 --- /dev/null +++ b/windows/neo-vars/src/Source/_subwcrev1.tmpl.ahk @@ -0,0 +1 @@ +Revision:="$WCREV$$WCMODS?M:$$WCMIXED?X:$" diff --git a/windows/neo-vars/src/Source/_subwcrev1.tmpl.bat b/windows/neo-vars/src/Source/_subwcrev1.tmpl.bat new file mode 100644 index 0000000..b958643 --- /dev/null +++ b/windows/neo-vars/src/Source/_subwcrev1.tmpl.bat @@ -0,0 +1 @@ +set Revision=$WCREV$$WCMODS?M:$$WCMIXED?X:$ diff --git a/windows/neo-vars/src/Source/_subwcrev2.tmpl.ahk b/windows/neo-vars/src/Source/_subwcrev2.tmpl.ahk new file mode 100644 index 0000000..89b9549 --- /dev/null +++ b/windows/neo-vars/src/Source/_subwcrev2.tmpl.ahk @@ -0,0 +1 @@ +CompRevision:="$WCREV$$WCMODS?M:$$WCMIXED?X:$" diff --git a/windows/neo-vars/src/Source/keydefinitions.ahk b/windows/neo-vars/src/Source/keydefinitions.ahk new file mode 100644 index 0000000..cfc8821 --- /dev/null +++ b/windows/neo-vars/src/Source/keydefinitions.ahk @@ -0,0 +1,122 @@ +; 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/src/Source/keyhooks.ahk b/windows/neo-vars/src/Source/keyhooks.ahk new file mode 100644 index 0000000..ff818f6 --- /dev/null +++ b/windows/neo-vars/src/Source/keyhooks.ahk @@ -0,0 +1,218 @@ +;;;;;; 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/src/Source/makecompose.ahk b/windows/neo-vars/src/Source/makecompose.ahk new file mode 100644 index 0000000..c7b7242 --- /dev/null +++ b/windows/neo-vars/src/Source/makecompose.ahk @@ -0,0 +1,1890 @@ +; -*- 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/src/Source/neo20-all.ahk b/windows/neo-vars/src/Source/neo20-all.ahk new file mode 100644 index 0000000..38eb336 --- /dev/null +++ b/windows/neo-vars/src/Source/neo20-all.ahk @@ -0,0 +1,28 @@ +; 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/src/Source/neovarscomp.ahk b/windows/neo-vars/src/Source/neovarscomp.ahk new file mode 100644 index 0000000..9ae608c --- /dev/null +++ b/windows/neo-vars/src/Source/neovarscomp.ahk @@ -0,0 +1,49 @@ +/* +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/src/Source/recycle.ahk b/windows/neo-vars/src/Source/recycle.ahk new file mode 100644 index 0000000..d0fd704 --- /dev/null +++ b/windows/neo-vars/src/Source/recycle.ahk @@ -0,0 +1,808 @@ +/****************** +* 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/src/Source/shortcuts.ahk b/windows/neo-vars/src/Source/shortcuts.ahk new file mode 100644 index 0000000..e0d2cc5 --- /dev/null +++ b/windows/neo-vars/src/Source/shortcuts.ahk @@ -0,0 +1,136 @@ +/* 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/src/Source/varsfunctions.ahk b/windows/neo-vars/src/Source/varsfunctions.ahk new file mode 100644 index 0000000..4ea6229 --- /dev/null +++ b/windows/neo-vars/src/Source/varsfunctions.ahk @@ -0,0 +1,563 @@ +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 +} diff --git a/windows/neo-vars/src/ebene1.png b/windows/neo-vars/src/ebene1.png new file mode 100644 index 0000000..6929759 Binary files /dev/null and b/windows/neo-vars/src/ebene1.png differ diff --git a/windows/neo-vars/src/ebene2.png b/windows/neo-vars/src/ebene2.png new file mode 100644 index 0000000..433f89a Binary files /dev/null and b/windows/neo-vars/src/ebene2.png differ diff --git a/windows/neo-vars/src/ebene3.png b/windows/neo-vars/src/ebene3.png new file mode 100644 index 0000000..5ad6231 Binary files /dev/null and b/windows/neo-vars/src/ebene3.png differ diff --git a/windows/neo-vars/src/ebene4.png b/windows/neo-vars/src/ebene4.png new file mode 100644 index 0000000..c9a1f32 Binary files /dev/null and b/windows/neo-vars/src/ebene4.png differ diff --git a/windows/neo-vars/src/ebene5.png b/windows/neo-vars/src/ebene5.png new file mode 100644 index 0000000..8cfce0d Binary files /dev/null and b/windows/neo-vars/src/ebene5.png differ diff --git a/windows/neo-vars/src/ebene6.png b/windows/neo-vars/src/ebene6.png new file mode 100644 index 0000000..2e508cf Binary files /dev/null and b/windows/neo-vars/src/ebene6.png differ diff --git a/windows/neo-vars/src/neo_disabled.ico b/windows/neo-vars/src/neo_disabled.ico new file mode 100644 index 0000000..1e2c2af Binary files /dev/null and b/windows/neo-vars/src/neo_disabled.ico differ diff --git a/windows/neo-vars/src/neo_enabled.ico b/windows/neo-vars/src/neo_enabled.ico new file mode 100644 index 0000000..bf8f8be Binary files /dev/null and b/windows/neo-vars/src/neo_enabled.ico differ -- cgit v1.2.3