From bbffbdc10fd32f314a48a070f4725e78a3c60659 Mon Sep 17 00:00:00 2001 From: martin_r Date: Thu, 21 Aug 2008 21:35:48 +0000 Subject: NumLock-Bug behoben. git-svn-id: https://svn.neo-layout.org@789 b9310e46-f624-0410-8ea1-cfbb3a30dc96 --- windows/autohotkey/Changelog-and-Todo.txt | 2 +- windows/autohotkey/Source/All.ahk | 3 - windows/autohotkey/Source/Global-Part.ahk | 432 +++-- windows/autohotkey/Source/Keys-Neo.ahk | 1162 +++++------- windows/autohotkey/Source/Methods-Layers.ahk | 14 +- windows/autohotkey/Source/Methods-Lights.ahk | 80 +- windows/autohotkey/Source/Methods-Other.ahk | 255 +-- .../autohotkey/Source/Methods-ScreenKeyboard.ahk | 43 +- windows/autohotkey/Source/Methods-Unicode.ahk | 75 +- windows/autohotkey/neo20.ahk | 2002 +++++++++----------- windows/autohotkey/neo20.exe | Bin 424459 -> 424429 bytes 11 files changed, 1735 insertions(+), 2333 deletions(-) (limited to 'windows') diff --git a/windows/autohotkey/Changelog-and-Todo.txt b/windows/autohotkey/Changelog-and-Todo.txt index 307510e..9cb8301 100644 --- a/windows/autohotkey/Changelog-and-Todo.txt +++ b/windows/autohotkey/Changelog-and-Todo.txt @@ -116,7 +116,7 @@ Revision 558 (von Matthias Berg): - Icon-Bug behoben • Hotkeys dürfen nicht vor der folgenden Zeile stehen: »menu, tray, icon, neo.ico,,1« - lernModus-Konfigurations-Bug behoben: or statt and(not). -- Ein paar leere Else-Fälle eingebaut (um die Verständlichkeit zu erhöhen und mögliche Compilerprobleme vermeiden). +- Ein paar leere Else-Fälle eingebaut (um die Verständlichkeit zu erhöhen und mögliche Compilerprobleme zu vermeiden). Revision 556 (von Matthias Berg): - lernModus (an/aus mit Strg+Komma) • im Skript konfigurierbar. diff --git a/windows/autohotkey/Source/All.ahk b/windows/autohotkey/Source/All.ahk index 1b899b7..ec516bf 100644 --- a/windows/autohotkey/Source/All.ahk +++ b/windows/autohotkey/Source/All.ahk @@ -11,8 +11,6 @@ ------------------------------------------------------ */ - - #Include %a_scriptdir%\Warning.ahk #Include %a_scriptdir%\Global-Part.ahk #Include %a_scriptdir%\Methods-Layers.ahk @@ -22,7 +20,6 @@ #Include %a_scriptdir%\Methods-Other.ahk #Include %a_scriptdir%\Methods-Unicode.ahk #Include %a_scriptdir%\Methods-ScreenKeyboard.ahk - ; Eines schönen Tages sollten auch die Compose-Kombinationen automatisch aus der Referenz erzeugt werden. Derzeitig gibt es nur den (höchst instabilen und experimentellen!) Compose-Playground: ;#Include *i %a_scriptdir%\..\Compose\Compose-all-in-one.ahk diff --git a/windows/autohotkey/Source/Global-Part.ahk b/windows/autohotkey/Source/Global-Part.ahk index a0257d1..bcb96eb 100644 --- a/windows/autohotkey/Source/Global-Part.ahk +++ b/windows/autohotkey/Source/Global-Part.ahk @@ -1,4 +1,28 @@ -SetNumLockState AlwaysOff +/****************** +* Initialisierung * +******************* +*/ +DeadKey = "" +CompKey = "" +PriorDeadKey = "" +PriorCompKey = "" +Ebene12 = 0 +noCaps = 0 + +EbeneAktualisieren() +SetBatchLines -1 +SetCapsLockState Off +SetNumLockState Off +SetScrollLockState Off + +name=Neo 2.0 (%A_ScriptName%) +enable=Aktiviere %name% +disable=Deaktiviere %name% +#usehook on +#singleinstance force +#LTrim ; Quelltext kann eingerückt werden, +Process,Priority,,High +SendMode Input /**************** * Verzeichnisse * @@ -13,132 +37,86 @@ FileCreateDir, %ResourceFolder% 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: -; Syntaxhinweis: IniRead, Variable, InputFilename, Section, Key [, DefaultValue] ; 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] + ; Sollen Ebenen 1-4 ignoriert werden (kann z.B. vom dll Treiber übernommen werden)? -IniRead, ahkTreiberKombi, %ApplicationFolder%\NEO2.ini, Global, ahkTreiberKombi, 0 +IniRead,ahkTreiberKombi,%ini%,Global,ahkTreiberKombi,0 ; Soll der Treiber im Einhandmodus betrieben werden? -IniRead, einHandNeo, %ApplicationFolder%\NEO2.ini, Global, einHandNeo, 0 +IniRead,einHandNeo,%ini%,Global,einHandNeo,0 ; Soll der Lernmodus aktiviert werden? -IniRead, lernModus, %ApplicationFolder%\NEO2.ini, Global, lernModus, 0 +IniRead,lernModus,%ini%,Global,lernModus,0 ; Soll mit einer MsgBox explizit auf das Ein- und Ausschalten des Mod4-Locks hingewiesen werden? -IniRead, zeigeLockBox, %ApplicationFolder%\NEO2.ini, Global, zeigeLockBox, 1 +IniRead,zeigeLockBox,%ini%,Global,zeigeLockBox,1 ; Soll aktivierter Mod4-Lock über die Rollen-LED des Keybord angezeigt werden (analog zu CapsLock)? -IniRead, UseMod4Light, %ApplicationFolder%\NEO2.ini, Global, UseMod4Light, 1 +IniRead,UseMod4Light,%ini%,Global,UseMod4Light,1 ; Soll Lang-s auf s, s auf ß und ß auf Lang-s gelegt (bzw. vertauscht) werden? -IniRead, LangSTastatur, %ApplicationFolder%\NEO2.ini, Global, LangSTastatur, 0 +IniRead,LangSTastatur,%ini%,Global,LangSTastatur,0 +If LangSTastatur + KeyboardLED(2,"on") ; Sollen tote Tasten blind angezeigt werden? -IniRead, DeadCompose, %ApplicationFolder%\NEO2.ini, Global, DeadCompose, 0 +IniRead,DeadCompose,%ini%,Global,DeadCompose,0 ;Sollen Compose-Tasten blind angezeigt werden? -IniRead, DeadSilence, %ApplicationFolder%\NEO2.ini, Global, DeadSilence, 0 +IniRead,DeadSilence,%ini%,Global,DeadSilence,0 /*********************** * Recourcen-Verwaltung * ************************ */ - -if(FileExist("ResourceFolder") <> false) { +if(FileExist("ResourceFolder")<>false){ ; Versuche, alle möglicherweise in die EXE eingebundenen Dateien zu extrahieren - FileInstall, neo.ico, %ResourceFolder%\neo.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 + FileInstall,neo.ico,%ResourceFolder%\neo.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. +}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.ico") && FileExist("neo_disabled.ico") ) - iconBenutzen = 1 - - -/************************** -* lernModus Konfiguration * -* nur relevant wenn * -* lernModus = 1 * -* Strg+Komma schaltet um * -*************************** +if(FileExist("ebene1.png")&&FileExist("ebene2.png")&&FileExist("ebene3.png")&&FileExist("ebene4.png")&&FileExist("ebene5.png")&&FileExist("ebene6.png")) + zeigeBildschirmTastatur=1 +if(FileExist("neo.ico")&&FileExist("neo_disabled.ico")) + iconBenutzen=1 + +/******************************************* +* Überprüfung auf deutsches Tastaturlayout * +******************************************** */ -; 0 = aus, 1 = an - -; 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 - -; aus Noras Skript kopiert: -Process,Priority,,High -#usehook on -#singleinstance force -#LTrim - ; Quelltext kann eingerückt werden, - ; msgbox ist trotzdem linksbündig -SetTitleMatchMode 2 -SendMode Input -name = Neo 2.0 -enable = Aktiviere %name% -disable = Deaktiviere %name% - -; Ü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% -if inputlocale <> 00000407 +regread,inputlocale,HKEY_CURRENT_USER,Keyboard Layout\Preload,1 +regread,inputlocalealias,HKEY_CURRENT_USER,Keyboard Layout\Substitutes,%inputlocale% +if inputlocalealias<>inputlocale=%inputlocalealias% +if inputlocale<>00000407 { suspend - regread, inputlocale, HKEY_LOCAL_MACHINE - , SYSTEM\CurrentControlSet\Control\Keyboard Layouts\%inputlocale% - , Layout Text - msgbox, 48, Warnung!, + regread,inputlocale,HKEY_LOCAL_MACHINE,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\%inputlocale%,Layout Text + msgbox, 48, Warnung!, ( Nicht kompatibles Tastaturlayout: `t%inputlocale% @@ -153,87 +131,39 @@ if inputlocale <> 00000407 exitapp } - -; Menü des Systray-Icons -; ---------------------- - -if (iconBenutzen) - menu, tray, icon, %ResourceFolder%\neo.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, default, %disable% -menu, tray, add -menu, tray, add, Edit, edit -menu, tray, add, Reload, reload -menu, tray, add -menu, tray, add, Nicht im Systray anzeigen, hide -menu, tray, add, %name% beenden, exitprogram -menu, tray, tip, %name% - - -/* - Variablen initialisieren +/************************* +* Menü des Systray-Icons * +************************** */ - -DeadKey = "" -CompKey = "" -PriorDeadKey = "" -PriorCompKey = "" -Ebene12 = 0 - -EbeneAktualisieren() - - -/* - EinHandNeo +if (iconBenutzen) + menu,tray,icon,%ResourceFolder%\neo.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% + +/********************** +* Tastenkombinationen * +*********************** */ -spacepressed := 0 -keypressed:= 0 - -; Reihe 1 -gespiegelt_7 = neo_6 -gespiegelt_8 = neo_5 -gespiegelt_9 = neo_4 -gespiegelt_0 = neo_3 -gespiegelt_strich = neo_2 -gespiegelt_tot2 = neo_1 - -; Reihe 2 -gespiegelt_k = neo_w -gespiegelt_h = neo_c -gespiegelt_g = neo_l -gespiegelt_f = neo_v -gespiegelt_q = neo_x -gespiegelt_sz = neo_tab -gespiegelt_tot3 = neo_tot1 - -; Reihe 3 -gespiegelt_s = neo_o -gespiegelt_n = neo_e -gespiegelt_r = neo_a -gespiegelt_t = neo_i -gespiegelt_d = neo_u - -; Reihe 4 -gespiegelt_b = neo_z -gespiegelt_m = neo_p -gespiegelt_komma = neo_ä -gespiegelt_punkt = neo_ö -gespiegelt_j = neo_ü - - ;Blinde/Sichtbare Tote Tasten *F9:: if (isMod4pressed()) - DeadSilence := not(DeadSilence) + DeadSilence := not(DeadSilence) else send {blind}{F9} return @@ -241,19 +171,25 @@ return ;Blinde/Sichtbare Compose *F10:: if (isMod4pressed()) - DeadCompose := not(DeadCompose) + DeadCompose := not(DeadCompose) else send {blind}{F10} return ;Lang-s-Tastatur: *F11:: - if (isMod4pressed()) - LangSTastatur := not(LangSTastatur) ; schaltet die Lang-s-Tastatur ein und aus + if (isMod4pressed()){ + LangSTastatur := not(LangSTastatur) + if LangSTastatur + KeyboardLED(2,"on") + else KeyboardLED(2,"off") + } else send {blind}{F11} return +;Alle Modi und Locks in den Normalzustand versetzen +;bzw. Skript neu laden: *Esc:: if (isMod4pressed()) reload @@ -261,71 +197,58 @@ return send {blind}{Esc} return -/* - ------------------------------------------------------ - Shift+Pause "pausiert" das Skript. - ------------------------------------------------------ -*/ - *pause:: Suspend, Permit - if isshiftpressed() - goto togglesuspend - else - send {blind}{pause} + if isShiftpressed() + goto togglesuspend + else= + send {blind}{pause} return -; ------------------------------------ - -^.::einHandNeo := not(einHandNeo) ; Punkt -^,::lernModus := not(lernModus) ; Komma - - - +/***************** +* Menüfunktionen * +****************** +*/ togglesuspend: - if A_IsSuspended - { - menu, tray, rename, %enable%, %disable% - menu, tray, tip, %name% - if (iconBenutzen) - menu, tray, icon, %ResourceFolder%\neo.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 - } - + if A_IsSuspended + { + menu, tray, rename, %enable%, %disable% + menu, tray, tip, %name% + if (iconBenutzen) + menu, tray, icon, %ResourceFolder%\neo.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 - ) + 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 @@ -354,5 +277,76 @@ exitprogram: exitapp return +/************************** +* lernModus Konfiguration * +* nur relevant wenn * +* lernModus = 1 * +* Strg+Komma schaltet um * +*************************** +*/ +^,::lernModus := not(lernModus) + +; 0 = aus, 1 = an + +; 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 + +/**************************** +* EinHandNeo * +* Umschalten mit Strg+Punkt * +***************************** +*/ +^.::einHandNeo := not(einHandNeo) + +spacepressed := 0 +keypressed:= 0 + +; Reihe 1 +gespiegelt_7 = neo_6 +gespiegelt_8 = neo_5 +gespiegelt_9 = neo_4 +gespiegelt_0 = neo_3 +gespiegelt_strich = neo_2 +gespiegelt_tot2 = neo_1 + +; Reihe 2 +gespiegelt_k = neo_w +gespiegelt_h = neo_c +gespiegelt_g = neo_l +gespiegelt_f = neo_v +gespiegelt_q = neo_x +gespiegelt_sz = neo_tab +gespiegelt_tot3 = neo_tot1 + +; Reihe 3 +gespiegelt_s = neo_o +gespiegelt_n = neo_e +gespiegelt_r = neo_a +gespiegelt_t = neo_i +gespiegelt_d = neo_u + +; Reihe 4 +gespiegelt_b = neo_z +gespiegelt_m = neo_p +gespiegelt_komma = neo_ä +gespiegelt_punkt = neo_ö +gespiegelt_j = neo_ü + - \ No newline at end of file diff --git a/windows/autohotkey/Source/Keys-Neo.ahk b/windows/autohotkey/Source/Keys-Neo.ahk index b23bb0a..df557dc 100644 --- a/windows/autohotkey/Source/Keys-Neo.ahk +++ b/windows/autohotkey/Source/Keys-Neo.ahk @@ -13,407 +13,288 @@ Die eigentliche NEO-Belegung und der Hauptteil des AHK-Treibers. Reihe 1 */ - neo_tot1: + noCaps=1 EbeneAktualisieren() - if (Ebene = 1) - { + if(Ebene=1){ deadUni(0x02C6) ; Zirkumflex, tot - DeadKey := "c1" - } - else if (Ebene = 2) - { + DeadKey=c1 + }else if(Ebene = 2){ deadUni(0x02C7) ; Caron, tot - DeadKey := "c2" - } - else if (Ebene = 3) - { + DeadKey=c2 + }else if(Ebene = 3){ deadUni(0x02D8) ; Brevis, tot - DeadKey := "c3" - } - else if (Ebene = 4) - { + DeadKey=c3 + }else if Ebene7 + SendUnicodeChar(0x0302) ; Verbindungszeichen Zirkumflex + else if Ebene8 + SendUnicodeChar(0x0306) ; Verbindungszeichen Brevis + else if(Ebene = 4){ deadUni(0x00B7) ; Mittenpunkt, tot - DeadKey := "c4" - } - else if (Ebene = 5) - { + DeadKey=c4 + }else if(Ebene = 5){ deadUni(0x002D) ; Querstrich, tot - DeadKey := "c5" - } - else if (Ebene = 6) - { - deadUni(0x002E) ; Punkt drunter (Colon), tot - DeadKey := "c6" - } - CompKey := PriorCompKey + DeadKey=c5 + }else if(Ebene = 6){ + deadUni(0x0323) ; Punkt drunter (Colon), tot + DeadKey=c6 + }CompKey := PriorCompKey return neo_1: + noCaps=1 EbeneAktualisieren() - if (Ebene = 1) - { - if !(CheckDeadUni("c1",0x00B9) - or CheckDeadUni("c5",0x2081) - or CheckComp3Uni("r_1",0x217A) ; römisch xi - or CheckComp3Uni("R_1",0x216A)) ; römisch XI - if (GetKeyState("CapsLock","T")) - send {blind}{Shift down}1{Shift up} - else if (not(lernModus) or lernModus_std_ZahlenReihe) - send {blind}1 - - if (PriorDeadKey = "comp") - CompKey := "1" - else if (PriorCompKey == "r") - CompKey := "r_1" - else if (PriorCompKey == "R") - CompKey := "R_1" - } - else if (Ebene = 2) - send ° - else if (Ebene = 3) - SendUnicodeChar(0x00B9) ; Hochgestellte 2 - else if (Ebene = 4) - SendUnicodeChar(0x2022) ; Bullet - else if (Ebene = 5) - SendUnicodeChar(0x2640) ; Piktogramm weiblich - else if (Ebene = 6) - SendUnicodeChar(0x00AC) ; Nicht-Symbol + if Ebene12{ + if!(CheckDeadUni("c1",0x00B9) ; Hochgestellte 1 + or CheckDeadUni("c5",0x2081) ; Tiefgestellte 1 + or CheckComp3Uni("r_1",0x217A) ; Römisch xi + or CheckComp3Uni("R_1",0x216A)) ; Römisch XI + outputChar(1,"°") + if!(checkComp(1)) + if(PriorCompKey == "r") + CompKey := "r_1" + else if(PriorCompkey == "R") + CompKey := "R_1" + }else if(Ebene = 3) + SendUnicodeChar(0x00B9) ; Hochgestellte 1 + else if(Ebene = 4) + SendUnicodeChar(0x2022) ; Bullet + else if(Ebene = 5) + SendUnicodeChar(0x2640) ; Piktogramm weiblich + else if(Ebene = 6) + SendUnicodeChar(0x00AC) ; Nicht-Symbol return neo_2: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - { - if !(CheckDeadUni("c1",0x00B2) - or CheckDeadUni("c5",0x2082) - or CheckCompUni("r",0x2171) ; römisch ii - or CheckCompUni("R",0x2161) ; römisch II - or CheckComp3Uni("r_1",0x217B) ; römisch xii - or CheckComp3Uni("R_1",0x216B)) ; römisch XII - if (GetKeyState("CapsLock","T")) - send {blind}{Shift down}2{Shift up} - else if (not(lernModus) or lernModus_std_ZahlenReihe) - send {blind}2 - - if (PriorDeadKey = "comp") - CompKey := "2" - } - else if (Ebene = 2) + if(Ebene = 1){ + if!(CheckDeadUni("c1",0x00B2) ; Hochgestellte 2 + or CheckDeadUni("c5",0x2082) ; Tiefgestellte 2 + or CheckCompUni("r",0x2171) ; Römisch ii + or CheckCompUni("R",0x2161) ; Römisch II + or CheckComp3Uni("r_1",0x217B) ; Römisch xii + or CheckComp3Uni("R_1",0x216B)) ; Römisch XII + outputChar(2,"") + checkComp(2) + }else if(Ebene = 2) SendUnicodeChar(0x2116) ; Numero - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x00B2) ; Hochgestellte 2 - else if (Ebene = 4) + else if(Ebene = 4) SendUnicodeChar(0x2023) ; Aufzählungspfeil - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x26A5) ; Piktogramm Zwitter - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2228) ; Logisches Oder return neo_3: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - { - if !(CheckDeadUni("c1",0x00B3) + if Ebene12{ + if!(CheckDeadUni("c1",0x00B3) or CheckDeadUni("c5",0x2083) - or CheckCompUni("1",0x2153) ; 1/3 - or CheckCompUni("2",0x2154) ; 2/3 - or CheckCompUni("r",0x2172) ; römisch iii - or CheckCompUni("R",0x2162)) ; römisch III - if (GetKeyState("CapsLock","T")) - send {blind}{Shift down}3{Shift up} - else if (not(lernModus) or lernModus_std_ZahlenReihe) - send {blind}3 - - if (PriorDeadKey = "comp") - CompKey := "3" - } - else if (Ebene = 2) - send § - else if (Ebene = 3) + or CheckCompUni("1",0x2153) ; 1/3 + or CheckCompUni("2",0x2154) ; 2/3 + or CheckCompUni("r",0x2172) ; Römisch iii + or CheckCompUni("R",0x2162)) ; Römisch III + outputChar(3,"§") + checkComp(3) + }else if(Ebene = 3) SendUnicodeChar(0x00B3) ; Hochgestellte 3 - else if (Ebene = 4) - { - CompKey := PriorCompKey - DeadKey := PriorDeadKey - } ; leer - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x2642) ; Piktogramm Mann - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2227) ; Logisches Und return neo_4: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - { - if !(CheckDeadUni("c1",0x2074) + if(Ebene = 1){ + if!(CheckDeadUni("c1",0x2074) or CheckDeadUni("c5",0x2084) - or CheckCompUni("r",0x2173) ; römisch iv - or CheckCompUni("R",0x2163)) ; römisch IV - if (GetKeyState("CapsLock","T")) - send {blind}{Shift down}4{Shift up} - else if (not(lernModus) or lernModus_std_ZahlenReihe) - send {blind}4 - - if (PriorDeadKey = "comp") - CompKey := "4" - } - else if (Ebene = 2) + or CheckCompUni("r",0x2173) ; Römisch iv + or CheckCompUni("R",0x2163)) ; Römisch IV + outputChar(4,"") + checkComp(4) + }else if(Ebene = 2) SendUnicodeChar(0x00BB) ; Double guillemot right - else if (Ebene = 3) - Send {blind}› ; Single guillemot right - else if (Ebene = 4) + else if(Ebene = 3) + Send {blind}› ; Single guillemot right + else if(Ebene = 4) Send {blind}{PgUp} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x2113) ; Script small L - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x22A5) ; Senkrecht return neo_5: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - { - if !(CheckDeadUni("c1",0x2075) + if(Ebene = 1){ + if!(CheckDeadUni("c1",0x2075) or CheckDeadUni("c5",0x2085) - or CheckCompUni("1",0x2155) ; 1/5 - or CheckCompUni("2",0x2156) ; 2/5 - or CheckCompUni("3",0x2157) ; 3/5 - or CheckCompUni("4",0x2158) ; 4/5 - or CheckCompUni("r",0x2174) ; römisch v - or CheckCompUni("R",0x2164)) ; römisch V - if (GetKeyState("CapsLock","T")) - send {blind}{Shift down}5{Shift up} - else if (not(lernModus) or lernModus_std_ZahlenReihe) - send {blind}5 - - if (PriorDeadKey = "comp") - CompKey := "5" - } - else if (Ebene = 2) + or CheckCompUni("1",0x2155) ; 1/5 + or CheckCompUni("2",0x2156) ; 2/5 + or CheckCompUni("3",0x2157) ; 3/5 + or CheckCompUni("4",0x2158) ; 4/5 + or CheckCompUni("r",0x2174) ; Römisch v + or CheckCompUni("R",0x2164)) ; Römisch V + outputChar(5,"") + checkComp(5) + }else if(Ebene = 2) SendUnicodeChar(0x00AB) ; Double guillemot left - else if (Ebene = 3) - Send {blind}‹ ; Single guillemot left - else if (Ebene = 4) - { - CompKey := PriorCompKey - DeadKey := PriorDeadKey - } ; leer - else if (Ebene = 5) + else if(Ebene = 3) + Send {blind}‹ ; Single guillemot left + else if(Ebene = 5) SendUnicodeChar(0x2020) ; Kreuz (Dagger) - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2221) ; Winkel return neo_6: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - { - if !(CheckDeadUni("c1",0x2076) + if(Ebene = 1){ + if!(CheckDeadUni("c1",0x2076) or CheckDeadUni("c5",0x2086) - or CheckCompUni("1",0x2159) ; 1/6 - or CheckCompUni("5",0x215A) ; 5/6 - or CheckCompUni("r",0x2175) ; römisch vi - or CheckCompUni("R",0x2165)) ; römisch VI - if (GetKeyState("CapsLock","T")) - send {blind}{Shift down}6{Shift up} - else if (not(lernModus) or lernModus_std_ZahlenReihe) - send {blind}6 - - if (PriorDeadKey = "comp") - CompKey := "6" - } - else if (Ebene = 2) - send € - else if (Ebene = 3) + or CheckCompUni("1",0x2159) ; 1/6 + or CheckCompUni("5",0x215A) ; 5/6 + or CheckCompUni("r",0x2175) ; Römisch vi + or CheckCompUni("R",0x2165)) ; Römisch VI + outputChar(6,"") + checkComp(6) + }else if(Ebene = 2) + SendUnicodeChar(0x20AC) + else if(Ebene = 3) send {blind}¢ - else if (Ebene = 4) + else if(Ebene = 4) send {blind}£ - else if (Ebene = 5) - { - CompKey := PriorCompKey - DeadKey := PriorDeadKey - } ; leer - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2225) ; parallel return neo_7: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - { - if !(CheckDeadUni("c1",0x2077) + if Ebene12{ + if!(CheckDeadUni("c1",0x2077) or CheckDeadUni("c5",0x2087) - or CheckCompUni("r",0x2176) ; römisch vii - or CheckCompUni("R",0x2166)) ; römisch VII - if (GetKeyState("CapsLock","T")) - send {blind}{Shift down}7{Shift up} - else if (not(lernModus) or lernModus_std_ZahlenReihe) - send {blind}7 - - if (PriorDeadKey = "comp") - CompKey := "7" - } - else if (Ebene = 2) - send $ - else if (Ebene = 3) + or CheckCompUni("r",0x2176) ; Römisch vii + or CheckCompUni("R",0x2166)) ; Römisch VII + outputChar(7,"$") + checkComp(7) + }else if(Ebene = 3) send {blind}¥ - else if (Ebene = 4) + else if(Ebene = 4) send {blind}¤ - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03BA) ; greek small letter kappa - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2209) ; nicht Element von return neo_8: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - { - if !(CheckDeadUni("c1",0x2078) + if Ebene12{ + if!(CheckDeadUni("c1",0x2078) or CheckDeadUni("c5",0x2088) - or CheckCompUni("1",0x215B) ; 1/8 - or CheckCompUni("3",0x215C) ; 3/8 - or CheckCompUni("5",0x215D) ; 5/8 - or CheckCompUni("7",0x215E) ; 7/8 - or CheckCompUni("r",0x2177) ; römisch viii - or CheckCompUni("R",0x2167)) ; römisch VIII - if (GetKeyState("CapsLock","T")) - send {blind}{Shift down}8{Shift up} - else if (not(lernModus) or lernModus_std_ZahlenReihe) - send {blind}8 - - if (PriorDeadKey = "comp") - CompKey := "8" - } - else if (Ebene = 2) - send „ - else if (Ebene = 3) + or CheckCompUni("1",0x215B) ; 1/8 + or CheckCompUni("3",0x215C) ; 3/8 + or CheckCompUni("5",0x215D) ; 5/8 + or CheckCompUni("7",0x215E) ; 7/8 + or CheckCompUni("r",0x2177) ; Römisch viii + or CheckCompUni("R",0x2167)) ; Römisch VIII + outputChar(8,"„") + checkComp(8) + }else if(Ebene = 3) send {blind}‚ - else if (Ebene = 4) + else if(Ebene = 4) Send {blind}{NumpadDiv} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x27E8) ; bra (öffnende spitze Klammer) - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2204) ; es existiert nicht return neo_9: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - { - if !(CheckDeadUni("c1",0x2079) + if Ebene12{ + if!(CheckDeadUni("c1",0x2079) or CheckDeadUni("c5",0x2089) - or CheckCompUni("r",0x2178) ; römisch ix - or CheckCompUni("R",0x2168)) ; römisch IX - if (GetKeyState("CapsLock","T")) - send {blind}{Shift down}9{Shift up} - else if (not(lernModus) or lernModus_std_ZahlenReihe) - send {blind}9 - - if (PriorDeadKey = "comp") - CompKey := "9" - } - else if (Ebene = 2) - send “ - else if (Ebene = 3) + or CheckCompUni("r",0x2178) ; Römisch ix + or CheckCompUni("R",0x2168)) ; Römisch IX + outputChar(9,"“") + checkComp(9) + }else if(Ebene = 3) send {blind}‘ - else if (Ebene = 4) + else if(Ebene = 4) Send {blind}{NumpadMult} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x27E9) ; ket (schließende spitze Klammer) - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2226) ; nicht parallel return neo_0: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - { - if !(CheckDeadUni("c1",0x2070) - or CheckDeadUni("c5",0x2080) - or CheckComp3Uni("r_1",0x2179) ; römisch x - or CheckComp3Uni("R_1",0x2169)) ; römisch X - if (GetKeyState("CapsLock","T")) - send {blind}{Shift down}0{Shift up} - else if (not(lernModus) or lernModus_std_ZahlenReihe) - send {blind}0 - - if (PriorDeadKey = "comp") - CompKey := "0" - } - else if (Ebene = 2) - send ” - else if (Ebene = 3) + if Ebene12{ + if!(CheckDeadUni("c1",0x2070) + or CheckDeadUni("c5",0x2080) ; Römisch x + or CheckComp3Uni("R_1",0x2169)) ; Römisch X + outputChar(0,"”") + checkComp(0) + }else if(Ebene = 3) send {blind}’ - else if (Ebene = 4) + else if(Ebene = 4) Send {blind}{NumpadSub} - else if (Ebene = 5) - { - CompKey := PriorCompKey - DeadKey := PriorDeadKey - } ; leer - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2205) ; leere Menge return neo_strich: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - if (GetKeyState("CapsLock","T")) - send {blind}{Shift down}-{Shift up} - else - send {blind}- ; Bindestrich-Minus - else if (Ebene = 2) + if(Ebene = 1) + outputChar("-","") ; Bindestrich-Minus + else if(Ebene = 2) SendUnicodeChar(0x2013) ; Gedankenstrich - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x2014) ; Englischer Gedankenstrich (Geviertstrich) - else if (Ebene = 4) ; leer - { - CompKey := PriorCompKey - DeadKey := PriorDeadKey - } - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x2011) ; geschützter Bindestrich (Bindestrich ohne Zeilenumbruch) - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x00AD) ; weicher Bindestrich return neo_tot2: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - { + if(Ebene = 1){ deadAsc("{´}{space}") ; Akut, tot DeadKey := "a1" - } - else if (Ebene = 2) - { - deadAsc("``{space}") ; Gravis, tot + }else if(Ebene = 2){ + deadAsc("``{space}") ; Gravis, tot DeadKey := "a2" - } - else if (Ebene = 3) - { - deadAsc("¸") ; Cedilla, tot + }else if(Ebene = 3){ + deadAsc("¸") ; Cedilla, tot DeadKey := "a3" - } - else if (Ebene = 4) - { - deadUni(0x02D9) ; Punkt obendrüber + }else if(Ebene = 4){ + deadUni(0x02D9) ; Punkt oben DeadKey := "a4" - } - else if (Ebene = 5) - { - deadUni(0x02DB) ; Ogonek + }else if(Ebene = 5){ + deadUni(0x02DB) ; Ogonek DeadKey := "a5" - } - else if (Ebene = 6) - { - deadUni(0x02DA) ; Ring obendrauf + }else if(Ebene = 6){ + deadUni(0x02DA) ; Ring oben DeadKey := "a6" - } - CompKey := PriorCompKey + }CompKey := PriorCompKey return @@ -425,34 +306,29 @@ return neo_x: EbeneAktualisieren() - if (Ebene12) + if(Ebene12) OutputChar("x","X") - else if (Ebene = 3) - SendUnicodeChar(0x2026) ;Ellipse horizontal - else if (Ebene = 4) - SendUnicodeChar(0x22EE) ;Ellipse vertikal - else if (Ebene = 5) - SendUnicodeChar(0x03BE) ;xi - else if (Ebene = 6) - SendUnicodeChar(0x039E) ;Xi + else if(Ebene = 3) + SendUnicodeChar(0x2026) ; Ellipse horizontal + else if(Ebene = 4) + SendUnicodeChar(0x22EE) ; Ellipse vertikal + else if(Ebene = 5) + SendUnicodeChar(0x03BE) ; xi + else if(Ebene = 6) + SendUnicodeChar(0x039E) ; Xi return neo_v: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("c6",0x1E7F,0x1E7E))) + if(Ebene12 and !(CheckDeadUni12("c6",0x1E7F,0x1E7E))) OutputChar("v","V") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}_ - else if (Ebene = 4) - if (not(lernModus) or lernModus_neo_Backspace) + else if(Ebene = 4) + if(not(lernModus) or lernModus_neo_Backspace) Send {blind}{Backspace} - else ; leer - { - CompKey := PriorCompKey - DeadKey := PriorDeadKey - } - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2259) ; estimates return @@ -460,209 +336,205 @@ return neo_l: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x013A,0x0139) + if(Ebene12 and !(CheckDeadUni12("a1",0x013A,0x0139) or CheckDeadUni12("a3",0x013C,0x013B) or CheckDeadUni12("c2",0x013E,0x013D) or CheckDeadUni12("c4",0x0140,0x013F) or CheckDeadUni12("c6",0x1E37,0x1E36) or CheckDeadUni12("t4",0x0142,0x0141))) OutputChar("l","L") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}[ - else if (Ebene = 4) + else if(Ebene = 4) Send {Blind}{Up} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03BB) ; lambda - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x039B) ; Lambda return neo_c: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x0107,0x0106) + if(Ebene12 and !(CheckDeadUni12("a1",0x0107,0x0106) or CheckDeadUni12("a3",0x00E7,0x00E6) or CheckDeadUni12("a4",0x010B,0x010A) or CheckDeadUni12("c1",0x0109,0x0108) or CheckDeadUni12("c2",0x010D,0x010C) or CheckCompAsc("o","©"))) OutputChar("c","C") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}] - else if (Ebene = 4) - if (not(lernModus) or lernModus_neo_Entf) + else if(Ebene = 4) + if(not(lernModus) or lernModus_neo_Entf) Send {blind}{Del} - else ; leer - { - CompKey := PriorCompKey - DeadKey := PriorDeadKey - } - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03C7) ; chi - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2102) ; C (Komplexe Zahlen) return neo_w: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("c1",0x0175,0x0174))) + if(Ebene12 and !(CheckDeadUni12("c1",0x0175,0x0174))) OutputChar("w","W") - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x005E) ; Zirkumflex - else if (Ebene = 4) - Send {blind}{Insert} ; Einfg - else if (Ebene = 5) + else if(Ebene = 4) + Send {blind}{Insert} ; Einfg + else if(Ebene = 5) SendUnicodeChar(0x03C9) ; omega - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x03A9) ; Omega return neo_k: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a3",0x0137,0x0136) + if(Ebene12 and !(CheckDeadUni12("a3",0x0137,0x0136) or CheckDeadUni12("c6",0x1E33,0x1E32))) OutputChar("k","K") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}{!} - else if (Ebene = 4) + else if(Ebene = 4) Send ¡ - else if (Ebene = 5) - SendUnicodeChar(0x03F0) ;kappa symbol (varkappa) - else if (Ebene = 6) + else if(Ebene = 5) + SendUnicodeChar(0x03F0) ; kappa symbol (varkappa) + else if(Ebene = 6) SendUnicodeChar(0x221A) ; Wurzel return neo_h: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a4",0x1E23,0x1E22) + if(Ebene12 and !(CheckDeadUni12("a4",0x1E23,0x1E22) or CheckDeadUni12("c1",0x0125,0x0124) or CheckDeadUni12("c5",0x0127,0x0126) or CheckDeadUni12("c6",0x1E25,0x1E24))) OutputChar("h","H") - else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2264))) ; kleiner gleich + else if((Ebene = 3) and !(CheckDeadUni("c5",0x2264))) ; kleiner gleich send {blind}< - else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2077) + else if((Ebene = 4) and !(CheckDeadUni("c1",0x2077) or CheckDeadUni("c5",0x2087))) Send {blind}{NumPad7} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03C8) ; psi - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x03A8) ; Psi return neo_g: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a3",0x0123,0x0122) + if(Ebene12 and !(CheckDeadUni12("a3",0x0123,0x0122) or CheckDeadUni12("a4",0x0121,0x0120) or CheckDeadUni12("c1",0x011D,0x011C) or CheckDeadUni12("c3",0x011F,0x011E))) OutputChar("g","G") - else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2265))) - send {blind}> ; größer gleich - else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2078) - or CheckDeadUni("c5",0x2088))) + else if((Ebene = 3) and !(CheckDeadUni("c5",0x2265))) ; größer gleich + send {blind}> + else if((Ebene = 4) and !(CheckDeadUni("c1",0x2078) + or CheckDeadUni("c5",0x2088))) Send {blind}{NumPad8} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03B3) ; gamma - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x0393) ; Gamma return neo_f: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a4",0x1E1F,0x1E1E) + if(Ebene12 and !(CheckDeadUni12("a4",0x1E1F,0x1E1E) or CheckDeadUni12("t4",0x0192,0x0191))) OutputChar("f","F") - else if ((Ebene = 3) and !(CheckDeadUni("a6",0x2257) ; ring equal to - or CheckDeadUni("c1",0x2259) ; entspricht - or CheckDeadUni("c2",0x225A) ; EQUIANGULAR TO - or CheckDeadUni("c5",0x2261) ; identisch - or CheckDeadUni("t1",0x2245) ; ungefähr gleich - or CheckDeadUni("t4",0x2260))) ; ungleich + else if((Ebene = 3) and !(CheckDeadUni("a6",0x2257) ; ring equal to + or CheckDeadUni("c1",0x2259) ; entspricht + or CheckDeadUni("c2",0x225A) ; EQUIANGULAR TO + or CheckDeadUni("c5",0x2261) ; identisch + or CheckDeadUni("t1",0x2245) ; ungefähr gleich + or CheckDeadUni("t4",0x2260))) ; ungleich send {blind}`= - else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2079) + else if((Ebene = 4) and !(CheckDeadUni("c1",0x2079) or CheckDeadUni("c5",0x2089))) send {blind}{NumPad9} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03C6) ; phi - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x03A6) ; Phi return neo_q: EbeneAktualisieren() - if (Ebene12) + if(Ebene12) OutputChar("q","Q") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}{&} - else if ((Ebene = 4) and !(CheckDeadUni("c1",0x207A) + else if((Ebene = 4) and !(CheckDeadUni("c1",0x207A) or CheckDeadUni("c5",0x208A))) Send {blind}{NumPadAdd} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03D5) ; phi symbol (varphi) - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x211A) ; Q (rationale Zahlen) return neo_sz: EbeneAktualisieren() - if (Ebene = 1) - if (GetKeyState("CapsLock","T")) + if(Ebene = 1) + if(GetKeyState("CapsLock","T")) SendUnicodeChar(0x1E9E) ; versal-ß else if LangSTastatur send {blind}s else send ß - else if (Ebene = 2) - if (GetKeyState("CapsLock","T")) + else if(Ebene = 2) + if(GetKeyState("CapsLock","T")) if LangSTastatur send {blind}s else send ß else SendUnicodeChar(0x1E9E) ; versal-ß - else if (Ebene = 3) + else if(Ebene = 3) if LangSTastatur send ß else SendUnicodeChar(0x017F) ; langes s - else if (Ebene = 5) - SendUnicodeChar(0x03C2) ; varsigma - else if (Ebene = 6) - SendUnicodeChar(0x2218) ; Verknüpfungsoperator + else if(Ebene = 5) + SendUnicodeChar(0x03C2) ; varsigma + else if(Ebene = 6) + SendUnicodeChar(0x2218) ; Verknüpfungsoperator return neo_tot3: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) + if(Ebene = 1) { - deadUni(0x02DC) ; Tilde, tot + deadUni(0x02DC) ; Tilde, tot DeadKey := "t1" } - else if (Ebene = 2) + else if(Ebene = 2) { - deadUni(0x00AF) ; Macron, tot + deadUni(0x00AF) ; Macron, tot DeadKey := "t2" } - else if (Ebene = 3) + else if(Ebene = 3) { - deadUni(0x00A8) ; Diärese + deadUni(0x00A8) ; Diärese DeadKey := "t3" } - else if (Ebene = 4) + else if(Ebene = 4) { - deadUni(0x002F) ; Schrägstrich, tot + deadUni(0x002F) ; Schrägstrich, tot DeadKey := "t4" } - else if (Ebene = 5) + else if(Ebene = 5) { - deadUni(0x02DD) ; Doppelakut + deadUni(0x02DD) ; Doppelakut DeadKey := "t5" } - else if (Ebene = 6) + else if(Ebene = 6) { - deadUni(0x02CF) ; Komma drunter, tot + deadUni(0x02CF) ; Komma drunter, tot DeadKey := "t6" } @@ -677,7 +549,7 @@ return neo_u: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x00FA,0x00DA) + if(Ebene12 and !(CheckDeadUni12("a1",0x00FA,0x00DA) or CheckDeadUni12("a2",0x00F9,0x00D9) or CheckDeadUni12("a5",0x0173,0x0172) or CheckDeadUni12("a6",0x016F,0x016E) @@ -689,22 +561,22 @@ neo_u: or CheckDeadAsc12("t3","ü","Ü") or CheckDeadUni12("t5",0x0171,0x0170))) OutputChar("u","U") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}\ - else if (Ebene = 4) + else if(Ebene = 4) Send {blind}{Home} - else if (Ebene = 5) ; leer + else if(Ebene = 5) ; leer { CompKey := PriorCompKey DeadKey := PriorDeadKey } - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x222E) ; contour integral return neo_i: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x00ED,0x00CD) + if(Ebene12 and !(CheckDeadUni12("a1",0x00ED,0x00CD) or CheckDeadUni12("a2",0x00EC,0x00CC) or CheckDeadUni12("a4",0x012F,0x012E) or CheckDeadUni12("a5",0x0131,0x0130) @@ -715,42 +587,42 @@ neo_i: or CheckDeadUni12("t2",0x012B,0x012A) or CheckDeadAsc12("t3","ï","Ï"))) OutputChar("i","I") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}`/ - else if (Ebene = 4) + else if(Ebene = 4) Send {Blind}{Left} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03B9) ; iota - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x222B) ; integral return neo_a: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x00E1,0x00C1) - or CheckDeadUni12("a2",0x00E0,0x00C0) - or CheckDeadUni12("a5",0x0105,0x0104) - or CheckDeadAsc12("a6","å","Å") - or CheckDeadUni12("c1",0x00E2,0x00C2) - or CheckDeadUni12("c2",0x01CE,0x01CD) - or CheckDeadUni12("c3",0x0103,0x0102) - or CheckDeadUni12("t1",0x00E3,0x00C3) - or CheckDeadUni12("t2",0x0101,0x0100) - or CheckDeadAsc12("t3","ä","Ä"))) + if(Ebene12 and !(CheckDeadUni12("a1",0x00E1,0x00C1) + or CheckDeadUni12("a2",0x00E0,0x00C0) + or CheckDeadUni12("a5",0x0105,0x0104) + or CheckDeadAsc12("a6","å","Å") + or CheckDeadUni12("c1",0x00E2,0x00C2) + or CheckDeadUni12("c2",0x01CE,0x01CD) + or CheckDeadUni12("c3",0x0103,0x0102) + or CheckDeadUni12("t1",0x00E3,0x00C3) + or CheckDeadUni12("t2",0x0101,0x0100) + or CheckDeadAsc12("t3","ä","Ä"))) OutputChar("a","A") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}{{} - else if (Ebene = 4) + else if(Ebene = 4) Send {Blind}{Down} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03B1) ; alpha - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2200) ; für alle return neo_e: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x00E9,0x00C9) + if(Ebene12 and !(CheckDeadUni12("a1",0x00E9,0x00C9) or CheckDeadUni12("a2",0x00E8,0x00C8) or CheckDeadUni12("a4",0x0117,0x0116) or CheckDeadUni12("a5",0x0119,0x0118) @@ -764,19 +636,19 @@ neo_e: or CheckCompAsc12("o","œ","Œ") or CheckCompAsc12("O","Œ","Œ"))) OutputChar("e","E") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}{}} - else if (Ebene = 4) + else if(Ebene = 4) Send {Blind}{Right} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03B5) ; epsilon - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2203) ; es existiert return neo_o: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x00F3,0x00D3) + if(Ebene12 and !(CheckDeadUni12("a1",0x00F3,0x00D3) or CheckDeadUni12("a2",0x00F2,0x00D2) or CheckDeadUni12("a5",0x01EB,0x01EA) or CheckDeadUni12("c1",0x00F4,0x00D4) @@ -788,102 +660,102 @@ neo_o: or CheckDeadUni12("t4",0x00F8,0x00D8) or CheckDeadUni12("t5",0x0151,0x0150))) OutputChar("o","O") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}* - else if (Ebene = 4) + else if(Ebene = 4) Send {blind}{End} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03BF) ; omicron - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2208) ; element of return neo_s: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x015B,0x015A) + if(Ebene12 and !(CheckDeadUni12("a1",0x015B,0x015A) or CheckDeadUni12("a3",0x015F,0x015E) or CheckDeadUni12("a4",0x1E61,0x1E60) or CheckDeadUni12("c1",0x015D,0x015C) or CheckDeadUni12("c2",0x0161,0x0160) or CheckDeadUni12("c6",0x1E63,0x1A62))) { - if (Ebene = 1) + if(Ebene = 1) { if LangSTastatur - if (GetKeyState("CapsLock","T")) + if(GetKeyState("CapsLock","T")) { send {blind}s - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") Compkey := "s" } else { SendUnicodeChar(0x017F) ;langes S - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "lang_s" } else { send {blind}s - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "s" } } - else if (Ebene = 2) + else if(Ebene = 2) { if LangSTastatur - if (GetKeyState("CapsLock","T")) + if(GetKeyState("CapsLock","T")) { SendUnicodeChar(0x017F) ;langes S - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "lang_s" } else { send {blind}S - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "s" } else { send {blind}S - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "S" } } } - else if (Ebene = 3) + else if(Ebene = 3) send {blind}? - else if (Ebene = 4) + else if(Ebene = 4) Send ¿ - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03C3) ;sigma - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x03A3) ;Sigma return neo_n: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x0144,0x0143) + if(Ebene12 and !(CheckDeadUni12("a1",0x0144,0x0143) or CheckDeadUni12("a3",0x0146,0x0145) or CheckDeadUni12("a4",0x1E45,0x1E44) or CheckDeadUni12("c2",0x0148,0x0147) or CheckDeadUni12("t1",0x00F1,0x00D1))) OutputChar("n","N") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}( - else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2074) + else if((Ebene = 4) and !(CheckDeadUni("c1",0x2074) or CheckDeadUni("c5",0x2084))) Send {blind}{NumPad4} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03BD) ; nu - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2115) ; N (natürliche Zahlen) return neo_r: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x0155,0x0154) + if(Ebene12 and !(CheckDeadUni12("a1",0x0155,0x0154) or CheckDeadUni12("a3",0x0157,0x0156) or CheckDeadUni12("a4",0x0E59,0x0E58) or CheckDeadUni12("c2",0x0159,0x0158) @@ -891,67 +763,67 @@ neo_r: or CheckCompAsc12("o","®","®") or CheckCompAsc12("O","®","®"))) OutputChar("r","R") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}) - else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2075) + else if((Ebene = 4) and !(CheckDeadUni("c1",0x2075) or CheckDeadUni("c5",0x2085))) Send {blind}{NumPad5} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03F1) ; rho symbol (varrho) - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x211D) ; R (reelle Zahlen) return neo_t: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a3",0x0163,0x0162) + if(Ebene12 and !(CheckDeadUni12("a3",0x0163,0x0162) or CheckDeadUni12("a4",0x1E6B,0x1E6A) or CheckDeadUni12("c2",0x0165,0x0164) or CheckDeadUni12("c5",0x0167,0x0166) or CheckDeadUni12("c6",0x1E6D,0x1E6C))) OutputChar("t","T") - else if (Ebene = 3) - send {blind}- ; Bisstrich - else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2076) + else if(Ebene = 3) + send {blind}- ; Bisstrich + else if((Ebene = 4) and !(CheckDeadUni("c1",0x2076) or CheckDeadUni("c5",0x2086))) Send {blind}{NumPad6} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03C4) ; tau - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2202) ; partielle Ableitung return neo_d: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a4",0x1E0B,0x1E0A) + if(Ebene12 and !(CheckDeadUni12("a4",0x1E0B,0x1E0A) or CheckDeadUni12("c2",0x010F,0x010E) or CheckDeadUni12("c5",0x0111,0x0110) or CheckDeadUni12("c6",0x1E0D,0x1E0C) or CheckDeadUni12("t4",0x00F0,0x00D0))) OutputChar("d","D") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}: - else if (Ebene = 4) + else if(Ebene = 4) send `, - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03B4) ; delta - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x0394) ; Delta return neo_y: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x00FD,0x00DD) + if(Ebene12 and !(CheckDeadUni12("a1",0x00FD,0x00DD) or CheckDeadUni12("c1",0x0177,0x0176) or CheckDeadAsc12("t3","ÿ","Ÿ"))) OutputChar("y","Y") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}@ - else if (Ebene = 4) + else if(Ebene = 4) Send {blind}. - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03C5) ; upsilon - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2207) ; nabla return @@ -963,180 +835,182 @@ return neo_ü: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x01D8,0x01D7) + if(Ebene12 and !(CheckDeadUni12("a1",0x01D8,0x01D7) or CheckDeadUni12("a2",0x01DC,0x01DB) or CheckDeadUni12("c2",0x01DA,0x01D9) or CheckDeadUni12("t2",0x01D6,0x01D5))) OutputChar("ü","Ü") - else if (Ebene = 3) + else if(Ebene = 3) send {#} - else if (Ebene = 4) + else if(Ebene = 4) Send {blind}{Esc} - else if (Ebene = 5) ; leer + else if(Ebene = 5) ; leer { DeadKey := PriorDeadKey CompKey := PriorCompKey } - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x221D) ; proportional return neo_ö: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("t2",0x022B,0x022A))) + if(Ebene12 and !(CheckDeadUni12("t2",0x022B,0x022A))) OutputChar("ö","Ö") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}$ - else if (Ebene = 4) + else if(Ebene = 4) send {blind}{Tab} - else if (Ebene = 5) + else if(Ebene = 5) { DeadKey := PriorDeadKey CompKey := PriorCompKey } ; leer - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2111) ; Fraktur I return neo_ä: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("t2",0x01DF,0x01DE))) + if(Ebene12 and !(CheckDeadUni12("t2",0x01DF,0x01DE))) OutputChar("ä","Ä") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}| - else if (Ebene = 4) - Send {blind}{PgDn} ; Next - else if (Ebene = 5) + else if(Ebene = 4) + Send {blind}{PgDn} ; Next + else if(Ebene = 5) SendUnicodeChar(0x03B7) ; eta - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x211C) ; Fraktur R return neo_p: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a4",0x1E57,0x1E56))) + if(Ebene12 and !(CheckDeadUni12("a4",0x1E57,0x1E56))) OutputChar("p","P") - else if ((Ebene = 3) and !(CheckDeadUni("t1",0x2248))) + else if((Ebene = 3) and !(CheckDeadUni("t1",0x2248))) send {blind}~ - else if (Ebene = 4) + else if(Ebene = 4) Send {blind}{Enter} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03C0) ; pi - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x03A0) ; Pi return neo_z: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x017A,0x0179) + if(Ebene12 and !(CheckDeadUni12("a1",0x017A,0x0179) or CheckDeadUni12("a4",0x017C,0x017B) or CheckDeadUni12("c2",0x017E,0x017D) or CheckDeadUni12("c6",0x1E93,0x1E92))) OutputChar("z","Z") - else if (Ebene = 3) - send ``{space} ; untot - else if (Ebene = 4) + else if(Ebene = 3) + send ``{space} ; untot + else if(Ebene = 4) { DeadKey := PriorDeadKey CompKey := PriorCompKey } ; leer - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03B6) ; zeta - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2124) ; Z (ganze Zahlen) return neo_b: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a4",0x1E03,0x1E02))) + if(Ebene12 and !(CheckDeadUni12("a4",0x1E03,0x1E02))) OutputChar("b","B") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}{+} - else if (Ebene = 4) + else if(Ebene = 4) send {blind}: - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03B2) ; beta - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x21D2) ; Doppel-Pfeil rechts return neo_m: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a4",0x1E41,0x1E40) + if(Ebene12 and !(CheckDeadUni12("a4",0x1E41,0x1E40) or CheckDeadUni12("c6",0x1E43,0x1E42) - or CheckCompUni12("t",0x2122,0x2122) ; TM - or CheckCompUni12("s",0x2120,0x2120))) ; SM + or CheckCompUni12("t",0x2122,0x2122) ; TM + or CheckCompUni12("s",0x2120,0x2120))) ; SM OutputChar("m","M") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}`% - else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B9) + else if((Ebene = 4) and !(CheckDeadUni("c1",0x00B9) or CheckDeadUni("c5",0x2081))) Send {blind}{NumPad1} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03BC) ; griechisch mu, micro wäre 0x00B5 - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x21D4) ; doppelter Doppelpfeil (genau dann wenn) return neo_komma: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - if (GetKeyState("CapsLock","T")) + if(Ebene = 1) + if(GetKeyState("CapsLock","T")) send {blind}{Shift down},{Shift up} else send {blind}, - else if (Ebene = 2) - SendUnicodeChar(0x22EE) ; vertikale ellipse - else if (Ebene = 3) + else if(Ebene = 2) + SendUnicodeChar(0x22EE) ; vertikale ellipse + else if(Ebene = 3) send {blind}" - else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B2) + else if((Ebene = 4) and !(CheckDeadUni("c1",0x00B2) or CheckDeadUni("c5",0x2082))) Send {blind}{NumPad2} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03C1) ; rho - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x21D0) ; Doppelpfeil links return neo_punkt: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - if (GetKeyState("CapsLock","T")) + if(Ebene = 1) + if(GetKeyState("CapsLock","T")) send {blind}{Shift down}.{Shift up} else send {blind}. - else if (Ebene = 2) - SendUnicodeChar(0x2026) ; ellipse - else if (Ebene = 3) + else if(Ebene = 2) + SendUnicodeChar(0x2026) ; ellipse + else if(Ebene = 3) send {blind}' - else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B3) + else if((Ebene = 4) and !(CheckDeadUni("c1",0x00B3) or CheckDeadUni("c5",0x2083))) Send {blind}{NumPad3} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03D1) ; theta symbol (vartheta) - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x0398) ; Theta return neo_j: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("c1",0x0135,0x0134) + if(Ebene12 and !(CheckDeadUni12("c1",0x0135,0x0134) or CheckDeadUni12("c2",0x01F0,"") - or CheckCompUni("i",0x0133) ; ij - or CheckCompUni("l",0x01C9) ; lj - or CheckCompUni("n",0x01CC) ; nj - or CheckCompUni("I",0x0132) ; IJ - or CheckCompUni12("L",0x01C8,0x01C7) ; Lj/LJ + or CheckCompUni("i",0x0133) ; ij + or CheckCompUni("l",0x01C9) ; lj + or CheckCompUni("n",0x01CC) ; nj + or CheckCompUni("I",0x0132) ; IJ + or CheckCompUni12("L",0x01C8,0x01C7) ; Lj/LJ or CheckCompUni12("N",0x01CB,0x01CA))) ; Nj/NJ OutputChar("j","J") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}`; - else if (Ebene = 4) + else if(Ebene = 4) Send {blind}`; - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03B8) ; theta - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2261) ; identisch return @@ -1148,16 +1022,16 @@ return neo_NumLock: EbeneAktualisieren() - if (Ebene = 1) + if(Ebene = 1) send `= - if (Ebene = 2) ; Funktioniert nicht + if(Ebene = 2) ; Funktioniert nicht { SetNumLockState send {NumLock} } - if (Ebene = 3) + if(Ebene = 3) SendUnicodeChar(0x2248) ; Fast gleich - if (Ebene = 4) + if(Ebene = 4) SendUnicodeChar(0x2260) ; Ungleich zu return @@ -1165,9 +1039,9 @@ neo_NumpadDiv: EbeneAktualisieren() if Ebene14 send {blind}{NumpadDiv} - else if (Ebene = 2) - SendUnicodeChar(0x2215) ; Slash - else if (Ebene = 3) + else if(Ebene = 2) + SendUnicodeChar(0x2215) ; Slash + else if(Ebene = 3) send {blind}÷ return @@ -1175,30 +1049,30 @@ neo_NumpadMult: EbeneAktualisieren() if Ebene14 send {blind}{NumpadMult} - else if (Ebene = 2) - SendUnicodeChar(0x22C5) ; Cdot - else if (Ebene = 3) + else if(Ebene = 2) + SendUnicodeChar(0x22C5) ; Cdot + else if(Ebene = 3) send {blind}× return neo_NumpadSub: EbeneAktualisieren() - if (Ebene14 and !(CheckDeadUni("c1",0x207B) + if(Ebene14 and !(CheckDeadUni("c1",0x207B) or CheckDeadUni("c5",0x208B))) send {blind}{NumpadSub} - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x2212) ; Echtes Minus return neo_NumpadAdd: EbeneAktualisieren() - if (Ebene14 and !(CheckDeadUni("c1",0x207A) + if(Ebene14 and !(CheckDeadUni("c1",0x207A) or CheckDeadUni("c5",0x208A))) send {blind}{NumpadAdd} - else if (Ebene = 3) + else if(Ebene = 3) send {blind}± - else if (Ebene = 2) - SendUnicodeChar(0x2213) ; Inverses ± + else if(Ebene = 2) + SendUnicodeChar(0x2213) ; Inverses ± return neo_NumpadEnter: @@ -1207,20 +1081,20 @@ return neo_Numpad7: EbeneAktualisieren() - if (Ebene = 1) + if(Ebene = 1) { if NumLock send {blind}{Numpad7} else send {blind){Shift up}{Numpad7} - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "7" } - else if (Ebene = 2) + else if(Ebene = 2) SendUnicodeChar(0x2020) ; Kreuz - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x2195) ; Hoch-Runter-Pfeil - else if (Ebene = 4) + else if(Ebene = 4) if NumLock send {blind}{Shift up}{NumpadHome} else @@ -1229,23 +1103,23 @@ return neo_Numpad8: EbeneAktualisieren() - if ((Ebene = 1) and !(CheckCompUni("1",0x215B) ; 1/8 - or CheckCompUni("3",0x215C) ; 3/8 - or CheckCompUni("5",0x215D) ; 5/8 + if((Ebene = 1) and !(CheckCompUni("1",0x215B) ; 1/8 + or CheckCompUni("3",0x215C) ; 3/8 + or CheckCompUni("5",0x215D) ; 5/8 or CheckCompUni("7",0x215E))) ; 7/8 { if NumLock send {blind}{Numpad8} else send {blind){Shift up}{Numpad8} - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "8" } - else if (Ebene = 2) + else if(Ebene = 2) SendUnicodeChar(0x2229) ; Durchschnitt - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x2191) ; Hochpfeil - else if (Ebene = 4) + else if(Ebene = 4) if NumLock send {blind}{Shift up}{NumpadUp} else @@ -1254,20 +1128,20 @@ return neo_Numpad9: EbeneAktualisieren() - if (Ebene = 1) + if(Ebene = 1) { if NumLock send {blind}{Numpad9} else send {blind){Shift up}{Numpad9} - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "9" } - else if (Ebene = 2) + else if(Ebene = 2) SendUnicodeChar(0x2297) ; Tensorprodukt / Vektor in die Ebene zeigend - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x220D) ; Kleines umgekehrtes Elementzeichen - else if (Ebene = 4) + else if(Ebene = 4) if NumLock send {blind}{Shift up}{NumpadPgUp} else @@ -1276,21 +1150,21 @@ return neo_Numpad4: EbeneAktualisieren() - if ((Ebene = 1) and !(CheckCompUni("1",0x00BC) ; 1/4 - or CheckCompUni("3",0x00BE))) ; 3/4 + if((Ebene = 1) and !(CheckCompUni("1",0x00BC) ; 1/4 + or CheckCompUni("3",0x00BE))) ; 3/4 { if NumLock send {blind}{Numpad4} else send {blind){Shift up}{Numpad4} - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "4" } - else if (Ebene = 2) + else if(Ebene = 2) SendUnicodeChar(0x2282) ; Teilmenge - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x2190) ; Linkspfeil - else if (Ebene = 4) + else if(Ebene = 4) if NumLock send {blind}{Shift up}{NumpadLeft} else @@ -1299,23 +1173,23 @@ return neo_Numpad5: EbeneAktualisieren() - if ((Ebene = 1) and !(CheckCompUni("1",0x2155) ; 1/5 - or CheckCompUni("2",0x2156) ; 2/5 - or CheckCompUni("3",0x2157) ; 3/5 + if((Ebene = 1) and !(CheckCompUni("1",0x2155) ; 1/5 + or CheckCompUni("2",0x2156) ; 2/5 + or CheckCompUni("3",0x2157) ; 3/5 or CheckCompUni("4",0x2158))) ; 4/5 { if NumLock send {blind}{Numpad5} else send {blind){Shift up}{Numpad5} - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "5" } - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x221E) ; Unendlich - else if (Ebene = 2) + else if(Ebene = 2) SendUnicodeChar(0x20AC) ; Euro - else if (Ebene = 4) ; Beg + else if(Ebene = 4) ; Beg if NumLock send {NumPad5} else @@ -1324,21 +1198,21 @@ return neo_Numpad6: EbeneAktualisieren() - if ((Ebene = 1) and !(CheckCompUni("1",0x2159) ; 1/6 + if((Ebene = 1) and !(CheckCompUni("1",0x2159) ; 1/6 or CheckCompUni("5",0x215a))) ; 5/6 { if NumLock send {blind}{Numpad6} else send {blind){Shift up}{Numpad6} - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "6" } - else if (Ebene = 2) + else if(Ebene = 2) SendUnicodeChar(0x2283) ; Obermenge - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x2192) ; Rechtspfeil - else if (Ebene = 4) + else if(Ebene = 4) if NumLock send {blind}{Shift up}{NumpadRight} else @@ -1347,20 +1221,20 @@ return neo_Numpad1: EbeneAktualisieren() - if (Ebene = 1) + if(Ebene = 1) { if NumLock send {blind}{Numpad1} else send {blind){Shift up}{Numpad1} - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "1" } - else if (Ebene = 2) + else if(Ebene = 2) SendUnicodeChar(0x2714) ; Häkchen - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x2194) ; Links-Rechts-Pfeil - else if (Ebene = 4) + else if(Ebene = 4) if NumLock send {blind}{Shift up}{NumpadEnd} else @@ -1369,20 +1243,20 @@ return neo_Numpad2: EbeneAktualisieren() - if ((Ebene = 1) and !(CheckCompUni("1",0x00BD))) ; 1/2 + if((Ebene = 1) and !(CheckCompUni("1",0x00BD))) ; 1/2 { if NumLock send {blind}{Numpad2} else send {blind){Shift up}{Numpad2} - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "2" } - else if (Ebene = 2) + else if(Ebene = 2) SendUnicodeChar(0x222A) ; Vereinigung - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x2192) ; Untenpfeil - else if (Ebene = 4) + else if(Ebene = 4) if NumLock send {blind}{Shift up}{NumpadDown} else @@ -1391,21 +1265,21 @@ return neo_Numpad3: EbeneAktualisieren() - if ((Ebene = 1) and !(CheckCompUni("1",0x2153) ; 1/3 + if((Ebene = 1) and !(CheckCompUni("1",0x2153) ; 1/3 or CheckCompUni("5",0x2154))) ; 2/3 { if NumLock send {blind}{Numpad3} else send {blind){Shift up}{Numpad3} - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "3" } - else if (Ebene = 2) + else if(Ebene = 2) SendUnicodeChar(0x2718) ; Kreuzchen - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x2192) ; Rechtspfeil - else if (Ebene = 4) + else if(Ebene = 4) if NumLock send {blind}{Shift up}{NumpadPgDn} else @@ -1414,20 +1288,20 @@ return neo_Numpad0: EbeneAktualisieren() - if (Ebene = 1) + if(Ebene = 1) { if NumLock send {blind}{Numpad0} else send {blind){Shift up}{Numpad0} - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "0" } - else if (Ebene = 2) + else if(Ebene = 2) SendUnicodeChar(0x2030) ; Promille - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x0025) ; Prozent - else if (Ebene = 4) + else if(Ebene = 4) if NumLock send {blind}{Shift up}{NumpadIns} else @@ -1436,27 +1310,24 @@ return neo_NumpadDot: EbeneAktualisieren() - if (Ebene = 1) + if(Ebene = 1) { if NumLock send {blind}{NumpadDot} else send {blind){Shift up}{NumpadDot} } - else if (Ebene = 2) + else if(Ebene = 2) send `, - else if (Ebene = 3) + else if(Ebene = 3) send {blind}. - else if (Ebene = 4) + else if(Ebene = 4) if NumLock send {blind}{Shift up}{NumpadDel} else send {blind}{NumpadDel} return - - - /* Sondertasten @@ -1464,16 +1335,16 @@ return */ *space:: - if ((einHandNeo)) + if((einHandNeo)) spacepressed := 1 else goto neo_SpaceUp return *space up:: - if ((einHandNeo)) + if((einHandNeo)) { - if ((keypressed)) + if((keypressed)) { keypressed := 0 spacepressed := 0 @@ -1489,19 +1360,19 @@ return neo_SpaceUp: EbeneAktualisieren() - if ((Ebene = 1) and !(CheckComp3Uni("r_1",0x2170) ; römisch i - or CheckComp3Uni("R_1",0x2160))) ; römisch I + if((Ebene = 1) and !(CheckComp3Uni("r_1",0x2170) ; Römisch i + or CheckComp3Uni("R_1",0x2160))) ; Römisch I Send {blind}{Space} - else if ((Ebene = 2) or (Ebene = 3)) + else if ((Ebene = 2) or (Ebene = 3)) Send {blind}{Space} - else if (Ebene = 4 and !(CheckDeadUni("c1",0x2070) + else if(Ebene = 4 and !(CheckDeadUni("c1",0x2070) or CheckDeadUni("c5",0x2080))) Send {blind}{NumPad0} - else if (Ebene = 5) - SendUnicodeChar(0x00A0) ; geschütztes Leerzeichen - else if (Ebene = 6) + else if(Ebene = 5) + SendUnicodeChar(0x00A0) ; geschütztes Leerzeichen + else if(Ebene = 6) SendUnicodeChar(0x202F) ; schmales geschütztes Leerzeichen - DeadKey := "" CompKey := "" + DeadKey := "" CompKey := "" spacepressed := 0 keypressed := 0 return @@ -1513,39 +1384,37 @@ return */ *Enter:: - if (not(lernModus) or lernModus_std_Return) + if(not(lernModus) or lernModus_std_Return) { send {Blind}{Enter} - DeadKey := "" CompKey := "" + DeadKey := "" CompKey := "" } return *Backspace:: - if (not(lernModus) or lernModus_std_Backspace) + if(not(lernModus) or lernModus_std_Backspace) { send {Blind}{Backspace} - DeadKey := "" CompKey := "" + DeadKey := "" CompKey := "" } return - *Del:: - if (not(lernModus) or lernModus_std_Entf) + if(not(lernModus) or lernModus_std_Entf) send {Blind}{Del} return *Ins:: - if (not(lernModus) or lernModus_std_Einf) + if(not(lernModus) or lernModus_std_Einf) send {Blind}{Ins} return - /* Auf Mod3+Tab liegt Compose. */ neo_tab: - if (IsMod3Pressed()) ;# + if(IsMod3Pressed()) { DeadKey := "comp" CompKey := "" @@ -1559,70 +1428,65 @@ neo_tab: return *Home:: - if (not(lernModus) or lernModus_std_Pos1) + if(not(lernModus) or lernModus_std_Pos1) { send {Blind}{Home} - DeadKey := "" CompKey := "" + DeadKey := "" CompKey := "" } return *End:: - if (not(lernModus) or lernModus_std_Ende) + if(not(lernModus) or lernModus_std_Ende) { send {Blind}{End} - DeadKey := "" CompKey := "" + DeadKey := "" CompKey := "" } return *PgUp:: - if (not(lernModus) or lernModus_std_PgUp) + if(not(lernModus) or lernModus_std_PgUp) { send {Blind}{PgUp} - DeadKey := "" CompKey := "" + DeadKey := "" CompKey := "" } return *PgDn:: - if (not(lernModus) or lernModus_std_PgDn) + if(not(lernModus) or lernModus_std_PgDn) { send {Blind}{PgDn} - DeadKey := "" CompKey := "" + DeadKey := "" CompKey := "" } return *Up:: - if (not(lernModus) or lernModus_std_Hoch) + if(not(lernModus) or lernModus_std_Hoch) { send {Blind}{Up} - DeadKey := "" CompKey := "" + DeadKey := "" CompKey := "" } return *Down:: - if (not(lernModus) or lernModus_std_Runter) + if(not(lernModus) or lernModus_std_Runter) { send {Blind}{Down} - DeadKey := "" CompKey := "" + DeadKey := "" CompKey := "" } return *Left:: - if (not(lernModus) or lernModus_std_Links) + if(not(lernModus) or lernModus_std_Links) { send {Blind}{Left} - DeadKey := "" CompKey := "" + DeadKey := "" CompKey := "" } return *Right:: - if (not(lernModus) or lernModus_std_Rechts) + if(not(lernModus) or lernModus_std_Rechts) { send {Blind}{Right} - DeadKey := "" CompKey := "" + DeadKey := "" CompKey := "" } return - - - - - diff --git a/windows/autohotkey/Source/Methods-Layers.ahk b/windows/autohotkey/Source/Methods-Layers.ahk index 2d4e6e2..dd63c4c 100644 --- a/windows/autohotkey/Source/Methods-Layers.ahk +++ b/windows/autohotkey/Source/Methods-Layers.ahk @@ -61,10 +61,6 @@ IsMod4Locked := 0 } return -Ebene12 := 0 -Ebene7 := 0 -Ebene8 := 0 - EbeneAktualisieren() { global @@ -73,6 +69,8 @@ EbeneAktualisieren() DeadKey := "" CompKey := "" Modstate := IsMod4Pressed() . IsMod3Pressed() . IsShiftPressed() + Ebene7 := 0 + Ebene8 := 0 if ahkTreiberKombi if ( Modstate = "001") Ebene = 6 @@ -103,23 +101,23 @@ EbeneAktualisieren() } Ebene12 := ((Ebene = 1) or (Ebene = 2)) Ebene14 := ((Ebene = 1) or (Ebene = 4)) - GetKeyState("NumLock","T") + NumLock := GetKeyState("NumLock","T") } - IsShiftPressed() { global if GetKeyState("Shift","P") - if isMod2Locked + if isMod2Locked and !noCaps return 0 else return 1 else - if isMod2Locked + if isMod2Locked and !noCaps return 1 else return 0 + noCaps = 0 } IsMod3Pressed() diff --git a/windows/autohotkey/Source/Methods-Lights.ahk b/windows/autohotkey/Source/Methods-Lights.ahk index 860d583..d62af27 100644 --- a/windows/autohotkey/Source/Methods-Lights.ahk +++ b/windows/autohotkey/Source/Methods-Lights.ahk @@ -20,55 +20,49 @@ ------------------------------------------------------ */ -KeyboardLED(LEDvalue, Cmd) ; LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4 ; Cmd = on/off/switch -{ +KeyboardLED(LEDvalue, Cmd){ ; LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4 ; Cmd = on/off/switch Static h_device If ! h_device ; initialise - { - device =\Device\KeyBoardClass0 + { + 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) + } + 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")) + 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) + ; 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 ) + 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 ) -{ +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) -{ +NtCreateFileLED(ByRef wfilename,desiredaccess,sharemode,createdist,flags,fattribs){ VarSetCapacity(fh,4,0) VarSetCapacity(objattrib,24,0) VarSetCapacity(io,8,0) @@ -84,23 +78,19 @@ NtCreateFileLED(ByRef wfilename,desiredaccess,sharemode,createdist,flags,fattrib return ExtractIntegerLED(fh) } - -SetUnicodeStrLED(ByRef out, str_) -{ +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) +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) @@ -109,11 +99,9 @@ ExtractIntegerLED(ByRef pSource, pOffset = 0, pIsSigned = false, pSize = 4) return -(0xFFFFFFFF - result + 1) } - -InsertIntegerLED(pInteger, ByRef pDest, pOffset = 0, pSize = 4) +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) } diff --git a/windows/autohotkey/Source/Methods-Other.ahk b/windows/autohotkey/Source/Methods-Other.ahk index dbd17d7..2e9c928 100644 --- a/windows/autohotkey/Source/Methods-Other.ahk +++ b/windows/autohotkey/Source/Methods-Other.ahk @@ -1,159 +1,95 @@ -BSSendUnicodeChar(charCode) -{ - send {bs} - SendUnicodeChar(charCode) -} - -CompUnicodeChar(charCode) -{ - send {bs} - SendUnicodeChar(charCode) -} - -Comp3UnicodeChar(charCode) -{ - send {bs}{bs} - SendUnicodeChar(charCode) -} - -deadAsc(val) -{ +deadAsc(val){ global - if (DeadSilence) - {} ; keine Ausgabe - else - send % "{blind}" . val + if!(DeadSilence) + send % val } -deadUni(val) -{ +deadUni(val){ global - if (DeadSilence) - {} ; keine Ausgabe - else + if!(DeadSilence) SendUnicodeChar(val) } -undeadAsc(val) -{ +undeadAsc(val){ global - if (DeadSilence) - send % "{blind}" . val + if(DeadSilence) + send % val else - send % "{blind}{bs}" . val + send % "{bs}" . val } -undeadUni(val) -{ +undeadUni(val){ global - if (DeadSilence) - {} ; keine ausgabe - else + if!(DeadSilence) send {bs} - SendUnicodeChar(val) + SendUnicodeChar(val) } -CheckDeadAsc(d,val) -{ +CheckDeadAsc(d,val){ global - if (PriorDeadKey == d) - { + if(PriorDeadKey == d){ undeadAsc(val) return 1 - } - else - return 0 + }else return 0 } -CheckDeadUni(d,val) -{ +CheckDeadUni(d,val){ global - if (PriorDeadKey == d) - { + if(PriorDeadKey == d){ undeadUni(val) return 1 - } - else - return 0 + }else return 0 } -CheckDeadAsc12(d,val1,val2) -{ +CheckDeadAsc12(d,val1,val2){ global - if (PriorDeadKey == d) - { - if ((Ebene = 1) and (val1 != "")) - { + if(PriorDeadKey == d){ + if((Ebene = 1) and (val1 != "")){ undeadAsc(val1) return 1 - } - else if ((Ebene = 2) and (val2 != "")) - { + }else if((Ebene = 2) and (val2 != "")){ undeadAsc(val2) return 1 - } - else - return 0 - } - else - return 0 + }else return 0 + }else return 0 } -CheckDeadUni12(d,val1,val2) -{ +CheckDeadUni12(d,val1,val2){ global - if (PriorDeadKey == d) - { - if ((Ebene = 1) and (val1 != "")) - { + if(PriorDeadKey == d){ + if((Ebene = 1) and (val1 != "")){ undeadUni(val1) return 1 - } - else if ((Ebene = 2) and (val2 != "")) - { + }else if((Ebene = 2) and (val2 != "")){ undeadUni(val2) return 1 - } - else - return 0 - } - else - return 0 + }else return 0 + }else return 0 } -compAsc(val) -{ +compAsc(val){ global - if (DeadCompose) - {} ; keine Ausgabe - else - send % "{blind}" . val + if!(DeadCompose) + send % val } -compUni(val) -{ +compUni(val){ global - if (DeadCompose) - {} ; keine Ausgabe - else + if!(DeadCompose) SendUnicodeChar(val) } -uncompAsc(val) -{ +uncompAsc(val){ global - if (DeadCompose) - send % "{blind}" . val - else - send % "{blind}{bs}" . val + if(DeadCompose) + send % val + else send % "{bs}" . val } uncompUni(val) { global - if (DeadCompose) - {} ; keine ausgabe - else + if!(DeadCompose) send {bs} SendUnicodeChar(val) } @@ -161,126 +97,91 @@ uncompUni(val) uncomp3Uni(val) { global - if (DeadCompose) - {} ; keine ausgabe - else + if!(DeadCompose) send {bs}{bs} SendUnicodeChar(val) } -CheckCompAsc(d,val) -{ +CheckCompAsc(d,val){ global - if (PriorCompKey == d) - { + if(PriorCompKey == d){ uncompAsc(val) return 1 - } - else - return 0 + }else return 0 } -CheckCompAsc12(d,val1,val2) -{ +CheckCompAsc12(d,val1,val2){ global - if (PriorCompKey == d) - if ((Ebene = 1) and (val1 != "")) - { + if(PriorCompKey == d) + if((Ebene = 1) and (val1 != "")){ uncompAsc(val1) return 1 - } - else if ((Ebene = 2) and (val2 != "")) - { + }else if((Ebene = 2) and (val2 != "")){ uncompAsc(val2) return 1 - } - else - return 0 - else - return 0 + }else return 0 + else return 0 } -CheckCompUni(d,val) -{ +CheckCompUni(d,val){ global - if (PriorCompKey == d) - { + if(PriorCompKey == d){ uncompUni(val) return 1 - } - else - return 0 + }else return 0 } -CheckCompUni12(d,val1,val2) -{ +CheckCompUni12(d,val1,val2){ global - if (PriorCompKey == d) - { - if ((Ebene = 1) and (val1 != "")) - { + if(PriorCompKey == d){ + if ((Ebene = 1) and (val1 != "")){ uncompUni(val1) return 1 - } - else if ((Ebene = 2) and (val2 != "")) - { + }else if((Ebene = 2) and (val2 != "")){ uncompUni(val2) return 1 - } - else - return 0 - } - else - return 0 + }else return 0 + }else return 0 } -CheckComp3Uni(d,val) -{ +CheckComp3Uni(d,val){ global - if (PriorCompKey == d) - { + if(PriorCompKey == d){ uncomp3Uni(val) return 1 - } - else - return 0 + }else return 0 } -CheckComp3Uni12(d,val1,val2) -{ +CheckComp3Uni12(d,val1,val2){ global - if (PriorCompKey == d) - { - if ((Ebene = 1) and (val1 != "")) - { + if(PriorCompKey == d){ + if((Ebene = 1) and (val1 != "")){ uncomp3Uni(val1) return 1 - } - else if ((Ebene = 2) and (val2 != "")) - { + }else if((Ebene = 2) and (val2 != "")){ uncomp3Uni(val2) return 1 - } - else - return 0 - } - else - return 0 + }else return 0 + }else return 0 } -outputChar(val1,val2) -{ +outputChar(val1,val2){ global - if (Ebene = 1) + if(Ebene = 1) c := val1 else c := val2 - if GetKeyState("Shift","P") and isMod2Locked + if GetKeyState("Shift","P") and isMod2Locked send % "{blind}{Shift Up}" . c . "{Shift Down}" else send % "{blind}" . c - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := c } - +checkComp(d){ + if(PriorDeadKey = "comp"){ + CompKey := d + return 1 + } +} diff --git a/windows/autohotkey/Source/Methods-ScreenKeyboard.ahk b/windows/autohotkey/Source/Methods-ScreenKeyboard.ahk index a64c426..5cfd18b 100644 --- a/windows/autohotkey/Source/Methods-ScreenKeyboard.ahk +++ b/windows/autohotkey/Source/Methods-ScreenKeyboard.ahk @@ -3,67 +3,60 @@ BildschirmTastatur ------------------------------------------------------ */ + guiErstellt = 0 alwaysOnTop = 1 *F1:: - if (isMod4Pressed() and zeigeBildschirmTastatur) + if(isMod4Pressed()&&zeigeBildschirmTastatur) goto Switch1 - else - send {blind}{F1} + else send {blind}{F1} return *F2:: - if (isMod4Pressed() and zeigeBildschirmTastatur) + if(isMod4Pressed()&&zeigeBildschirmTastatur) goto Switch2 - else - send {blind}{F2} + else send {blind}{F2} return *F3:: - if (isMod4Pressed() and zeigeBildschirmTastatur) + if(isMod4Pressed()&&zeigeBildschirmTastatur) goto Switch3 - else - send {blind}{F3} + else send {blind}{F3} return *F4:: - if (isMod4Pressed() and zeigeBildschirmTastatur) + if(isMod4Pressed()&&zeigeBildschirmTastatur) goto Switch4 - else - send {blind}{F4} + else send {blind}{F4} return *F5:: - if (isMod4Pressed() and zeigeBildschirmTastatur) + if(isMod4Pressed()&&zeigeBildschirmTastatur) goto Switch5 - else - send {blind}{F5} + else send {blind}{F5} return *F6:: - if (isMod4Pressed() and zeigeBildschirmTastatur) + if(isMod4Pressed()&&zeigeBildschirmTastatur) goto Switch6 - else - send {blind}{F6} + else send {blind}{F6} return *F7:: - if (isMod4Pressed() and zeigeBildschirmTastatur) + if(isMod4Pressed()&&zeigeBildschirmTastatur) goto Show - else - send {blind}{F7} + else send {blind}{F7} return *F8:: - if (isMod4Pressed() and zeigeBildschirmTastatur) + if(isMod4Pressed()&&zeigeBildschirmTastatur) goto ToggleAlwaysOnTop - else - send {blind}{F8} + else send {blind}{F8} return Switch1: - tImage := ResourceFolder . "\ebene1.png" + tImage:=ResourceFolder . "\ebene1.png" goto Switch Return diff --git a/windows/autohotkey/Source/Methods-Unicode.ahk b/windows/autohotkey/Source/Methods-Unicode.ahk index 3509261..b29f7ed 100644 --- a/windows/autohotkey/Source/Methods-Unicode.ahk +++ b/windows/autohotkey/Source/Methods-Unicode.ahk @@ -2,71 +2,30 @@ ------------------------------------------------------ Methoden zum Senden von Unicode-Zeichen ------------------------------------------------------ -*/ - - -/************************************************************ - Alter Weg – Copy/Paste über die Zwischenablage -************************************************************/ -/* -Diese Variante sollte nicht mehr verwendet werden (könnte jedoch unter Umständen noch zu Testzwecken hilfreich sein). - -hat den Vorteil, dass sie etwas kompatibler ist (es ist kein separater GTK-Workarround notwendig). Stefan zufolge wurde sie schon einmal getestet, dann jedoch wieder verworfen. - -Das Problem war vor allem, daß bei einer etwas größeren Rechnerauslastung kein normales Schreiben mehr möglich war. Nicht nur, daß die Perfomanz sehr schlecht war (es dauerte lange, bis die Buchstaben überhaupt erschienen) -- viel schlimmer war, daß die Reihenfolge der Tastatureingabe nicht mehr eingehalten wurde, sondern die genommen wurde, die in der Zwischenablage war: genau umgekehrt. -*/ - -/* -Unicode(code) -{ - saved_clipboard := ClipboardAll - Transform, Clipboard, Unicode, %code% - sendplay ^v - Clipboard := saved_clipboard -} - -BSUnicode(code) -{ - saved_clipboard := ClipboardAll - Transform, Clipboard, Unicode, %code% - sendplay {bs}^v - Clipboard := saved_clipboard -} -*/ - -/************************************************************ - Neuer Weg – Benutzung der entsprechenden Win32-API-Methode -************************************************************/ - -/* Ü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) - } +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) + } } -EncodeInteger(ref, val) -{ - DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val) +EncodeInteger(ref,val){ + DllCall("ntdll\RtlFillMemoryUlong","Uint",ref,"Uint",4,"Uint",val) } diff --git a/windows/autohotkey/neo20.ahk b/windows/autohotkey/neo20.ahk index 1211701..cb97fbb 100644 --- a/windows/autohotkey/neo20.ahk +++ b/windows/autohotkey/neo20.ahk @@ -1,4 +1,29 @@ +/****************** +* Initialisierung * +******************* +*/ +DeadKey = "" +CompKey = "" +PriorDeadKey = "" +PriorCompKey = "" +Ebene12 = 0 +noCaps = 0 + +EbeneAktualisieren() +SetBatchLines -1 +SetCapsLockState AlwaysOff SetNumLockState AlwaysOff +SetScrollLockState AlwaysOff +KeyboardLED(6,"off") + +name=Neo 2.0 (%A_ScriptName%) +enable=Aktiviere %name% +disable=Deaktiviere %name% +#usehook on +#singleinstance force +#LTrim ; Quelltext kann eingerückt werden, +Process,Priority,,High +SendMode Input /**************** * Verzeichnisse * @@ -13,132 +38,86 @@ FileCreateDir, %ResourceFolder% 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: -; Syntaxhinweis: IniRead, Variable, InputFilename, Section, Key [, DefaultValue] ; 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] + ; Sollen Ebenen 1-4 ignoriert werden (kann z.B. vom dll Treiber übernommen werden)? -IniRead, ahkTreiberKombi, %ApplicationFolder%\NEO2.ini, Global, ahkTreiberKombi, 0 +IniRead,ahkTreiberKombi,%ini%,Global,ahkTreiberKombi,0 ; Soll der Treiber im Einhandmodus betrieben werden? -IniRead, einHandNeo, %ApplicationFolder%\NEO2.ini, Global, einHandNeo, 0 +IniRead,einHandNeo,%ini%,Global,einHandNeo,0 ; Soll der Lernmodus aktiviert werden? -IniRead, lernModus, %ApplicationFolder%\NEO2.ini, Global, lernModus, 0 +IniRead,lernModus,%ini%,Global,lernModus,0 ; Soll mit einer MsgBox explizit auf das Ein- und Ausschalten des Mod4-Locks hingewiesen werden? -IniRead, zeigeLockBox, %ApplicationFolder%\NEO2.ini, Global, zeigeLockBox, 1 +IniRead,zeigeLockBox,%ini%,Global,zeigeLockBox,1 ; Soll aktivierter Mod4-Lock über die Rollen-LED des Keybord angezeigt werden (analog zu CapsLock)? -IniRead, UseMod4Light, %ApplicationFolder%\NEO2.ini, Global, UseMod4Light, 1 +IniRead,UseMod4Light,%ini%,Global,UseMod4Light,1 ; Soll Lang-s auf s, s auf ß und ß auf Lang-s gelegt (bzw. vertauscht) werden? -IniRead, LangSTastatur, %ApplicationFolder%\NEO2.ini, Global, LangSTastatur, 0 +IniRead,LangSTastatur,%ini%,Global,LangSTastatur,0 +If LangSTastatur + KeyboardLED(2,"on") ; Sollen tote Tasten blind angezeigt werden? -IniRead, DeadCompose, %ApplicationFolder%\NEO2.ini, Global, DeadCompose, 0 +IniRead,DeadCompose,%ini%,Global,DeadCompose,0 ;Sollen Compose-Tasten blind angezeigt werden? -IniRead, DeadSilence, %ApplicationFolder%\NEO2.ini, Global, DeadSilence, 0 +IniRead,DeadSilence,%ini%,Global,DeadSilence,0 /*********************** * Recourcen-Verwaltung * ************************ */ - -if(FileExist("ResourceFolder") <> false) { +if(FileExist("ResourceFolder")<>false){ ; Versuche, alle möglicherweise in die EXE eingebundenen Dateien zu extrahieren - FileInstall, neo.ico, %ResourceFolder%\neo.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. + FileInstall,neo.ico,%ResourceFolder%\neo.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.ico") && FileExist("neo_disabled.ico") ) - iconBenutzen = 1 - - -/************************** -* lernModus Konfiguration * -* nur relevant wenn * -* lernModus = 1 * -* Strg+Komma schaltet um * -*************************** +if(FileExist("ebene1.png")&&FileExist("ebene2.png")&&FileExist("ebene3.png")&&FileExist("ebene4.png")&&FileExist("ebene5.png")&&FileExist("ebene6.png")) + zeigeBildschirmTastatur=1 +if(FileExist("neo.ico")&&FileExist("neo_disabled.ico")) + iconBenutzen=1 + +/******************************************* +* Überprüfung auf deutsches Tastaturlayout * +******************************************** */ -; 0 = aus, 1 = an - -; 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 - -; aus Noras Skript kopiert: -Process,Priority,,High -#usehook on -#singleinstance force -#LTrim - ; Quelltext kann eingerückt werden, - ; msgbox ist trotzdem linksbündig -SetTitleMatchMode 2 -SendMode Input -name = Neo 2.0 -enable = Aktiviere %name% -disable = Deaktiviere %name% - -; Ü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% -if inputlocale <> 00000407 +regread,inputlocale,HKEY_CURRENT_USER,Keyboard Layout\Preload,1 +regread,inputlocalealias,HKEY_CURRENT_USER,Keyboard Layout\Substitutes,%inputlocale% +if inputlocalealias<>inputlocale=%inputlocalealias% +if inputlocale<>00000407 { suspend - regread, inputlocale, HKEY_LOCAL_MACHINE - , SYSTEM\CurrentControlSet\Control\Keyboard Layouts\%inputlocale% - , Layout Text - msgbox, 48, Warnung!, + regread,inputlocale,HKEY_LOCAL_MACHINE,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\%inputlocale%,Layout Text + msgbox, 48, Warnung!, ( Nicht kompatibles Tastaturlayout: `t%inputlocale% @@ -153,87 +132,39 @@ if inputlocale <> 00000407 exitapp } - -; Menü des Systray-Icons -; ---------------------- - -if (iconBenutzen) - menu, tray, icon, %ResourceFolder%\neo.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, default, %disable% -menu, tray, add -menu, tray, add, Edit, edit -menu, tray, add, Reload, reload -menu, tray, add -menu, tray, add, Nicht im Systray anzeigen, hide -menu, tray, add, %name% beenden, exitprogram -menu, tray, tip, %name% - - -/* - Variablen initialisieren +/************************* +* Menü des Systray-Icons * +************************** */ - -DeadKey = "" -CompKey = "" -PriorDeadKey = "" -PriorCompKey = "" -Ebene12 = 0 - -EbeneAktualisieren() - - -/* - EinHandNeo +if (iconBenutzen) + menu,tray,icon,%ResourceFolder%\neo.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% + +/********************** +* Tastenkombinationen * +*********************** */ -spacepressed := 0 -keypressed:= 0 - -; Reihe 1 -gespiegelt_7 = neo_6 -gespiegelt_8 = neo_5 -gespiegelt_9 = neo_4 -gespiegelt_0 = neo_3 -gespiegelt_strich = neo_2 -gespiegelt_tot2 = neo_1 - -; Reihe 2 -gespiegelt_k = neo_w -gespiegelt_h = neo_c -gespiegelt_g = neo_l -gespiegelt_f = neo_v -gespiegelt_q = neo_x -gespiegelt_sz = neo_tab -gespiegelt_tot3 = neo_tot1 - -; Reihe 3 -gespiegelt_s = neo_o -gespiegelt_n = neo_e -gespiegelt_r = neo_a -gespiegelt_t = neo_i -gespiegelt_d = neo_u - -; Reihe 4 -gespiegelt_b = neo_z -gespiegelt_m = neo_p -gespiegelt_komma = neo_ä -gespiegelt_punkt = neo_ö -gespiegelt_j = neo_ü - - ;Blinde/Sichtbare Tote Tasten *F9:: if (isMod4pressed()) - DeadSilence := not(DeadSilence) + DeadSilence := not(DeadSilence) else send {blind}{F9} return @@ -241,19 +172,25 @@ return ;Blinde/Sichtbare Compose *F10:: if (isMod4pressed()) - DeadCompose := not(DeadCompose) + DeadCompose := not(DeadCompose) else send {blind}{F10} return ;Lang-s-Tastatur: *F11:: - if (isMod4pressed()) - LangSTastatur := not(LangSTastatur) ; schaltet die Lang-s-Tastatur ein und aus + if (isMod4pressed()){ + LangSTastatur := not(LangSTastatur) + if LangSTastatur + KeyboardLED(2,"on") + else KeyboardLED(2,"off") + } else send {blind}{F11} return +;Alle Modi und Locks in den Normalzustand versetzen +;bzw. Skript neu laden: *Esc:: if (isMod4pressed()) reload @@ -261,71 +198,58 @@ return send {blind}{Esc} return -/* - ------------------------------------------------------ - Shift+Pause "pausiert" das Skript. - ------------------------------------------------------ -*/ - *pause:: Suspend, Permit - if isshiftpressed() - goto togglesuspend - else - send {blind}{pause} + if isShiftpressed() + goto togglesuspend + else + send {blind}{pause} return -; ------------------------------------ - -^.::einHandNeo := not(einHandNeo) ; Punkt -^,::lernModus := not(lernModus) ; Komma - - - +/***************** +* Menüfunktionen * +****************** +*/ togglesuspend: - if A_IsSuspended - { - menu, tray, rename, %enable%, %disable% - menu, tray, tip, %name% - if (iconBenutzen) - menu, tray, icon, %ResourceFolder%\neo.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 - } - + if A_IsSuspended + { + menu, tray, rename, %enable%, %disable% + menu, tray, tip, %name% + if (iconBenutzen) + menu, tray, icon, %ResourceFolder%\neo.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 - ) + 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 @@ -354,6 +278,78 @@ exitprogram: exitapp return +/************************** +* lernModus Konfiguration * +* nur relevant wenn * +* lernModus = 1 * +* Strg+Komma schaltet um * +*************************** +*/ +^,::lernModus := not(lernModus) + +; 0 = aus, 1 = an + +; 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 + +/**************************** +* EinHandNeo * +* Umschalten mit Strg+Punkt * +***************************** +*/ +^.::einHandNeo := not(einHandNeo) + +spacepressed := 0 +keypressed:= 0 + +; Reihe 1 +gespiegelt_7 = neo_6 +gespiegelt_8 = neo_5 +gespiegelt_9 = neo_4 +gespiegelt_0 = neo_3 +gespiegelt_strich = neo_2 +gespiegelt_tot2 = neo_1 + +; Reihe 2 +gespiegelt_k = neo_w +gespiegelt_h = neo_c +gespiegelt_g = neo_l +gespiegelt_f = neo_v +gespiegelt_q = neo_x +gespiegelt_sz = neo_tab +gespiegelt_tot3 = neo_tot1 + +; Reihe 3 +gespiegelt_s = neo_o +gespiegelt_n = neo_e +gespiegelt_r = neo_a +gespiegelt_t = neo_i +gespiegelt_d = neo_u + +; Reihe 4 +gespiegelt_b = neo_z +gespiegelt_m = neo_p +gespiegelt_komma = neo_ä +gespiegelt_punkt = neo_ö +gespiegelt_j = neo_ü + ; LShift+RShift == CapsLock (simuliert) ; Es werden nur die beiden Tastenkombinationen abgefragt, @@ -418,10 +414,6 @@ IsMod4Locked := 0 } return -Ebene12 := 0 -Ebene7 := 0 -Ebene8 := 0 - EbeneAktualisieren() { global @@ -430,6 +422,8 @@ EbeneAktualisieren() DeadKey := "" CompKey := "" Modstate := IsMod4Pressed() . IsMod3Pressed() . IsShiftPressed() + Ebene7 := 0 + Ebene8 := 0 if ahkTreiberKombi if ( Modstate = "001") Ebene = 6 @@ -460,23 +454,23 @@ EbeneAktualisieren() } Ebene12 := ((Ebene = 1) or (Ebene = 2)) Ebene14 := ((Ebene = 1) or (Ebene = 4)) - GetKeyState("NumLock","T") + NumLock := GetKeyState("NumLock","T") } - IsShiftPressed() { global if GetKeyState("Shift","P") - if isMod2Locked + if isMod2Locked and !noCaps return 0 else return 1 else - if isMod2Locked + if isMod2Locked and !noCaps return 1 else return 0 + noCaps = 0 } IsMod3Pressed() @@ -1000,407 +994,288 @@ Die eigentliche NEO-Belegung und der Hauptteil des AHK-Treibers. Reihe 1 */ - neo_tot1: + noCaps=1 EbeneAktualisieren() - if (Ebene = 1) - { + if(Ebene=1){ deadUni(0x02C6) ; Zirkumflex, tot - DeadKey := "c1" - } - else if (Ebene = 2) - { + DeadKey=c1 + }else if(Ebene = 2){ deadUni(0x02C7) ; Caron, tot - DeadKey := "c2" - } - else if (Ebene = 3) - { + DeadKey=c2 + }else if(Ebene = 3){ deadUni(0x02D8) ; Brevis, tot - DeadKey := "c3" - } - else if (Ebene = 4) - { + DeadKey=c3 + }else if Ebene7 + SendUnicodeChar(0x0302) ; Verbindungszeichen Zirkumflex + else if Ebene8 + SendUnicodeChar(0x0306) ; Verbindungszeichen Brevis + else if(Ebene = 4){ deadUni(0x00B7) ; Mittenpunkt, tot - DeadKey := "c4" - } - else if (Ebene = 5) - { + DeadKey=c4 + }else if(Ebene = 5){ deadUni(0x002D) ; Querstrich, tot - DeadKey := "c5" - } - else if (Ebene = 6) - { - deadUni(0x002E) ; Punkt drunter (Colon), tot - DeadKey := "c6" - } - CompKey := PriorCompKey + DeadKey=c5 + }else if(Ebene = 6){ + deadUni(0x0323) ; Punkt drunter (Colon), tot + DeadKey=c6 + }CompKey := PriorCompKey return neo_1: + noCaps=1 EbeneAktualisieren() - if (Ebene = 1) - { - if !(CheckDeadUni("c1",0x00B9) - or CheckDeadUni("c5",0x2081) - or CheckComp3Uni("r_1",0x217A) ; römisch xi - or CheckComp3Uni("R_1",0x216A)) ; römisch XI - if (GetKeyState("CapsLock","T")) - send {blind}{Shift down}1{Shift up} - else if (not(lernModus) or lernModus_std_ZahlenReihe) - send {blind}1 - - if (PriorDeadKey = "comp") - CompKey := "1" - else if (PriorCompKey == "r") - CompKey := "r_1" - else if (PriorCompKey == "R") - CompKey := "R_1" - } - else if (Ebene = 2) - send ° - else if (Ebene = 3) - SendUnicodeChar(0x00B9) ; Hochgestellte 2 - else if (Ebene = 4) - SendUnicodeChar(0x2022) ; Bullet - else if (Ebene = 5) - SendUnicodeChar(0x2640) ; Piktogramm weiblich - else if (Ebene = 6) - SendUnicodeChar(0x00AC) ; Nicht-Symbol + if Ebene12{ + if!(CheckDeadUni("c1",0x00B9) ; Hochgestellte 1 + or CheckDeadUni("c5",0x2081) ; Tiefgestellte 1 + or CheckComp3Uni("r_1",0x217A) ; Römisch xi + or CheckComp3Uni("R_1",0x216A)) ; Römisch XI + outputChar(1,"°") + if!(checkComp(1)) + if(PriorCompKey == "r") + CompKey := "r_1" + else if(PriorCompkey == "R") + CompKey := "R_1" + }else if(Ebene = 3) + SendUnicodeChar(0x00B9) ; Hochgestellte 1 + else if(Ebene = 4) + SendUnicodeChar(0x2022) ; Bullet + else if(Ebene = 5) + SendUnicodeChar(0x2640) ; Piktogramm weiblich + else if(Ebene = 6) + SendUnicodeChar(0x00AC) ; Nicht-Symbol return neo_2: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - { - if !(CheckDeadUni("c1",0x00B2) - or CheckDeadUni("c5",0x2082) - or CheckCompUni("r",0x2171) ; römisch ii - or CheckCompUni("R",0x2161) ; römisch II - or CheckComp3Uni("r_1",0x217B) ; römisch xii - or CheckComp3Uni("R_1",0x216B)) ; römisch XII - if (GetKeyState("CapsLock","T")) - send {blind}{Shift down}2{Shift up} - else if (not(lernModus) or lernModus_std_ZahlenReihe) - send {blind}2 - - if (PriorDeadKey = "comp") - CompKey := "2" - } - else if (Ebene = 2) + if(Ebene = 1){ + if!(CheckDeadUni("c1",0x00B2) ; Hochgestellte 2 + or CheckDeadUni("c5",0x2082) ; Tiefgestellte 2 + or CheckCompUni("r",0x2171) ; Römisch ii + or CheckCompUni("R",0x2161) ; Römisch II + or CheckComp3Uni("r_1",0x217B) ; Römisch xii + or CheckComp3Uni("R_1",0x216B)) ; Römisch XII + outputChar(2,"") + checkComp(2) + }else if(Ebene = 2) SendUnicodeChar(0x2116) ; Numero - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x00B2) ; Hochgestellte 2 - else if (Ebene = 4) + else if(Ebene = 4) SendUnicodeChar(0x2023) ; Aufzählungspfeil - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x26A5) ; Piktogramm Zwitter - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2228) ; Logisches Oder return neo_3: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - { - if !(CheckDeadUni("c1",0x00B3) + if Ebene12{ + if!(CheckDeadUni("c1",0x00B3) or CheckDeadUni("c5",0x2083) - or CheckCompUni("1",0x2153) ; 1/3 - or CheckCompUni("2",0x2154) ; 2/3 - or CheckCompUni("r",0x2172) ; römisch iii - or CheckCompUni("R",0x2162)) ; römisch III - if (GetKeyState("CapsLock","T")) - send {blind}{Shift down}3{Shift up} - else if (not(lernModus) or lernModus_std_ZahlenReihe) - send {blind}3 - - if (PriorDeadKey = "comp") - CompKey := "3" - } - else if (Ebene = 2) - send § - else if (Ebene = 3) + or CheckCompUni("1",0x2153) ; 1/3 + or CheckCompUni("2",0x2154) ; 2/3 + or CheckCompUni("r",0x2172) ; Römisch iii + or CheckCompUni("R",0x2162)) ; Römisch III + outputChar(3,"§") + checkComp(3) + }else if(Ebene = 3) SendUnicodeChar(0x00B3) ; Hochgestellte 3 - else if (Ebene = 4) - { - CompKey := PriorCompKey - DeadKey := PriorDeadKey - } ; leer - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x2642) ; Piktogramm Mann - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2227) ; Logisches Und return neo_4: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - { - if !(CheckDeadUni("c1",0x2074) + if(Ebene = 1){ + if!(CheckDeadUni("c1",0x2074) or CheckDeadUni("c5",0x2084) - or CheckCompUni("r",0x2173) ; römisch iv - or CheckCompUni("R",0x2163)) ; römisch IV - if (GetKeyState("CapsLock","T")) - send {blind}{Shift down}4{Shift up} - else if (not(lernModus) or lernModus_std_ZahlenReihe) - send {blind}4 - - if (PriorDeadKey = "comp") - CompKey := "4" - } - else if (Ebene = 2) + or CheckCompUni("r",0x2173) ; Römisch iv + or CheckCompUni("R",0x2163)) ; Römisch IV + outputChar(4,"") + checkComp(4) + }else if(Ebene = 2) SendUnicodeChar(0x00BB) ; Double guillemot right - else if (Ebene = 3) - Send {blind}› ; Single guillemot right - else if (Ebene = 4) + else if(Ebene = 3) + Send {blind}› ; Single guillemot right + else if(Ebene = 4) Send {blind}{PgUp} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x2113) ; Script small L - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x22A5) ; Senkrecht return neo_5: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - { - if !(CheckDeadUni("c1",0x2075) + if(Ebene = 1){ + if!(CheckDeadUni("c1",0x2075) or CheckDeadUni("c5",0x2085) - or CheckCompUni("1",0x2155) ; 1/5 - or CheckCompUni("2",0x2156) ; 2/5 - or CheckCompUni("3",0x2157) ; 3/5 - or CheckCompUni("4",0x2158) ; 4/5 - or CheckCompUni("r",0x2174) ; römisch v - or CheckCompUni("R",0x2164)) ; römisch V - if (GetKeyState("CapsLock","T")) - send {blind}{Shift down}5{Shift up} - else if (not(lernModus) or lernModus_std_ZahlenReihe) - send {blind}5 - - if (PriorDeadKey = "comp") - CompKey := "5" - } - else if (Ebene = 2) + or CheckCompUni("1",0x2155) ; 1/5 + or CheckCompUni("2",0x2156) ; 2/5 + or CheckCompUni("3",0x2157) ; 3/5 + or CheckCompUni("4",0x2158) ; 4/5 + or CheckCompUni("r",0x2174) ; Römisch v + or CheckCompUni("R",0x2164)) ; Römisch V + outputChar(5,"") + checkComp(5) + }else if(Ebene = 2) SendUnicodeChar(0x00AB) ; Double guillemot left - else if (Ebene = 3) - Send {blind}‹ ; Single guillemot left - else if (Ebene = 4) - { - CompKey := PriorCompKey - DeadKey := PriorDeadKey - } ; leer - else if (Ebene = 5) + else if(Ebene = 3) + Send {blind}‹ ; Single guillemot left + else if(Ebene = 5) SendUnicodeChar(0x2020) ; Kreuz (Dagger) - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2221) ; Winkel return neo_6: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - { - if !(CheckDeadUni("c1",0x2076) + if(Ebene = 1){ + if!(CheckDeadUni("c1",0x2076) or CheckDeadUni("c5",0x2086) - or CheckCompUni("1",0x2159) ; 1/6 - or CheckCompUni("5",0x215A) ; 5/6 - or CheckCompUni("r",0x2175) ; römisch vi - or CheckCompUni("R",0x2165)) ; römisch VI - if (GetKeyState("CapsLock","T")) - send {blind}{Shift down}6{Shift up} - else if (not(lernModus) or lernModus_std_ZahlenReihe) - send {blind}6 - - if (PriorDeadKey = "comp") - CompKey := "6" - } - else if (Ebene = 2) - send € - else if (Ebene = 3) + or CheckCompUni("1",0x2159) ; 1/6 + or CheckCompUni("5",0x215A) ; 5/6 + or CheckCompUni("r",0x2175) ; Römisch vi + or CheckCompUni("R",0x2165)) ; Römisch VI + outputChar(6,"") + checkComp(6) + }else if(Ebene = 2) + SendUnicodeChar(0x20AC) + else if(Ebene = 3) send {blind}¢ - else if (Ebene = 4) + else if(Ebene = 4) send {blind}£ - else if (Ebene = 5) - { - CompKey := PriorCompKey - DeadKey := PriorDeadKey - } ; leer - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2225) ; parallel return neo_7: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - { - if !(CheckDeadUni("c1",0x2077) + if Ebene12{ + if!(CheckDeadUni("c1",0x2077) or CheckDeadUni("c5",0x2087) - or CheckCompUni("r",0x2176) ; römisch vii - or CheckCompUni("R",0x2166)) ; römisch VII - if (GetKeyState("CapsLock","T")) - send {blind}{Shift down}7{Shift up} - else if (not(lernModus) or lernModus_std_ZahlenReihe) - send {blind}7 - - if (PriorDeadKey = "comp") - CompKey := "7" - } - else if (Ebene = 2) - send $ - else if (Ebene = 3) + or CheckCompUni("r",0x2176) ; Römisch vii + or CheckCompUni("R",0x2166)) ; Römisch VII + outputChar(7,"$") + checkComp(7) + }else if(Ebene = 3) send {blind}¥ - else if (Ebene = 4) + else if(Ebene = 4) send {blind}¤ - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03BA) ; greek small letter kappa - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2209) ; nicht Element von return neo_8: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - { - if !(CheckDeadUni("c1",0x2078) + if Ebene12{ + if!(CheckDeadUni("c1",0x2078) or CheckDeadUni("c5",0x2088) - or CheckCompUni("1",0x215B) ; 1/8 - or CheckCompUni("3",0x215C) ; 3/8 - or CheckCompUni("5",0x215D) ; 5/8 - or CheckCompUni("7",0x215E) ; 7/8 - or CheckCompUni("r",0x2177) ; römisch viii - or CheckCompUni("R",0x2167)) ; römisch VIII - if (GetKeyState("CapsLock","T")) - send {blind}{Shift down}8{Shift up} - else if (not(lernModus) or lernModus_std_ZahlenReihe) - send {blind}8 - - if (PriorDeadKey = "comp") - CompKey := "8" - } - else if (Ebene = 2) - send „ - else if (Ebene = 3) + or CheckCompUni("1",0x215B) ; 1/8 + or CheckCompUni("3",0x215C) ; 3/8 + or CheckCompUni("5",0x215D) ; 5/8 + or CheckCompUni("7",0x215E) ; 7/8 + or CheckCompUni("r",0x2177) ; Römisch viii + or CheckCompUni("R",0x2167)) ; Römisch VIII + outputChar(8,"„") + checkComp(8) + }else if(Ebene = 3) send {blind}‚ - else if (Ebene = 4) + else if(Ebene = 4) Send {blind}{NumpadDiv} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x27E8) ; bra (öffnende spitze Klammer) - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2204) ; es existiert nicht return neo_9: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - { - if !(CheckDeadUni("c1",0x2079) + if Ebene12{ + if!(CheckDeadUni("c1",0x2079) or CheckDeadUni("c5",0x2089) - or CheckCompUni("r",0x2178) ; römisch ix - or CheckCompUni("R",0x2168)) ; römisch IX - if (GetKeyState("CapsLock","T")) - send {blind}{Shift down}9{Shift up} - else if (not(lernModus) or lernModus_std_ZahlenReihe) - send {blind}9 - - if (PriorDeadKey = "comp") - CompKey := "9" - } - else if (Ebene = 2) - send “ - else if (Ebene = 3) + or CheckCompUni("r",0x2178) ; Römisch ix + or CheckCompUni("R",0x2168)) ; Römisch IX + outputChar(9,"“") + checkComp(9) + }else if(Ebene = 3) send {blind}‘ - else if (Ebene = 4) + else if(Ebene = 4) Send {blind}{NumpadMult} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x27E9) ; ket (schließende spitze Klammer) - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2226) ; nicht parallel return neo_0: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - { - if !(CheckDeadUni("c1",0x2070) - or CheckDeadUni("c5",0x2080) - or CheckComp3Uni("r_1",0x2179) ; römisch x - or CheckComp3Uni("R_1",0x2169)) ; römisch X - if (GetKeyState("CapsLock","T")) - send {blind}{Shift down}0{Shift up} - else if (not(lernModus) or lernModus_std_ZahlenReihe) - send {blind}0 - - if (PriorDeadKey = "comp") - CompKey := "0" - } - else if (Ebene = 2) - send ” - else if (Ebene = 3) + if Ebene12{ + if!(CheckDeadUni("c1",0x2070) + or CheckDeadUni("c5",0x2080) ; Römisch x + or CheckComp3Uni("R_1",0x2169)) ; Römisch X + outputChar(0,"”") + checkComp(0) + }else if(Ebene = 3) send {blind}’ - else if (Ebene = 4) + else if(Ebene = 4) Send {blind}{NumpadSub} - else if (Ebene = 5) - { - CompKey := PriorCompKey - DeadKey := PriorDeadKey - } ; leer - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2205) ; leere Menge return neo_strich: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - if (GetKeyState("CapsLock","T")) - send {blind}{Shift down}-{Shift up} - else - send {blind}- ; Bindestrich-Minus - else if (Ebene = 2) + if(Ebene = 1) + outputChar("-","") ; Bindestrich-Minus + else if(Ebene = 2) SendUnicodeChar(0x2013) ; Gedankenstrich - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x2014) ; Englischer Gedankenstrich (Geviertstrich) - else if (Ebene = 4) ; leer - { - CompKey := PriorCompKey - DeadKey := PriorDeadKey - } - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x2011) ; geschützter Bindestrich (Bindestrich ohne Zeilenumbruch) - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x00AD) ; weicher Bindestrich return neo_tot2: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - { + if(Ebene = 1){ deadAsc("{´}{space}") ; Akut, tot DeadKey := "a1" - } - else if (Ebene = 2) - { - deadAsc("``{space}") ; Gravis, tot + }else if(Ebene = 2){ + deadAsc("``{space}") ; Gravis, tot DeadKey := "a2" - } - else if (Ebene = 3) - { - deadAsc("¸") ; Cedilla, tot + }else if(Ebene = 3){ + deadAsc("¸") ; Cedilla, tot DeadKey := "a3" - } - else if (Ebene = 4) - { - deadUni(0x02D9) ; Punkt obendrüber + }else if(Ebene = 4){ + deadUni(0x02D9) ; Punkt oben DeadKey := "a4" - } - else if (Ebene = 5) - { - deadUni(0x02DB) ; Ogonek + }else if(Ebene = 5){ + deadUni(0x02DB) ; Ogonek DeadKey := "a5" - } - else if (Ebene = 6) - { - deadUni(0x02DA) ; Ring obendrauf + }else if(Ebene = 6){ + deadUni(0x02DA) ; Ring oben DeadKey := "a6" - } - CompKey := PriorCompKey + }CompKey := PriorCompKey return @@ -1412,34 +1287,29 @@ return neo_x: EbeneAktualisieren() - if (Ebene12) + if(Ebene12) OutputChar("x","X") - else if (Ebene = 3) - SendUnicodeChar(0x2026) ;Ellipse horizontal - else if (Ebene = 4) - SendUnicodeChar(0x22EE) ;Ellipse vertikal - else if (Ebene = 5) - SendUnicodeChar(0x03BE) ;xi - else if (Ebene = 6) - SendUnicodeChar(0x039E) ;Xi + else if(Ebene = 3) + SendUnicodeChar(0x2026) ; Ellipse horizontal + else if(Ebene = 4) + SendUnicodeChar(0x22EE) ; Ellipse vertikal + else if(Ebene = 5) + SendUnicodeChar(0x03BE) ; xi + else if(Ebene = 6) + SendUnicodeChar(0x039E) ; Xi return neo_v: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("c6",0x1E7F,0x1E7E))) + if(Ebene12 and !(CheckDeadUni12("c6",0x1E7F,0x1E7E))) OutputChar("v","V") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}_ - else if (Ebene = 4) - if (not(lernModus) or lernModus_neo_Backspace) + else if(Ebene = 4) + if(not(lernModus) or lernModus_neo_Backspace) Send {blind}{Backspace} - else ; leer - { - CompKey := PriorCompKey - DeadKey := PriorDeadKey - } - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2259) ; estimates return @@ -1447,209 +1317,205 @@ return neo_l: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x013A,0x0139) + if(Ebene12 and !(CheckDeadUni12("a1",0x013A,0x0139) or CheckDeadUni12("a3",0x013C,0x013B) or CheckDeadUni12("c2",0x013E,0x013D) or CheckDeadUni12("c4",0x0140,0x013F) or CheckDeadUni12("c6",0x1E37,0x1E36) or CheckDeadUni12("t4",0x0142,0x0141))) OutputChar("l","L") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}[ - else if (Ebene = 4) + else if(Ebene = 4) Send {Blind}{Up} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03BB) ; lambda - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x039B) ; Lambda return neo_c: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x0107,0x0106) + if(Ebene12 and !(CheckDeadUni12("a1",0x0107,0x0106) or CheckDeadUni12("a3",0x00E7,0x00E6) or CheckDeadUni12("a4",0x010B,0x010A) or CheckDeadUni12("c1",0x0109,0x0108) or CheckDeadUni12("c2",0x010D,0x010C) or CheckCompAsc("o","©"))) OutputChar("c","C") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}] - else if (Ebene = 4) - if (not(lernModus) or lernModus_neo_Entf) + else if(Ebene = 4) + if(not(lernModus) or lernModus_neo_Entf) Send {blind}{Del} - else ; leer - { - CompKey := PriorCompKey - DeadKey := PriorDeadKey - } - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03C7) ; chi - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2102) ; C (Komplexe Zahlen) return neo_w: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("c1",0x0175,0x0174))) + if(Ebene12 and !(CheckDeadUni12("c1",0x0175,0x0174))) OutputChar("w","W") - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x005E) ; Zirkumflex - else if (Ebene = 4) + else if(Ebene = 4) Send {blind}{Insert} ; Einfg - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03C9) ; omega - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x03A9) ; Omega return neo_k: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a3",0x0137,0x0136) + if(Ebene12 and !(CheckDeadUni12("a3",0x0137,0x0136) or CheckDeadUni12("c6",0x1E33,0x1E32))) OutputChar("k","K") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}{!} - else if (Ebene = 4) + else if(Ebene = 4) Send ¡ - else if (Ebene = 5) - SendUnicodeChar(0x03F0) ;kappa symbol (varkappa) - else if (Ebene = 6) + else if(Ebene = 5) + SendUnicodeChar(0x03F0) ; kappa symbol (varkappa) + else if(Ebene = 6) SendUnicodeChar(0x221A) ; Wurzel return neo_h: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a4",0x1E23,0x1E22) + if(Ebene12 and !(CheckDeadUni12("a4",0x1E23,0x1E22) or CheckDeadUni12("c1",0x0125,0x0124) or CheckDeadUni12("c5",0x0127,0x0126) or CheckDeadUni12("c6",0x1E25,0x1E24))) OutputChar("h","H") - else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2264))) ; kleiner gleich + else if((Ebene = 3) and !(CheckDeadUni("c5",0x2264))) ; kleiner gleich send {blind}< - else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2077) + else if((Ebene = 4) and !(CheckDeadUni("c1",0x2077) or CheckDeadUni("c5",0x2087))) Send {blind}{NumPad7} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03C8) ; psi - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x03A8) ; Psi return neo_g: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a3",0x0123,0x0122) + if(Ebene12 and !(CheckDeadUni12("a3",0x0123,0x0122) or CheckDeadUni12("a4",0x0121,0x0120) or CheckDeadUni12("c1",0x011D,0x011C) or CheckDeadUni12("c3",0x011F,0x011E))) OutputChar("g","G") - else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2265))) - send {blind}> ; größer gleich - else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2078) - or CheckDeadUni("c5",0x2088))) + else if((Ebene = 3) and !(CheckDeadUni("c5",0x2265))) ; größer gleich + send {blind}> + else if((Ebene = 4) and !(CheckDeadUni("c1",0x2078) + or CheckDeadUni("c5",0x2088))) Send {blind}{NumPad8} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03B3) ; gamma - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x0393) ; Gamma return neo_f: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a4",0x1E1F,0x1E1E) + if(Ebene12 and !(CheckDeadUni12("a4",0x1E1F,0x1E1E) or CheckDeadUni12("t4",0x0192,0x0191))) OutputChar("f","F") - else if ((Ebene = 3) and !(CheckDeadUni("a6",0x2257) ; ring equal to - or CheckDeadUni("c1",0x2259) ; entspricht - or CheckDeadUni("c2",0x225A) ; EQUIANGULAR TO - or CheckDeadUni("c5",0x2261) ; identisch - or CheckDeadUni("t1",0x2245) ; ungefähr gleich - or CheckDeadUni("t4",0x2260))) ; ungleich + else if((Ebene = 3) and !(CheckDeadUni("a6",0x2257) ; ring equal to + or CheckDeadUni("c1",0x2259) ; entspricht + or CheckDeadUni("c2",0x225A) ; EQUIANGULAR TO + or CheckDeadUni("c5",0x2261) ; identisch + or CheckDeadUni("t1",0x2245) ; ungefähr gleich + or CheckDeadUni("t4",0x2260))) ; ungleich send {blind}`= - else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2079) + else if((Ebene = 4) and !(CheckDeadUni("c1",0x2079) or CheckDeadUni("c5",0x2089))) send {blind}{NumPad9} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03C6) ; phi - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x03A6) ; Phi return neo_q: EbeneAktualisieren() - if (Ebene12) + if(Ebene12) OutputChar("q","Q") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}{&} - else if ((Ebene = 4) and !(CheckDeadUni("c1",0x207A) + else if((Ebene = 4) and !(CheckDeadUni("c1",0x207A) or CheckDeadUni("c5",0x208A))) Send {blind}{NumPadAdd} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03D5) ; phi symbol (varphi) - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x211A) ; Q (rationale Zahlen) return neo_sz: EbeneAktualisieren() - if (Ebene = 1) - if (GetKeyState("CapsLock","T")) + if(Ebene = 1) + if(GetKeyState("CapsLock","T")) SendUnicodeChar(0x1E9E) ; versal-ß else if LangSTastatur send {blind}s else send ß - else if (Ebene = 2) - if (GetKeyState("CapsLock","T")) + else if(Ebene = 2) + if(GetKeyState("CapsLock","T")) if LangSTastatur send {blind}s else send ß else SendUnicodeChar(0x1E9E) ; versal-ß - else if (Ebene = 3) + else if(Ebene = 3) if LangSTastatur send ß else SendUnicodeChar(0x017F) ; langes s - else if (Ebene = 5) - SendUnicodeChar(0x03C2) ; varsigma - else if (Ebene = 6) - SendUnicodeChar(0x2218) ; Verknüpfungsoperator + else if(Ebene = 5) + SendUnicodeChar(0x03C2) ; varsigma + else if(Ebene = 6) + SendUnicodeChar(0x2218) ; Verknüpfungsoperator return neo_tot3: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) + if(Ebene = 1) { - deadUni(0x02DC) ; Tilde, tot + deadUni(0x02DC) ; Tilde, tot DeadKey := "t1" } - else if (Ebene = 2) + else if(Ebene = 2) { - deadUni(0x00AF) ; Macron, tot + deadUni(0x00AF) ; Macron, tot DeadKey := "t2" } - else if (Ebene = 3) + else if(Ebene = 3) { - deadUni(0x00A8) ; Diärese + deadUni(0x00A8) ; Diärese DeadKey := "t3" } - else if (Ebene = 4) + else if(Ebene = 4) { - deadUni(0x002F) ; Schrägstrich, tot + deadUni(0x002F) ; Schrägstrich, tot DeadKey := "t4" } - else if (Ebene = 5) + else if(Ebene = 5) { - deadUni(0x02DD) ; Doppelakut + deadUni(0x02DD) ; Doppelakut DeadKey := "t5" } - else if (Ebene = 6) + else if(Ebene = 6) { - deadUni(0x02CF) ; Komma drunter, tot + deadUni(0x02CF) ; Komma drunter, tot DeadKey := "t6" } @@ -1664,7 +1530,7 @@ return neo_u: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x00FA,0x00DA) + if(Ebene12 and !(CheckDeadUni12("a1",0x00FA,0x00DA) or CheckDeadUni12("a2",0x00F9,0x00D9) or CheckDeadUni12("a5",0x0173,0x0172) or CheckDeadUni12("a6",0x016F,0x016E) @@ -1676,22 +1542,22 @@ neo_u: or CheckDeadAsc12("t3","ü","Ü") or CheckDeadUni12("t5",0x0171,0x0170))) OutputChar("u","U") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}\ - else if (Ebene = 4) + else if(Ebene = 4) Send {blind}{Home} - else if (Ebene = 5) ; leer + else if(Ebene = 5) ; leer { CompKey := PriorCompKey DeadKey := PriorDeadKey } - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x222E) ; contour integral return neo_i: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x00ED,0x00CD) + if(Ebene12 and !(CheckDeadUni12("a1",0x00ED,0x00CD) or CheckDeadUni12("a2",0x00EC,0x00CC) or CheckDeadUni12("a4",0x012F,0x012E) or CheckDeadUni12("a5",0x0131,0x0130) @@ -1702,42 +1568,42 @@ neo_i: or CheckDeadUni12("t2",0x012B,0x012A) or CheckDeadAsc12("t3","ï","Ï"))) OutputChar("i","I") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}`/ - else if (Ebene = 4) + else if(Ebene = 4) Send {Blind}{Left} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03B9) ; iota - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x222B) ; integral return neo_a: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x00E1,0x00C1) - or CheckDeadUni12("a2",0x00E0,0x00C0) - or CheckDeadUni12("a5",0x0105,0x0104) - or CheckDeadAsc12("a6","å","Å") - or CheckDeadUni12("c1",0x00E2,0x00C2) - or CheckDeadUni12("c2",0x01CE,0x01CD) - or CheckDeadUni12("c3",0x0103,0x0102) - or CheckDeadUni12("t1",0x00E3,0x00C3) - or CheckDeadUni12("t2",0x0101,0x0100) - or CheckDeadAsc12("t3","ä","Ä"))) + if(Ebene12 and !(CheckDeadUni12("a1",0x00E1,0x00C1) + or CheckDeadUni12("a2",0x00E0,0x00C0) + or CheckDeadUni12("a5",0x0105,0x0104) + or CheckDeadAsc12("a6","å","Å") + or CheckDeadUni12("c1",0x00E2,0x00C2) + or CheckDeadUni12("c2",0x01CE,0x01CD) + or CheckDeadUni12("c3",0x0103,0x0102) + or CheckDeadUni12("t1",0x00E3,0x00C3) + or CheckDeadUni12("t2",0x0101,0x0100) + or CheckDeadAsc12("t3","ä","Ä"))) OutputChar("a","A") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}{{} - else if (Ebene = 4) + else if(Ebene = 4) Send {Blind}{Down} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03B1) ; alpha - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2200) ; für alle return neo_e: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x00E9,0x00C9) + if(Ebene12 and !(CheckDeadUni12("a1",0x00E9,0x00C9) or CheckDeadUni12("a2",0x00E8,0x00C8) or CheckDeadUni12("a4",0x0117,0x0116) or CheckDeadUni12("a5",0x0119,0x0118) @@ -1751,19 +1617,19 @@ neo_e: or CheckCompAsc12("o","œ","Œ") or CheckCompAsc12("O","Œ","Œ"))) OutputChar("e","E") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}{}} - else if (Ebene = 4) + else if(Ebene = 4) Send {Blind}{Right} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03B5) ; epsilon - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2203) ; es existiert return neo_o: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x00F3,0x00D3) + if(Ebene12 and !(CheckDeadUni12("a1",0x00F3,0x00D3) or CheckDeadUni12("a2",0x00F2,0x00D2) or CheckDeadUni12("a5",0x01EB,0x01EA) or CheckDeadUni12("c1",0x00F4,0x00D4) @@ -1775,102 +1641,102 @@ neo_o: or CheckDeadUni12("t4",0x00F8,0x00D8) or CheckDeadUni12("t5",0x0151,0x0150))) OutputChar("o","O") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}* - else if (Ebene = 4) + else if(Ebene = 4) Send {blind}{End} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03BF) ; omicron - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2208) ; element of return neo_s: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x015B,0x015A) + if(Ebene12 and !(CheckDeadUni12("a1",0x015B,0x015A) or CheckDeadUni12("a3",0x015F,0x015E) or CheckDeadUni12("a4",0x1E61,0x1E60) or CheckDeadUni12("c1",0x015D,0x015C) or CheckDeadUni12("c2",0x0161,0x0160) or CheckDeadUni12("c6",0x1E63,0x1A62))) { - if (Ebene = 1) + if(Ebene = 1) { if LangSTastatur - if (GetKeyState("CapsLock","T")) + if(GetKeyState("CapsLock","T")) { send {blind}s - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") Compkey := "s" } else { SendUnicodeChar(0x017F) ;langes S - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "lang_s" } else { send {blind}s - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "s" } } - else if (Ebene = 2) + else if(Ebene = 2) { if LangSTastatur - if (GetKeyState("CapsLock","T")) + if(GetKeyState("CapsLock","T")) { SendUnicodeChar(0x017F) ;langes S - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "lang_s" } else { send {blind}S - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "s" } else { send {blind}S - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "S" } } } - else if (Ebene = 3) + else if(Ebene = 3) send {blind}? - else if (Ebene = 4) + else if(Ebene = 4) Send ¿ - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03C3) ;sigma - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x03A3) ;Sigma return neo_n: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x0144,0x0143) + if(Ebene12 and !(CheckDeadUni12("a1",0x0144,0x0143) or CheckDeadUni12("a3",0x0146,0x0145) or CheckDeadUni12("a4",0x1E45,0x1E44) or CheckDeadUni12("c2",0x0148,0x0147) or CheckDeadUni12("t1",0x00F1,0x00D1))) OutputChar("n","N") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}( - else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2074) + else if((Ebene = 4) and !(CheckDeadUni("c1",0x2074) or CheckDeadUni("c5",0x2084))) Send {blind}{NumPad4} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03BD) ; nu - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2115) ; N (natürliche Zahlen) return neo_r: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x0155,0x0154) + if(Ebene12 and !(CheckDeadUni12("a1",0x0155,0x0154) or CheckDeadUni12("a3",0x0157,0x0156) or CheckDeadUni12("a4",0x0E59,0x0E58) or CheckDeadUni12("c2",0x0159,0x0158) @@ -1878,67 +1744,67 @@ neo_r: or CheckCompAsc12("o","®","®") or CheckCompAsc12("O","®","®"))) OutputChar("r","R") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}) - else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2075) + else if((Ebene = 4) and !(CheckDeadUni("c1",0x2075) or CheckDeadUni("c5",0x2085))) Send {blind}{NumPad5} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03F1) ; rho symbol (varrho) - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x211D) ; R (reelle Zahlen) return neo_t: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a3",0x0163,0x0162) + if(Ebene12 and !(CheckDeadUni12("a3",0x0163,0x0162) or CheckDeadUni12("a4",0x1E6B,0x1E6A) or CheckDeadUni12("c2",0x0165,0x0164) or CheckDeadUni12("c5",0x0167,0x0166) or CheckDeadUni12("c6",0x1E6D,0x1E6C))) OutputChar("t","T") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}- ; Bisstrich - else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2076) + else if((Ebene = 4) and !(CheckDeadUni("c1",0x2076) or CheckDeadUni("c5",0x2086))) Send {blind}{NumPad6} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03C4) ; tau - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2202) ; partielle Ableitung return neo_d: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a4",0x1E0B,0x1E0A) + if(Ebene12 and !(CheckDeadUni12("a4",0x1E0B,0x1E0A) or CheckDeadUni12("c2",0x010F,0x010E) or CheckDeadUni12("c5",0x0111,0x0110) or CheckDeadUni12("c6",0x1E0D,0x1E0C) or CheckDeadUni12("t4",0x00F0,0x00D0))) OutputChar("d","D") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}: - else if (Ebene = 4) + else if(Ebene = 4) send `, - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03B4) ; delta - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x0394) ; Delta return neo_y: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x00FD,0x00DD) + if(Ebene12 and !(CheckDeadUni12("a1",0x00FD,0x00DD) or CheckDeadUni12("c1",0x0177,0x0176) or CheckDeadAsc12("t3","ÿ","Ÿ"))) OutputChar("y","Y") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}@ - else if (Ebene = 4) + else if(Ebene = 4) Send {blind}. - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03C5) ; upsilon - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2207) ; nabla return @@ -1950,165 +1816,167 @@ return neo_ü: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x01D8,0x01D7) + if(Ebene12 and !(CheckDeadUni12("a1",0x01D8,0x01D7) or CheckDeadUni12("a2",0x01DC,0x01DB) or CheckDeadUni12("c2",0x01DA,0x01D9) or CheckDeadUni12("t2",0x01D6,0x01D5))) OutputChar("ü","Ü") - else if (Ebene = 3) + else if(Ebene = 3) send {#} - else if (Ebene = 4) + else if(Ebene = 4) Send {blind}{Esc} - else if (Ebene = 5) ; leer + else if(Ebene = 5) ; leer { DeadKey := PriorDeadKey CompKey := PriorCompKey } - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x221D) ; proportional return neo_ö: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("t2",0x022B,0x022A))) + if(Ebene12 and !(CheckDeadUni12("t2",0x022B,0x022A))) OutputChar("ö","Ö") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}$ - else if (Ebene = 4) + else if(Ebene = 4) send {blind}{Tab} - else if (Ebene = 5) + else if(Ebene = 5) { DeadKey := PriorDeadKey CompKey := PriorCompKey } ; leer - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2111) ; Fraktur I return neo_ä: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("t2",0x01DF,0x01DE))) + if(Ebene12 and !(CheckDeadUni12("t2",0x01DF,0x01DE))) OutputChar("ä","Ä") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}| - else if (Ebene = 4) - Send {blind}{PgDn} ; Next - else if (Ebene = 5) + else if(Ebene = 4) + Send {blind}{PgDn} ; Next + else if(Ebene = 5) SendUnicodeChar(0x03B7) ; eta - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x211C) ; Fraktur R return neo_p: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a4",0x1E57,0x1E56))) + if(Ebene12 and !(CheckDeadUni12("a4",0x1E57,0x1E56))) OutputChar("p","P") - else if ((Ebene = 3) and !(CheckDeadUni("t1",0x2248))) + else if((Ebene = 3) and !(CheckDeadUni("t1",0x2248))) send {blind}~ - else if (Ebene = 4) + else if(Ebene = 4) Send {blind}{Enter} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03C0) ; pi - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x03A0) ; Pi return neo_z: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a1",0x017A,0x0179) + if(Ebene12 and !(CheckDeadUni12("a1",0x017A,0x0179) or CheckDeadUni12("a4",0x017C,0x017B) or CheckDeadUni12("c2",0x017E,0x017D) or CheckDeadUni12("c6",0x1E93,0x1E92))) OutputChar("z","Z") - else if (Ebene = 3) - send ``{space} ; untot - else if (Ebene = 4) + else if(Ebene = 3) + send ``{space} ; untot + else if(Ebene = 4) { DeadKey := PriorDeadKey CompKey := PriorCompKey } ; leer - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03B6) ; zeta - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2124) ; Z (ganze Zahlen) return neo_b: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a4",0x1E03,0x1E02))) + if(Ebene12 and !(CheckDeadUni12("a4",0x1E03,0x1E02))) OutputChar("b","B") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}{+} - else if (Ebene = 4) + else if(Ebene = 4) send {blind}: - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03B2) ; beta - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x21D2) ; Doppel-Pfeil rechts return neo_m: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("a4",0x1E41,0x1E40) + if(Ebene12 and !(CheckDeadUni12("a4",0x1E41,0x1E40) or CheckDeadUni12("c6",0x1E43,0x1E42) or CheckCompUni12("t",0x2122,0x2122) ; TM or CheckCompUni12("s",0x2120,0x2120))) ; SM OutputChar("m","M") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}`% - else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B9) + else if((Ebene = 4) and !(CheckDeadUni("c1",0x00B9) or CheckDeadUni("c5",0x2081))) Send {blind}{NumPad1} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03BC) ; griechisch mu, micro wäre 0x00B5 - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x21D4) ; doppelter Doppelpfeil (genau dann wenn) return neo_komma: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - if (GetKeyState("CapsLock","T")) + if(Ebene = 1) + if(GetKeyState("CapsLock","T")) send {blind}{Shift down},{Shift up} else send {blind}, - else if (Ebene = 2) - SendUnicodeChar(0x22EE) ; vertikale ellipse - else if (Ebene = 3) + else if(Ebene = 2) + SendUnicodeChar(0x22EE) ; vertikale ellipse + else if(Ebene = 3) send {blind}" - else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B2) + else if((Ebene = 4) and !(CheckDeadUni("c1",0x00B2) or CheckDeadUni("c5",0x2082))) Send {blind}{NumPad2} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03C1) ; rho - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x21D0) ; Doppelpfeil links return neo_punkt: + noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) - if (GetKeyState("CapsLock","T")) + if(Ebene = 1) + if(GetKeyState("CapsLock","T")) send {blind}{Shift down}.{Shift up} else send {blind}. - else if (Ebene = 2) - SendUnicodeChar(0x2026) ; ellipse - else if (Ebene = 3) + else if(Ebene = 2) + SendUnicodeChar(0x2026) ; ellipse + else if(Ebene = 3) send {blind}' - else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B3) + else if((Ebene = 4) and !(CheckDeadUni("c1",0x00B3) or CheckDeadUni("c5",0x2083))) Send {blind}{NumPad3} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03D1) ; theta symbol (vartheta) - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x0398) ; Theta return neo_j: EbeneAktualisieren() - if (Ebene12 and !(CheckDeadUni12("c1",0x0135,0x0134) + if(Ebene12 and !(CheckDeadUni12("c1",0x0135,0x0134) or CheckDeadUni12("c2",0x01F0,"") or CheckCompUni("i",0x0133) ; ij or CheckCompUni("l",0x01C9) ; lj @@ -2117,13 +1985,13 @@ neo_j: or CheckCompUni12("L",0x01C8,0x01C7) ; Lj/LJ or CheckCompUni12("N",0x01CB,0x01CA))) ; Nj/NJ OutputChar("j","J") - else if (Ebene = 3) + else if(Ebene = 3) send {blind}`; - else if (Ebene = 4) + else if(Ebene = 4) Send {blind}`; - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x03B8) ; theta - else if (Ebene = 6) + else if(Ebene = 6) SendUnicodeChar(0x2261) ; identisch return @@ -2135,16 +2003,16 @@ return neo_NumLock: EbeneAktualisieren() - if (Ebene = 1) + if(Ebene = 1) send `= - if (Ebene = 2) ; Funktioniert nicht + if(Ebene = 2) ; Funktioniert nicht { SetNumLockState send {NumLock} } - if (Ebene = 3) + if(Ebene = 3) SendUnicodeChar(0x2248) ; Fast gleich - if (Ebene = 4) + if(Ebene = 4) SendUnicodeChar(0x2260) ; Ungleich zu return @@ -2152,9 +2020,9 @@ neo_NumpadDiv: EbeneAktualisieren() if Ebene14 send {blind}{NumpadDiv} - else if (Ebene = 2) - SendUnicodeChar(0x2215) ; Slash - else if (Ebene = 3) + else if(Ebene = 2) + SendUnicodeChar(0x2215) ; Slash + else if(Ebene = 3) send {blind}÷ return @@ -2162,30 +2030,30 @@ neo_NumpadMult: EbeneAktualisieren() if Ebene14 send {blind}{NumpadMult} - else if (Ebene = 2) - SendUnicodeChar(0x22C5) ; Cdot - else if (Ebene = 3) + else if(Ebene = 2) + SendUnicodeChar(0x22C5) ; Cdot + else if(Ebene = 3) send {blind}× return neo_NumpadSub: EbeneAktualisieren() - if (Ebene14 and !(CheckDeadUni("c1",0x207B) + if(Ebene14 and !(CheckDeadUni("c1",0x207B) or CheckDeadUni("c5",0x208B))) send {blind}{NumpadSub} - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x2212) ; Echtes Minus return neo_NumpadAdd: EbeneAktualisieren() - if (Ebene14 and !(CheckDeadUni("c1",0x207A) + if(Ebene14 and !(CheckDeadUni("c1",0x207A) or CheckDeadUni("c5",0x208A))) send {blind}{NumpadAdd} - else if (Ebene = 3) + else if(Ebene = 3) send {blind}± - else if (Ebene = 2) - SendUnicodeChar(0x2213) ; Inverses ± + else if(Ebene = 2) + SendUnicodeChar(0x2213) ; Inverses ± return neo_NumpadEnter: @@ -2194,20 +2062,20 @@ return neo_Numpad7: EbeneAktualisieren() - if (Ebene = 1) + if(Ebene = 1) { if NumLock send {blind}{Numpad7} else send {blind){Shift up}{Numpad7} - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "7" } - else if (Ebene = 2) + else if(Ebene = 2) SendUnicodeChar(0x2020) ; Kreuz - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x2195) ; Hoch-Runter-Pfeil - else if (Ebene = 4) + else if(Ebene = 4) if NumLock send {blind}{Shift up}{NumpadHome} else @@ -2216,7 +2084,7 @@ return neo_Numpad8: EbeneAktualisieren() - if ((Ebene = 1) and !(CheckCompUni("1",0x215B) ; 1/8 + if((Ebene = 1) and !(CheckCompUni("1",0x215B) ; 1/8 or CheckCompUni("3",0x215C) ; 3/8 or CheckCompUni("5",0x215D) ; 5/8 or CheckCompUni("7",0x215E))) ; 7/8 @@ -2225,14 +2093,14 @@ neo_Numpad8: send {blind}{Numpad8} else send {blind){Shift up}{Numpad8} - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "8" } - else if (Ebene = 2) + else if(Ebene = 2) SendUnicodeChar(0x2229) ; Durchschnitt - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x2191) ; Hochpfeil - else if (Ebene = 4) + else if(Ebene = 4) if NumLock send {blind}{Shift up}{NumpadUp} else @@ -2241,20 +2109,20 @@ return neo_Numpad9: EbeneAktualisieren() - if (Ebene = 1) + if(Ebene = 1) { if NumLock send {blind}{Numpad9} else send {blind){Shift up}{Numpad9} - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "9" } - else if (Ebene = 2) + else if(Ebene = 2) SendUnicodeChar(0x2297) ; Tensorprodukt / Vektor in die Ebene zeigend - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x220D) ; Kleines umgekehrtes Elementzeichen - else if (Ebene = 4) + else if(Ebene = 4) if NumLock send {blind}{Shift up}{NumpadPgUp} else @@ -2263,21 +2131,21 @@ return neo_Numpad4: EbeneAktualisieren() - if ((Ebene = 1) and !(CheckCompUni("1",0x00BC) ; 1/4 + if((Ebene = 1) and !(CheckCompUni("1",0x00BC) ; 1/4 or CheckCompUni("3",0x00BE))) ; 3/4 { if NumLock send {blind}{Numpad4} else send {blind){Shift up}{Numpad4} - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "4" } - else if (Ebene = 2) + else if(Ebene = 2) SendUnicodeChar(0x2282) ; Teilmenge - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x2190) ; Linkspfeil - else if (Ebene = 4) + else if(Ebene = 4) if NumLock send {blind}{Shift up}{NumpadLeft} else @@ -2286,7 +2154,7 @@ return neo_Numpad5: EbeneAktualisieren() - if ((Ebene = 1) and !(CheckCompUni("1",0x2155) ; 1/5 + if((Ebene = 1) and !(CheckCompUni("1",0x2155) ; 1/5 or CheckCompUni("2",0x2156) ; 2/5 or CheckCompUni("3",0x2157) ; 3/5 or CheckCompUni("4",0x2158))) ; 4/5 @@ -2295,14 +2163,14 @@ neo_Numpad5: send {blind}{Numpad5} else send {blind){Shift up}{Numpad5} - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "5" } - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x221E) ; Unendlich - else if (Ebene = 2) + else if(Ebene = 2) SendUnicodeChar(0x20AC) ; Euro - else if (Ebene = 4) ; Beg + else if(Ebene = 4) ; Beg if NumLock send {NumPad5} else @@ -2311,21 +2179,21 @@ return neo_Numpad6: EbeneAktualisieren() - if ((Ebene = 1) and !(CheckCompUni("1",0x2159) ; 1/6 + if((Ebene = 1) and !(CheckCompUni("1",0x2159) ; 1/6 or CheckCompUni("5",0x215a))) ; 5/6 { if NumLock send {blind}{Numpad6} else send {blind){Shift up}{Numpad6} - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "6" } - else if (Ebene = 2) + else if(Ebene = 2) SendUnicodeChar(0x2283) ; Obermenge - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x2192) ; Rechtspfeil - else if (Ebene = 4) + else if(Ebene = 4) if NumLock send {blind}{Shift up}{NumpadRight} else @@ -2334,20 +2202,20 @@ return neo_Numpad1: EbeneAktualisieren() - if (Ebene = 1) + if(Ebene = 1) { if NumLock send {blind}{Numpad1} else send {blind){Shift up}{Numpad1} - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "1" } - else if (Ebene = 2) + else if(Ebene = 2) SendUnicodeChar(0x2714) ; Häkchen - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x2194) ; Links-Rechts-Pfeil - else if (Ebene = 4) + else if(Ebene = 4) if NumLock send {blind}{Shift up}{NumpadEnd} else @@ -2356,20 +2224,20 @@ return neo_Numpad2: EbeneAktualisieren() - if ((Ebene = 1) and !(CheckCompUni("1",0x00BD))) ; 1/2 + if((Ebene = 1) and !(CheckCompUni("1",0x00BD))) ; 1/2 { if NumLock send {blind}{Numpad2} else send {blind){Shift up}{Numpad2} - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "2" } - else if (Ebene = 2) + else if(Ebene = 2) SendUnicodeChar(0x222A) ; Vereinigung - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x2192) ; Untenpfeil - else if (Ebene = 4) + else if(Ebene = 4) if NumLock send {blind}{Shift up}{NumpadDown} else @@ -2378,21 +2246,21 @@ return neo_Numpad3: EbeneAktualisieren() - if ((Ebene = 1) and !(CheckCompUni("1",0x2153) ; 1/3 + if((Ebene = 1) and !(CheckCompUni("1",0x2153) ; 1/3 or CheckCompUni("5",0x2154))) ; 2/3 { if NumLock send {blind}{Numpad3} else send {blind){Shift up}{Numpad3} - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "3" } - else if (Ebene = 2) + else if(Ebene = 2) SendUnicodeChar(0x2718) ; Kreuzchen - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x2192) ; Rechtspfeil - else if (Ebene = 4) + else if(Ebene = 4) if NumLock send {blind}{Shift up}{NumpadPgDn} else @@ -2401,20 +2269,20 @@ return neo_Numpad0: EbeneAktualisieren() - if (Ebene = 1) + if(Ebene = 1) { if NumLock send {blind}{Numpad0} else send {blind){Shift up}{Numpad0} - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := "0" } - else if (Ebene = 2) + else if(Ebene = 2) SendUnicodeChar(0x2030) ; Promille - else if (Ebene = 3) + else if(Ebene = 3) SendUnicodeChar(0x0025) ; Prozent - else if (Ebene = 4) + else if(Ebene = 4) if NumLock send {blind}{Shift up}{NumpadIns} else @@ -2423,27 +2291,24 @@ return neo_NumpadDot: EbeneAktualisieren() - if (Ebene = 1) + if(Ebene = 1) { if NumLock send {blind}{NumpadDot} else send {blind){Shift up}{NumpadDot} } - else if (Ebene = 2) + else if(Ebene = 2) send `, - else if (Ebene = 3) + else if(Ebene = 3) send {blind}. - else if (Ebene = 4) + else if(Ebene = 4) if NumLock send {blind}{Shift up}{NumpadDel} else send {blind}{NumpadDel} return - - - /* Sondertasten @@ -2451,16 +2316,16 @@ return */ *space:: - if ((einHandNeo)) + if((einHandNeo)) spacepressed := 1 else goto neo_SpaceUp return *space up:: - if ((einHandNeo)) + if((einHandNeo)) { - if ((keypressed)) + if((keypressed)) { keypressed := 0 spacepressed := 0 @@ -2476,18 +2341,18 @@ return neo_SpaceUp: EbeneAktualisieren() - if ((Ebene = 1) and !(CheckComp3Uni("r_1",0x2170) ; römisch i - or CheckComp3Uni("R_1",0x2160))) ; römisch I + if((Ebene = 1) and !(CheckComp3Uni("r_1",0x2170) ; Römisch i + or CheckComp3Uni("R_1",0x2160))) ; Römisch I Send {blind}{Space} else if ((Ebene = 2) or (Ebene = 3)) Send {blind}{Space} - else if (Ebene = 4 and !(CheckDeadUni("c1",0x2070) + else if(Ebene = 4 and !(CheckDeadUni("c1",0x2070) or CheckDeadUni("c5",0x2080))) Send {blind}{NumPad0} - else if (Ebene = 5) + else if(Ebene = 5) SendUnicodeChar(0x00A0) ; geschütztes Leerzeichen - else if (Ebene = 6) - SendUnicodeChar(0x202F) ; schmales Leerzeichen + else if(Ebene = 6) + SendUnicodeChar(0x202F) ; schmales geschütztes Leerzeichen DeadKey := "" CompKey := "" spacepressed := 0 keypressed := 0 @@ -2500,7 +2365,7 @@ return */ *Enter:: - if (not(lernModus) or lernModus_std_Return) + if(not(lernModus) or lernModus_std_Return) { send {Blind}{Enter} DeadKey := "" CompKey := "" @@ -2508,31 +2373,29 @@ return return *Backspace:: - if (not(lernModus) or lernModus_std_Backspace) + if(not(lernModus) or lernModus_std_Backspace) { send {Blind}{Backspace} DeadKey := "" CompKey := "" } return - *Del:: - if (not(lernModus) or lernModus_std_Entf) + if(not(lernModus) or lernModus_std_Entf) send {Blind}{Del} return *Ins:: - if (not(lernModus) or lernModus_std_Einf) + if(not(lernModus) or lernModus_std_Einf) send {Blind}{Ins} return - /* Auf Mod3+Tab liegt Compose. */ neo_tab: - if (IsMod3Pressed()) ;# + if(IsMod3Pressed()) { DeadKey := "comp" CompKey := "" @@ -2546,7 +2409,7 @@ neo_tab: return *Home:: - if (not(lernModus) or lernModus_std_Pos1) + if(not(lernModus) or lernModus_std_Pos1) { send {Blind}{Home} DeadKey := "" CompKey := "" @@ -2554,7 +2417,7 @@ return return *End:: - if (not(lernModus) or lernModus_std_Ende) + if(not(lernModus) or lernModus_std_Ende) { send {Blind}{End} DeadKey := "" CompKey := "" @@ -2562,7 +2425,7 @@ return return *PgUp:: - if (not(lernModus) or lernModus_std_PgUp) + if(not(lernModus) or lernModus_std_PgUp) { send {Blind}{PgUp} DeadKey := "" CompKey := "" @@ -2570,7 +2433,7 @@ return return *PgDn:: - if (not(lernModus) or lernModus_std_PgDn) + if(not(lernModus) or lernModus_std_PgDn) { send {Blind}{PgDn} DeadKey := "" CompKey := "" @@ -2578,7 +2441,7 @@ return return *Up:: - if (not(lernModus) or lernModus_std_Hoch) + if(not(lernModus) or lernModus_std_Hoch) { send {Blind}{Up} DeadKey := "" CompKey := "" @@ -2586,7 +2449,7 @@ return return *Down:: - if (not(lernModus) or lernModus_std_Runter) + if(not(lernModus) or lernModus_std_Runter) { send {Blind}{Down} DeadKey := "" CompKey := "" @@ -2594,7 +2457,7 @@ return return *Left:: - if (not(lernModus) or lernModus_std_Links) + if(not(lernModus) or lernModus_std_Links) { send {Blind}{Left} DeadKey := "" CompKey := "" @@ -2602,17 +2465,12 @@ return return *Right:: - if (not(lernModus) or lernModus_std_Rechts) + if(not(lernModus) or lernModus_std_Rechts) { send {Blind}{Right} DeadKey := "" CompKey := "" } return - - - - - /* ------------------------------------------------------ Methode KeyboardLED zur Steuerung der Keyboard-LEDs @@ -2635,55 +2493,49 @@ return ------------------------------------------------------ */ -KeyboardLED(LEDvalue, Cmd) ; LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4 ; Cmd = on/off/switch -{ +KeyboardLED(LEDvalue, Cmd){ ; LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4 ; Cmd = on/off/switch Static h_device If ! h_device ; initialise - { - device =\Device\KeyBoardClass0 + { + 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) + } + 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")) + 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) + ; 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 ) + 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 ) -{ +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) -{ +NtCreateFileLED(ByRef wfilename,desiredaccess,sharemode,createdist,flags,fattribs){ VarSetCapacity(fh,4,0) VarSetCapacity(objattrib,24,0) VarSetCapacity(io,8,0) @@ -2699,23 +2551,19 @@ NtCreateFileLED(ByRef wfilename,desiredaccess,sharemode,createdist,flags,fattrib return ExtractIntegerLED(fh) } - -SetUnicodeStrLED(ByRef out, str_) -{ +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) +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) @@ -2724,11 +2572,9 @@ ExtractIntegerLED(ByRef pSource, pOffset = 0, pIsSigned = false, pSize = 4) return -(0xFFFFFFFF - result + 1) } - -InsertIntegerLED(pInteger, ByRef pDest, pOffset = 0, pSize = 4) +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) } @@ -2736,162 +2582,98 @@ InsertIntegerLED(pInteger, ByRef pDest, pOffset = 0, pSize = 4) -BSSendUnicodeChar(charCode) -{ - send {bs} - SendUnicodeChar(charCode) -} - -CompUnicodeChar(charCode) -{ - send {bs} - SendUnicodeChar(charCode) -} - -Comp3UnicodeChar(charCode) -{ - send {bs}{bs} - SendUnicodeChar(charCode) -} - -deadAsc(val) -{ +deadAsc(val){ global - if (DeadSilence) - {} ; keine Ausgabe - else - send % "{blind}" . val + if!(DeadSilence) + send % val } -deadUni(val) -{ +deadUni(val){ global - if (DeadSilence) - {} ; keine Ausgabe - else + if!(DeadSilence) SendUnicodeChar(val) } -undeadAsc(val) -{ +undeadAsc(val){ global - if (DeadSilence) - send % "{blind}" . val + if(DeadSilence) + send % val else - send % "{blind}{bs}" . val + send % "{bs}" . val } -undeadUni(val) -{ +undeadUni(val){ global - if (DeadSilence) - {} ; keine ausgabe - else + if!(DeadSilence) send {bs} - SendUnicodeChar(val) + SendUnicodeChar(val) } -CheckDeadAsc(d,val) -{ +CheckDeadAsc(d,val){ global - if (PriorDeadKey == d) - { + if(PriorDeadKey == d){ undeadAsc(val) return 1 - } - else - return 0 + }else return 0 } -CheckDeadUni(d,val) -{ +CheckDeadUni(d,val){ global - if (PriorDeadKey == d) - { + if(PriorDeadKey == d){ undeadUni(val) return 1 - } - else - return 0 + }else return 0 } -CheckDeadAsc12(d,val1,val2) -{ +CheckDeadAsc12(d,val1,val2){ global - if (PriorDeadKey == d) - { - if ((Ebene = 1) and (val1 != "")) - { + if(PriorDeadKey == d){ + if((Ebene = 1) and (val1 != "")){ undeadAsc(val1) return 1 - } - else if ((Ebene = 2) and (val2 != "")) - { + }else if((Ebene = 2) and (val2 != "")){ undeadAsc(val2) return 1 - } - else - return 0 - } - else - return 0 + }else return 0 + }else return 0 } -CheckDeadUni12(d,val1,val2) -{ +CheckDeadUni12(d,val1,val2){ global - if (PriorDeadKey == d) - { - if ((Ebene = 1) and (val1 != "")) - { + if(PriorDeadKey == d){ + if((Ebene = 1) and (val1 != "")){ undeadUni(val1) return 1 - } - else if ((Ebene = 2) and (val2 != "")) - { + }else if((Ebene = 2) and (val2 != "")){ undeadUni(val2) return 1 - } - else - return 0 - } - else - return 0 + }else return 0 + }else return 0 } -compAsc(val) -{ +compAsc(val){ global - if (DeadCompose) - {} ; keine Ausgabe - else - send % "{blind}" . val + if!(DeadCompose) + send % val } -compUni(val) -{ +compUni(val){ global - if (DeadCompose) - {} ; keine Ausgabe - else + if!(DeadCompose) SendUnicodeChar(val) } -uncompAsc(val) -{ +uncompAsc(val){ global - if (DeadCompose) - send % "{blind}" . val - else - send % "{blind}{bs}" . val + if(DeadCompose) + send % val + else send % "{bs}" . val } uncompUni(val) { global - if (DeadCompose) - {} ; keine ausgabe - else + if!(DeadCompose) send {bs} SendUnicodeChar(val) } @@ -2899,192 +2681,125 @@ uncompUni(val) uncomp3Uni(val) { global - if (DeadCompose) - {} ; keine ausgabe - else + if!(DeadCompose) send {bs}{bs} SendUnicodeChar(val) } -CheckCompAsc(d,val) -{ +CheckCompAsc(d,val){ global - if (PriorCompKey == d) - { + if(PriorCompKey == d){ uncompAsc(val) return 1 - } - else - return 0 + }else return 0 } -CheckCompAsc12(d,val1,val2) -{ +CheckCompAsc12(d,val1,val2){ global - if (PriorCompKey == d) - if ((Ebene = 1) and (val1 != "")) - { + if(PriorCompKey == d) + if((Ebene = 1) and (val1 != "")){ uncompAsc(val1) return 1 - } - else if ((Ebene = 2) and (val2 != "")) - { + }else if((Ebene = 2) and (val2 != "")){ uncompAsc(val2) return 1 - } - else - return 0 - else - return 0 + }else return 0 + else return 0 } -CheckCompUni(d,val) -{ +CheckCompUni(d,val){ global - if (PriorCompKey == d) - { + if(PriorCompKey == d){ uncompUni(val) return 1 - } - else - return 0 + }else return 0 } -CheckCompUni12(d,val1,val2) -{ +CheckCompUni12(d,val1,val2){ global - if (PriorCompKey == d) - { - if ((Ebene = 1) and (val1 != "")) - { + if(PriorCompKey == d){ + if ((Ebene = 1) and (val1 != "")){ uncompUni(val1) return 1 - } - else if ((Ebene = 2) and (val2 != "")) - { + }else if((Ebene = 2) and (val2 != "")){ uncompUni(val2) return 1 - } - else - return 0 - } - else - return 0 + }else return 0 + }else return 0 } -CheckComp3Uni(d,val) -{ +CheckComp3Uni(d,val){ global - if (PriorCompKey == d) - { + if(PriorCompKey == d){ uncomp3Uni(val) return 1 - } - else - return 0 + }else return 0 } -CheckComp3Uni12(d,val1,val2) -{ +CheckComp3Uni12(d,val1,val2){ global - if (PriorCompKey == d) - { - if ((Ebene = 1) and (val1 != "")) - { + if(PriorCompKey == d){ + if((Ebene = 1) and (val1 != "")){ uncomp3Uni(val1) return 1 - } - else if ((Ebene = 2) and (val2 != "")) - { + }else if((Ebene = 2) and (val2 != "")){ uncomp3Uni(val2) return 1 - } - else - return 0 - } - else - return 0 + }else return 0 + }else return 0 } -outputChar(val1,val2) -{ +outputChar(val1,val2){ global - if (Ebene = 1) + if(Ebene = 1) c := val1 else c := val2 - if GetKeyState("Shift","P") and isMod2Locked + if GetKeyState("Shift","P") and isMod2Locked send % "{blind}{Shift Up}" . c . "{Shift Down}" else send % "{blind}" . c - if (PriorDeadKey = "comp") + if(PriorDeadKey = "comp") CompKey := c } +checkComp(d){ + if(PriorDeadKey = "comp"){ + CompKey := d + return 1 + } +} + /* ------------------------------------------------------ Methoden zum Senden von Unicode-Zeichen ------------------------------------------------------ -*/ - -/************************************************************ - Alter Weg – Copy/Paste über die Zwischenablage -************************************************************/ - -/* -Unicode(code) -{ - saved_clipboard := ClipboardAll - Transform, Clipboard, Unicode, %code% - sendplay ^v - Clipboard := saved_clipboard -} - -BSUnicode(code) -{ - saved_clipboard := ClipboardAll - Transform, Clipboard, Unicode, %code% - sendplay {bs}^v - Clipboard := saved_clipboard -} -*/ - - -/************************************************************ - Neuer Weg – Benutzung der entsprechenden Win32-API-Methode -************************************************************/ - -/* Ü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) - } +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) + } } -EncodeInteger(ref, val) -{ - DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val) +EncodeInteger(ref,val){ + DllCall("ntdll\RtlFillMemoryUlong","Uint",ref,"Uint",4,"Uint",val) } /* @@ -3092,67 +2807,60 @@ EncodeInteger(ref, val) BildschirmTastatur ------------------------------------------------------ */ + guiErstellt = 0 alwaysOnTop = 1 *F1:: - if (isMod4Pressed() and zeigeBildschirmTastatur) + if(isMod4Pressed()&&zeigeBildschirmTastatur) goto Switch1 - else - send {blind}{F1} + else send {blind}{F1} return *F2:: - if (isMod4Pressed() and zeigeBildschirmTastatur) + if(isMod4Pressed()&&zeigeBildschirmTastatur) goto Switch2 - else - send {blind}{F2} + else send {blind}{F2} return *F3:: - if (isMod4Pressed() and zeigeBildschirmTastatur) + if(isMod4Pressed()&&zeigeBildschirmTastatur) goto Switch3 - else - send {blind}{F3} + else send {blind}{F3} return *F4:: - if (isMod4Pressed() and zeigeBildschirmTastatur) + if(isMod4Pressed()&&zeigeBildschirmTastatur) goto Switch4 - else - send {blind}{F4} + else send {blind}{F4} return *F5:: - if (isMod4Pressed() and zeigeBildschirmTastatur) + if(isMod4Pressed()&&zeigeBildschirmTastatur) goto Switch5 - else - send {blind}{F5} + else send {blind}{F5} return *F6:: - if (isMod4Pressed() and zeigeBildschirmTastatur) + if(isMod4Pressed()&&zeigeBildschirmTastatur) goto Switch6 - else - send {blind}{F6} + else send {blind}{F6} return *F7:: - if (isMod4Pressed() and zeigeBildschirmTastatur) + if(isMod4Pressed()&&zeigeBildschirmTastatur) goto Show - else - send {blind}{F7} + else send {blind}{F7} return *F8:: - if (isMod4Pressed() and zeigeBildschirmTastatur) + if(isMod4Pressed()&&zeigeBildschirmTastatur) goto ToggleAlwaysOnTop - else - send {blind}{F8} + else send {blind}{F8} return Switch1: - tImage := ResourceFolder . "\ebene1.png" + tImage:=ResourceFolder . "\ebene1.png" goto Switch Return diff --git a/windows/autohotkey/neo20.exe b/windows/autohotkey/neo20.exe index a9941d1..db66de3 100644 Binary files a/windows/autohotkey/neo20.exe and b/windows/autohotkey/neo20.exe differ -- cgit v1.2.3