From c63134e1ac0522b643dffd4c71bcff2b27eab30d Mon Sep 17 00:00:00 2001 From: martin_r Date: Mon, 18 Aug 2008 19:25:20 +0000 Subject: Modularisierung des AHK konsequent weitergeführt. neo20.txt: Ebenen 7 und 8 ergänzt, Ebenen 2 und 4 des Numpads vertauscht. Methods-Layers.ahk: Mod3-Lock abgeschafft, CapsLock neu geschrieben. + Viele kleine Änderungen. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.neo-layout.org@776 b9310e46-f624-0410-8ea1-cfbb3a30dc96 --- windows/autohotkey/Source/All.ahk | 8 +- windows/autohotkey/Source/Global-Part.ahk | 102 ++- windows/autohotkey/Source/Keys-Neo.ahk | 792 ++++++++++----------- windows/autohotkey/Source/Keys-Qwert-to-Neo.ahk | 1 + windows/autohotkey/Source/Methods-Layers.ahk | 200 +++--- windows/autohotkey/Source/Methods-Lights.ahk | 4 +- windows/autohotkey/Source/Methods-Other.ahk | 138 ---- .../autohotkey/Source/Methods-ScreenKeyboard.ahk | 94 --- windows/autohotkey/Source/Methods-Unicode.ahk | 29 + windows/autohotkey/Source/Warning.ahk | 5 +- 10 files changed, 649 insertions(+), 724 deletions(-) (limited to 'windows/autohotkey/Source') diff --git a/windows/autohotkey/Source/All.ahk b/windows/autohotkey/Source/All.ahk index a207bca..1b899b7 100644 --- a/windows/autohotkey/Source/All.ahk +++ b/windows/autohotkey/Source/All.ahk @@ -1,9 +1,11 @@ /* ------------------------------------------------------ - Liste der Module - + All.ahk: + Diese Datei ist für Entwickler zum schnellen Testen von Änderungen vorgesehen. Bei Syntaxfehlern bietet sie zudem den Vorteil, dass die Zeilennummern relativ zu den einzelnen Modulen angezeigt werden. + Die Reihenfolge der Includes *ist* relevant! - + Denn: Vor dem Menü in der Global-Part.ahk dürfen keine Tastenkombinationen definiert werden. Ansonsten können Sie die Dateien hier beliebig anordnen. :-) + Siehe auch: http://www.autohotkey.com/docs/commands/_Include.htm diff --git a/windows/autohotkey/Source/Global-Part.ahk b/windows/autohotkey/Source/Global-Part.ahk index 105ad64..a0257d1 100644 --- a/windows/autohotkey/Source/Global-Part.ahk +++ b/windows/autohotkey/Source/Global-Part.ahk @@ -1,4 +1,4 @@ - +SetNumLockState AlwaysOff /**************** * Verzeichnisse * @@ -36,8 +36,8 @@ IniRead, einHandNeo, %ApplicationFolder%\NEO2.ini, Global, einHandNeo, 0 ; Soll der Lernmodus aktiviert werden? IniRead, lernModus, %ApplicationFolder%\NEO2.ini, Global, lernModus, 0 -; Soll mit MessageBoxen explizit auf das Ein- und Ausschalten des Mod{3,4}-Locks hingewiesen werden? -IniRead, zeigeLockBoxen, %ApplicationFolder%\NEO2.ini, Global, zeigeLockBoxen, 1 +; Soll mit einer MsgBox explizit auf das Ein- und Ausschalten des Mod4-Locks hingewiesen werden? +IniRead, zeigeLockBox, %ApplicationFolder%\NEO2.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 @@ -260,3 +260,99 @@ return else send {blind}{Esc} return + +/* + ------------------------------------------------------ + Shift+Pause "pausiert" das Skript. + ------------------------------------------------------ +*/ + +*pause:: +Suspend, Permit + if isshiftpressed() + goto togglesuspend + else + send {blind}{pause} +return + +; ------------------------------------ + +^.::einHandNeo := not(einHandNeo) ; Punkt +^,::lernModus := not(lernModus) ; Komma + + + +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 + } + +return + + +help: + Run, %A_WinDir%\hh mk:@MSITStore:autohotkey.chm +return + + +about: + msgbox, 64, %name% – Ergonomische Tastaturbelegung, + ( + %name% + `nDas Neo-Layout ersetzt das übliche deutsche + Tastaturlayout mit der Alternative Neo, + beschrieben auf http://neo-layout.org/. + `nDazu sind keine Administratorrechte nötig. + `nWenn Autohotkey aktiviert ist, werden alle Tastendrucke + abgefangen und statt dessen eine Übersetzung weitergeschickt. + `nDies geschieht transparent für den Anwender, + es muss nichts installiert werden. + `nDie Zeichenübersetzung kann leicht über das Icon im + Systemtray deaktiviert werden. `n + ) +return + + +neo: + run http://neo-layout.org/ +return + +autohotkey: + run http://autohotkey.com/ +return + +open: + ListLines ; shows the Autohotkey window +return + +edit: + edit +return + +reload: + Reload +return + +hide: + menu, tray, noicon +return + +exitprogram: + exitapp +return + + + \ No newline at end of file diff --git a/windows/autohotkey/Source/Keys-Neo.ahk b/windows/autohotkey/Source/Keys-Neo.ahk index 15a8be1..2c1fd53 100644 --- a/windows/autohotkey/Source/Keys-Neo.ahk +++ b/windows/autohotkey/Source/Keys-Neo.ahk @@ -2,13 +2,13 @@ Die eigentliche NEO-Belegung und der Hauptteil des AHK-Treibers. Ablauf bei toten Tasten: - 1. Ebene Aktualisieren - 2. Abhängig von der Variablen "Ebene" Zeichen ausgeben und die Variable "PriorDeadKey" setzen + 1. Ebene Aktualisieren. + 2. Abhängig von der Variablen "Ebene" Zeichen ausgeben und die Variable "PriorDeadKey" setzen. Ablauf bei "untoten" Tasten: - 1. Ebene Aktualisieren - 2. Abhängig von den Variablen "Ebene" und "PriorDeadKey" Zeichen ausgeben - 3. "PriorDeadKey" mit leerem String überschreiben + 1. Ebene Aktualisieren. + 2. Abhängig von den Variablen "Ebene" und "PriorDeadKey" Zeichen ausgeben. + 3. "PriorDeadKey" mit leerem String überschreiben. Reihe 1 */ @@ -38,12 +38,12 @@ neo_tot1: } else if (Ebene = 5) { - deadAsc("-") ; Querstrich, tot + deadUni(0x002D) ; Querstrich, tot DeadKey := "c5" } else if (Ebene = 6) { - deadAsc(".") ; Punkt drunter (Colon), tot + deadUni(0x002E) ; Punkt drunter (Colon), tot DeadKey := "c6" } CompKey := PriorCompKey @@ -72,9 +72,9 @@ neo_1: else if (Ebene = 2) send ° else if (Ebene = 3) - SendUnicodeChar(0x00B9) ; 2 Hochgestellte + SendUnicodeChar(0x00B9) ; Hochgestellte 2 else if (Ebene = 4) - SendUnicodeChar(0x2022) ; bullet + SendUnicodeChar(0x2022) ; Bullet else if (Ebene = 5) SendUnicodeChar(0x2640) ; Piktogramm weiblich else if (Ebene = 6) @@ -100,11 +100,11 @@ neo_2: CompKey := "2" } else if (Ebene = 2) - SendUnicodeChar(0x2116) ; numero + SendUnicodeChar(0x2116) ; Numero else if (Ebene = 3) - SendUnicodeChar(0x00B2) ; 2 Hochgestellte + SendUnicodeChar(0x00B2) ; Hochgestellte 2 else if (Ebene = 4) - SendUnicodeChar(0x2023) ; aufzaehlungspfeil + SendUnicodeChar(0x2023) ; Aufzählungspfeil else if (Ebene = 5) SendUnicodeChar(0x26A5) ; Piktogramm Zwitter else if (Ebene = 6) @@ -132,7 +132,7 @@ neo_3: else if (Ebene = 2) send § else if (Ebene = 3) - SendUnicodeChar(0x00B3) ; 3 Hochgestellte + SendUnicodeChar(0x00B3) ; Hochgestellte 3 else if (Ebene = 4) { CompKey := PriorCompKey @@ -161,11 +161,11 @@ neo_4: CompKey := "4" } else if (Ebene = 2) - SendUnicodeChar(0x00BB) ; », Double guillemot right + SendUnicodeChar(0x00BB) ; Double guillemot right else if (Ebene = 3) Send {blind}› ; Single guillemot right else if (Ebene = 4) - Send {blind}{PgUp} ; Prev + Send {blind}{PgUp} else if (Ebene = 5) SendUnicodeChar(0x2113) ; Script small L else if (Ebene = 6) @@ -295,7 +295,7 @@ neo_8: else if (Ebene = 4) Send {blind}{NumpadDiv} else if (Ebene = 5) - SendUnicodeChar(0x27E8) ;bra (öffnende spitze klammer) + SendUnicodeChar(0x27E8) ; bra (öffnende spitze Klammer) else if (Ebene = 6) SendUnicodeChar(0x2204) ; es existiert nicht return @@ -323,7 +323,7 @@ neo_9: else if (Ebene = 4) Send {blind}{NumpadMult} else if (Ebene = 5) - SendUnicodeChar(0x27E9) ;ket (schließende spitze klammer) + SendUnicodeChar(0x27E9) ; ket (schließende spitze Klammer) else if (Ebene = 6) SendUnicodeChar(0x2226) ; nicht parallel return @@ -370,11 +370,11 @@ neo_strich: SendUnicodeChar(0x2013) ; Gedankenstrich else if (Ebene = 3) SendUnicodeChar(0x2014) ; Englischer Gedankenstrich (Geviertstrich) - else if (Ebene = 4) + else if (Ebene = 4) ; leer { CompKey := PriorCompKey DeadKey := PriorDeadKey - } ; leer + } else if (Ebene = 5) SendUnicodeChar(0x2011) ; geschützter Bindestrich (Bindestrich ohne Zeilenumbruch) else if (Ebene = 6) @@ -447,11 +447,11 @@ neo_v: else if (Ebene = 4) if (not(lernModus) or lernModus_neo_Backspace) Send {blind}{Backspace} - else + else ; leer { CompKey := PriorCompKey DeadKey := PriorDeadKey - } ; leer + } else if (Ebene = 6) SendUnicodeChar(0x2259) ; estimates return @@ -461,11 +461,11 @@ return neo_l: EbeneAktualisieren() 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))) + 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) send {blind}[ @@ -481,27 +481,26 @@ return neo_c: EbeneAktualisieren() 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 CheckCompAsc12("o","©","©") - or CheckCompAsc12("O","©","©"))) + 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) send {blind}] else if (Ebene = 4) if (not(lernModus) or lernModus_neo_Entf) Send {blind}{Del} - else + else ; leer { CompKey := PriorCompKey DeadKey := PriorDeadKey - } ; leer + } else if (Ebene = 5) - SendUnicodeChar(0x03C7) ;chi + SendUnicodeChar(0x03C7) ; chi else if (Ebene = 6) - SendUnicodeChar(0x2102) ; C (Komplexe Zahlen) + SendUnicodeChar(0x2102) ; C (Komplexe Zahlen) return neo_w: @@ -509,10 +508,9 @@ neo_w: if (Ebene12 and !(CheckDeadUni12("c1",0x0175,0x0174))) OutputChar("w","W") else if (Ebene = 3) - SendUnicodeChar(0x005E) ; untotes ^ - Unicode-Name: CIRCUMFLEX ACCENT - ;send {^}{space} ; Funktioniert nicht unter Java-Programmen + SendUnicodeChar(0x005E) ; Zirkumflex else if (Ebene = 4) - Send {blind}{Insert} + Send {blind}{Insert} ; Einfg else if (Ebene = 5) SendUnicodeChar(0x03C9) ; omega else if (Ebene = 6) @@ -522,7 +520,7 @@ return neo_k: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a3",0x0137,0x0136) - or CheckDeadUni12("c6",0x1E33,0x1E32))) + or CheckDeadUni12("c6",0x1E33,0x1E32))) OutputChar("k","K") else if (Ebene = 3) send {blind}{!} @@ -537,9 +535,9 @@ return neo_h: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a4",0x1E23,0x1E22) - or CheckDeadUni12("c1",0x0125,0x0124) - or CheckDeadUni12("c5",0x0127,0x0126) - or CheckDeadUni12("c6",0x1E25,0x1E24))) + 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 send {blind}< @@ -547,27 +545,27 @@ neo_h: or CheckDeadUni("c5",0x2087))) Send {blind}{NumPad7} else if (Ebene = 5) - SendUnicodeChar(0x03C8) ;psi + SendUnicodeChar(0x03C8) ; psi else if (Ebene = 6) - SendUnicodeChar(0x03A8) ; Psi + SendUnicodeChar(0x03A8) ; Psi return neo_g: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a3",0x0123,0x0122) - or CheckDeadUni12("a4",0x0121,0x0120) - or CheckDeadUni12("c1",0x011D,0x011C) - or CheckDeadUni12("c3",0x011F,0x011E))) + 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))) ; größer gleich - send {blind}> + 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))) + or CheckDeadUni("c5",0x2088))) Send {blind}{NumPad8} else if (Ebene = 5) - SendUnicodeChar(0x03B3) ;gamma + SendUnicodeChar(0x03B3) ; gamma else if (Ebene = 6) - SendUnicodeChar(0x0393) ; Gamma + SendUnicodeChar(0x0393) ; Gamma return neo_f: @@ -576,19 +574,19 @@ neo_f: 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 + 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) - or CheckDeadUni("c5",0x2089))) - Send {blind}{NumPad9} + or CheckDeadUni("c5",0x2089))) + send {blind}{NumPad9} else if (Ebene = 5) SendUnicodeChar(0x03C6) ; phi else if (Ebene = 6) - SendUnicodeChar(0x03A6) ; Phi + SendUnicodeChar(0x03A6) ; Phi return neo_q: @@ -611,27 +609,27 @@ neo_sz: if (Ebene = 1) if (GetKeyState("CapsLock","T")) SendUnicodeChar(0x1E9E) ; versal-ß - else if (LangSTastatur = 1) + else if LangSTastatur send {blind}s else send ß else if (Ebene = 2) if (GetKeyState("CapsLock","T")) - if (LangSTastatur = 1) + if LangSTastatur send {blind}s else send ß else SendUnicodeChar(0x1E9E) ; versal-ß else if (Ebene = 3) - if (LangSTastatur = 1) + if LangSTastatur send ß else SendUnicodeChar(0x017F) ; langes s else if (Ebene = 5) - SendUnicodeChar(0x03C2) ; varsigma + SendUnicodeChar(0x03C2) ; varsigma else if (Ebene = 6) - SendUnicodeChar(0x2218) ; Verknüpfungsoperator + SendUnicodeChar(0x2218) ; Verknüpfungsoperator return @@ -639,7 +637,7 @@ neo_tot3: EbeneAktualisieren() if (Ebene = 1) { - deadUni(0x02DC) ;Tilde, tot + deadUni(0x02DC) ; Tilde, tot DeadKey := "t1" } else if (Ebene = 2) @@ -659,7 +657,7 @@ neo_tot3: } else if (Ebene = 5) { - deadUni(0x02DD) ;Doppelakut + deadUni(0x02DD) ; Doppelakut DeadKey := "t5" } else if (Ebene = 6) @@ -680,26 +678,26 @@ return neo_u: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a1",0x00FA,0x00DA) - or CheckDeadUni12("a2",0x00F9,0x00D9) - or CheckDeadUni12("a5",0x0173,0x0172) - or CheckDeadUni12("a6",0x016F,0x016E) - or CheckDeadUni12("c1",0x00FB,0x00DB) - or CheckDeadUni12("c2",0x01D4,0x01D3) - or CheckDeadUni12("c3",0x016D,0x016C) - or CheckDeadUni12("t1",0x0169,0x0168) - or CheckDeadUni12("t2",0x016B,0x016A) - or CheckDeadAsc12("t3","ü","Ü") - or CheckDeadUni12("t5",0x0171,0x0170))) + or CheckDeadUni12("a2",0x00F9,0x00D9) + or CheckDeadUni12("a5",0x0173,0x0172) + or CheckDeadUni12("a6",0x016F,0x016E) + or CheckDeadUni12("c1",0x00FB,0x00DB) + or CheckDeadUni12("c2",0x01D4,0x01D3) + or CheckDeadUni12("c3",0x016D,0x016C) + or CheckDeadUni12("t1",0x0169,0x0168) + or CheckDeadUni12("t2",0x016B,0x016A) + or CheckDeadAsc12("t3","ü","Ü") + or CheckDeadUni12("t5",0x0171,0x0170))) OutputChar("u","U") else if (Ebene = 3) send {blind}\ else if (Ebene = 4) Send {blind}{Home} - else if (Ebene = 5) + else if (Ebene = 5) ; leer { CompKey := PriorCompKey DeadKey := PriorDeadKey - } ; leer + } else if (Ebene = 6) SendUnicodeChar(0x222E) ; contour integral return @@ -707,21 +705,21 @@ return neo_i: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a1",0x00ED,0x00CD) - or CheckDeadUni12("a2",0x00EC,0x00CC) - or CheckDeadUni12("a4",0x012F,0x012E) - or CheckDeadUni12("a5",0x0131,0x0130) - or CheckDeadUni12("c1",0x00EE,0x00CE) - or CheckDeadUni12("c2",0x01D0,0x01CF) - or CheckDeadUni12("c3",0x012D,0x012C) - or CheckDeadUni12("t1",0x0129,0x0128) - or CheckDeadUni12("t2",0x012B,0x012A) - or CheckDeadAsc12("t3","ï","Ï"))) + or CheckDeadUni12("a2",0x00EC,0x00CC) + or CheckDeadUni12("a4",0x012F,0x012E) + or CheckDeadUni12("a5",0x0131,0x0130) + or CheckDeadUni12("c1",0x00EE,0x00CE) + or CheckDeadUni12("c2",0x01D0,0x01CF) + or CheckDeadUni12("c3",0x012D,0x012C) + or CheckDeadUni12("t1",0x0129,0x0128) + or CheckDeadUni12("t2",0x012B,0x012A) + or CheckDeadAsc12("t3","ï","Ï"))) OutputChar("i","I") else if (Ebene = 3) send {blind}`/ else if (Ebene = 4) Send {Blind}{Left} - else if (Ebene = 5 ) + else if (Ebene = 5) SendUnicodeChar(0x03B9) ; iota else if (Ebene = 6) SendUnicodeChar(0x222B) ; integral @@ -730,65 +728,65 @@ 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","ä","Ä"))) + 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) send {blind}{{} else if (Ebene = 4) Send {Blind}{Down} else if (Ebene = 5) - SendUnicodeChar(0x03B1) ;alpha + SendUnicodeChar(0x03B1) ; alpha else if (Ebene = 6) - SendUnicodeChar(0x2200) ;für alle + SendUnicodeChar(0x2200) ; für alle return neo_e: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a1",0x00E9,0x00C9) - or CheckDeadUni12("a2",0x00E8,0x00C8) - or CheckDeadUni12("a4",0x0117,0x0116) - or CheckDeadUni12("a5",0x0119,0x0118) - or CheckDeadUni12("c1",0x00EA,0x00CA) - or CheckDeadUni12("c2",0x011B,0x011A) - or CheckDeadUni12("c3",0x0115,0x0114) - or CheckDeadUni12("t2",0x0113,0x0112) - or CheckDeadAsc12("t3","ë","Ë") - or CheckCompAsc12("a","æ","Æ") - or CheckCompAsc12("A","Æ","Æ") - or CheckCompAsc12("o","œ","Œ") - or CheckCompAsc12("O","Œ","Œ"))) + or CheckDeadUni12("a2",0x00E8,0x00C8) + or CheckDeadUni12("a4",0x0117,0x0116) + or CheckDeadUni12("a5",0x0119,0x0118) + or CheckDeadUni12("c1",0x00EA,0x00CA) + or CheckDeadUni12("c2",0x011B,0x011A) + or CheckDeadUni12("c3",0x0115,0x0114) + or CheckDeadUni12("t2",0x0113,0x0112) + or CheckDeadAsc12("t3","ë","Ë") + or CheckCompAsc12("a","æ","Æ") + or CheckCompAsc12("A","Æ","Æ") + or CheckCompAsc12("o","œ","Œ") + or CheckCompAsc12("O","Œ","Œ"))) OutputChar("e","E") - else if (Ebene = 3) ; { + else if (Ebene = 3) send {blind}{}} else if (Ebene = 4) Send {Blind}{Right} else if (Ebene = 5) - SendUnicodeChar(0x03B5) ;epsilon + SendUnicodeChar(0x03B5) ; epsilon else if (Ebene = 6) - SendUnicodeChar(0x2203) ;es existiert + SendUnicodeChar(0x2203) ; es existiert return neo_o: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a1",0x00F3,0x00D3) - or CheckDeadUni12("a2",0x00F2,0x00D2) - or CheckDeadUni12("a5",0x01EB,0x01EA) - or CheckDeadUni12("c1",0x00F4,0x00D4) - or CheckDeadUni12("c2",0x01D2,0x01D1) - or CheckDeadUni12("c3",0x014F,0x014E) - or CheckDeadUni12("t1",0x00F5,0x00D5) - or CheckDeadUni12("t2",0x014D,0x014C) - or CheckDeadAsc12("t3","ö","Ö") - or CheckDeadUni12("t4",0x00F8,0x00D8) - or CheckDeadUni12("t5",0x0151,0x0150))) + or CheckDeadUni12("a2",0x00F2,0x00D2) + or CheckDeadUni12("a5",0x01EB,0x01EA) + or CheckDeadUni12("c1",0x00F4,0x00D4) + or CheckDeadUni12("c2",0x01D2,0x01D1) + or CheckDeadUni12("c3",0x014F,0x014E) + or CheckDeadUni12("t1",0x00F5,0x00D5) + or CheckDeadUni12("t2",0x014D,0x014C) + or CheckDeadAsc12("t3","ö","Ö") + or CheckDeadUni12("t4",0x00F8,0x00D8) + or CheckDeadUni12("t5",0x0151,0x0150))) OutputChar("o","O") else if (Ebene = 3) send {blind}* @@ -803,35 +801,55 @@ return neo_s: EbeneAktualisieren() 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))) + 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 LangSTastatur if (GetKeyState("CapsLock","T")) + { send {blind}s + if (PriorDeadKey = "comp") + Compkey := "s" + } else + { SendUnicodeChar(0x017F) ;langes S + if (PriorDeadKey = "comp") + CompKey := "lang_s" + } else + { send {blind}s - if (PriorDeadKey = "comp") - CompKey := "s" + if (PriorDeadKey = "comp") + CompKey := "s" + } } else if (Ebene = 2) { if LangSTastatur if (GetKeyState("CapsLock","T")) + { SendUnicodeChar(0x017F) ;langes S + if (PriorDeadKey = "comp") + CompKey := "lang_s" + } else + { send {blind}S + if (PriorDeadKey = "comp") + CompKey := "s" + } else + { send {blind}S - if (PriorDeadKey = "comp") - CompKey := "S" + if (PriorDeadKey = "comp") + CompKey := "S" + } } } else if (Ebene = 3) @@ -841,21 +859,21 @@ neo_s: else if (Ebene = 5) SendUnicodeChar(0x03C3) ;sigma else if (Ebene = 6) - SendUnicodeChar(0x03A3) ; Sigma + SendUnicodeChar(0x03A3) ;Sigma return neo_n: EbeneAktualisieren() 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))) + 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) - send {blind}( ; ) + send {blind}( else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2074) - or CheckDeadUni("c5",0x2084))) + or CheckDeadUni("c5",0x2084))) Send {blind}{NumPad4} else if (Ebene = 5) SendUnicodeChar(0x03BD) ; nu @@ -866,17 +884,17 @@ return neo_r: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a1",0x0155,0x0154) - or CheckDeadUni12("a3",0x0157,0x0156) - or CheckDeadUni12("a4",0x0E59,0x0E58) - or CheckDeadUni12("c2",0x0159,0x0158) - or CheckDeadUni12("c6",0x1E5B,0x1E5A) - or CheckCompAsc12("o","®","®") - or CheckCompAsc12("O","®","®"))) + or CheckDeadUni12("a3",0x0157,0x0156) + or CheckDeadUni12("a4",0x0E59,0x0E58) + or CheckDeadUni12("c2",0x0159,0x0158) + or CheckDeadUni12("c6",0x1E5B,0x1E5A) + 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) - or CheckDeadUni("c5",0x2085))) + or CheckDeadUni("c5",0x2085))) Send {blind}{NumPad5} else if (Ebene = 5) SendUnicodeChar(0x03F1) ; rho symbol (varrho) @@ -887,20 +905,20 @@ return neo_t: EbeneAktualisieren() 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))) + 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}- ; Bis + send {blind}- ; Bisstrich else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2076) or CheckDeadUni("c5",0x2086))) Send {blind}{NumPad6} else if (Ebene = 5) SendUnicodeChar(0x03C4) ; tau else if (Ebene = 6) - SendUnicodeChar(0x2202 ) ; partielle Ableitung + SendUnicodeChar(0x2202) ; partielle Ableitung return neo_d: @@ -916,16 +934,16 @@ neo_d: else if (Ebene = 4) send `, else if (Ebene = 5) - SendUnicodeChar(0x03B4) ;delta + SendUnicodeChar(0x03B4) ; delta else if (Ebene = 6) - SendUnicodeChar(0x0394) ; Delta + SendUnicodeChar(0x0394) ; Delta return neo_y: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a1",0x00FD,0x00DD) - or CheckDeadUni12("c1",0x0177,0x0176) - or CheckDeadAsc12("t3","ÿ",Ÿ))) + or CheckDeadUni12("c1",0x0177,0x0176) + or CheckDeadAsc12("t3","ÿ","Ÿ"))) OutputChar("y","Y") else if (Ebene = 3) send {blind}@ @@ -946,19 +964,19 @@ return neo_ü: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a1",0x01D8,0x01D7) - or CheckDeadUni12("a2",0x01DC,0x01DB) - or CheckDeadUni12("c2",0x01DA,0x01D9) - or CheckDeadUni12("t2",0x01D6,0x01D5))) + or CheckDeadUni12("a2",0x01DC,0x01DB) + or CheckDeadUni12("c2",0x01DA,0x01D9) + or CheckDeadUni12("t2",0x01D6,0x01D5))) OutputChar("ü","Ü") else if (Ebene = 3) send {#} else if (Ebene = 4) Send {blind}{Esc} - else if (Ebene = 5) + else if (Ebene = 5) ; leer { DeadKey := PriorDeadKey CompKey := PriorCompKey - } ; leer + } else if (Ebene = 6) SendUnicodeChar(0x221D) ; proportional return @@ -987,11 +1005,11 @@ neo_ else if (Ebene = 3) send {blind}| else if (Ebene = 4) - Send {blind}{PgDn} ; Next + Send {blind}{PgDn} ; Next else if (Ebene = 5) SendUnicodeChar(0x03B7) ; eta else if (Ebene = 6) - SendUnicodeChar(0x211C) ; altes R + SendUnicodeChar(0x211C) ; Fraktur R return neo_p: @@ -1003,29 +1021,29 @@ neo_p: else if (Ebene = 4) Send {blind}{Enter} else if (Ebene = 5) - SendUnicodeChar(0x03C0) ;pi + SendUnicodeChar(0x03C0) ; pi else if (Ebene = 6) - SendUnicodeChar(0x03A0) ; Pi + SendUnicodeChar(0x03A0) ; Pi return neo_z: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a1",0x017A,0x0179) - or CheckDeadUni12("a4",0x017C,0x017B) - or CheckDeadUni12("c2",0x017E,0x017D) - or CheckDeadUni12("c6",0x1E93,0x1E92))) + 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 + send ``{space} ; untot else if (Ebene = 4) { DeadKey := PriorDeadKey CompKey := PriorCompKey } ; leer else if (Ebene = 5) - SendUnicodeChar(0x03B6) ;zeta + SendUnicodeChar(0x03B6) ; zeta else if (Ebene = 6) - SendUnicodeChar(0x2124) ; Z (ganze Zahlen) + SendUnicodeChar(0x2124) ; Z (ganze Zahlen) return neo_b: @@ -1045,17 +1063,14 @@ return neo_m: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a4",0x1E41,0x1E40) - or CheckDeadUni12("c6",0x1E43,0x1E42) - or CheckCompUni12("t",0x2122,0x2122) ; TM - or CheckCompUni12("T",0x2122,0x2122) ; TM - or CheckCompUni12("s",0x2120,0x2120) ; SM - or CheckCompUni12("S",0x2120,0x2120))) ; SM - + or CheckDeadUni12("c6",0x1E43,0x1E42) + or CheckCompUni12("t",0x2122,0x2122) ; TM + or CheckCompUni12("s",0x2120,0x2120))) ; SM OutputChar("m","M") else if (Ebene = 3) send {blind}`% else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B9) - or CheckDeadUni("c5",0x2081))) + or CheckDeadUni("c5",0x2081))) Send {blind}{NumPad1} else if (Ebene = 5) SendUnicodeChar(0x03BC) ; griechisch mu, micro wäre 0x00B5 @@ -1075,7 +1090,7 @@ neo_komma: else if (Ebene = 3) send {blind}" else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B2) - or CheckDeadUni("c5",0x2082))) + or CheckDeadUni("c5",0x2082))) Send {blind}{NumPad2} else if (Ebene = 5) SendUnicodeChar(0x03C1) ; rho @@ -1095,12 +1110,12 @@ neo_punkt: else if (Ebene = 3) send {blind}' else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B3) - or CheckDeadUni("c5",0x2083))) + or CheckDeadUni("c5",0x2083))) Send {blind}{NumPad3} else if (Ebene = 5) SendUnicodeChar(0x03D1) ; theta symbol (vartheta) else if (Ebene = 6) - SendUnicodeChar(0x0398) ; Theta + SendUnicodeChar(0x0398) ; Theta return @@ -1108,12 +1123,12 @@ neo_j: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("c1",0x0135,0x0134) or CheckDeadUni12("c2",0x01F0,"") - or CheckCompUni12("i",0x0133,"") ; ij - or CheckCompUni12("I","",0x0132) ; IJ - or CheckCompUni12("l",0x01C9,"") ; lj - or CheckCompUni12("L",0x01C8,0x01C7) ; Lj/LJ - or CheckCompUni12("n",0x01CC,"") ; nj - or CheckCompUni12("N",0x01CB,0x01CA))) ; Nj/NJ + 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) send {blind}`; @@ -1129,343 +1144,325 @@ return Numpad - - folgende Tasten verhalten sich bei ein- und ausgeschaltetem - NumLock gleich: */ +neo_NumLock: + EbeneAktualisieren() + if (Ebene = 1) + send `= + if (Ebene = 2) ; Funktioniert nicht + { + SetNumLockState + send {NumLock} + } + if (Ebene = 3) + SendUnicodeChar(0x2248) ; Fast gleich + if (Ebene = 4) + SendUnicodeChar(0x2260) ; Ungleich zu +return + neo_NumpadDiv: EbeneAktualisieren() - if ((Ebene = 1) or (Ebene = 2)) + if Ebene14 send {blind}{NumpadDiv} + else if (Ebene = 2) + SendUnicodeChar(0x2215) ; Slash else if (Ebene = 3) send {blind}÷ - else if ((Ebene = 4) or (Ebene = 5)) - SendUnicodeChar(0x2215) ; slash return neo_NumpadMult: EbeneAktualisieren() - if ((Ebene = 1) or (Ebene = 2)) + if Ebene14 send {blind}{NumpadMult} + else if (Ebene = 2) + SendUnicodeChar(0x22C5) ; Cdot else if (Ebene = 3) send {blind}× - else if ((Ebene = 4) or (Ebene = 5)) - SendUnicodeChar(0x22C5) ; cdot return neo_NumpadSub: EbeneAktualisieren() - if (((Ebene = 1) or (Ebene = 2)) and !(CheckDeadUni("c1",0x207B) - or CheckDeadUni("c5",0x208B))) + if (Ebene14 and !(CheckDeadUni("c1",0x207B) + or CheckDeadUni("c5",0x208B))) send {blind}{NumpadSub} else if (Ebene = 3) - SendUnicodeChar(0x2212) ; echtes minus + SendUnicodeChar(0x2212) ; Echtes Minus return neo_NumpadAdd: EbeneAktualisieren() - if (((Ebene = 1) or (Ebene = 2)) and !(CheckDeadUni("c1",0x207A) - or CheckDeadUni("c5",0x208A))) + if (Ebene14 and !(CheckDeadUni("c1",0x207A) + or CheckDeadUni("c5",0x208A))) send {blind}{NumpadAdd} else if (Ebene = 3) send {blind}± - else if ((Ebene = 4) or (Ebene = 5)) - SendUnicodeChar(0x2213) ; -+ + else if (Ebene = 2) + SendUnicodeChar(0x2213) ; Inverses ± return neo_NumpadEnter: - EbeneAktualisieren() - if ((Ebene = 1) or (Ebene = 2)) - send {blind}{NumpadEnter} - else if (Ebene = 3) - SendUnicodeChar(0x2260) ; neq - else if ((Ebene = 4) or (Ebene = 5)) - SendUnicodeChar(0x2248) ; approx + send {blind}{NumpadEnter} return -/* - folgende Tasten verhalten sich bei ein- und ausgeschaltetem NumLock - unterschiedlich -*/ - - - neo_Numpad7: EbeneAktualisieren() - if ((Ebene = 1) and (NumLock = 0)) - send {blind}{NumpadHome} - else if ((Ebene = 2) and (NumLock = 1)) - send {blind}{Shift up}{NumpadHome}{Shift down} - else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) + if (Ebene = 1) { - if (Ebene = 1) + if NumLock send {blind}{Numpad7} else - send {blind){Shift up}{Numpad7}{Shift down} - + send {blind){Shift up}{Numpad7} if (PriorDeadKey = "comp") - CompKey := "Num_7" + CompKey := "7" } + else if (Ebene = 2) + SendUnicodeChar(0x2020) ; Kreuz else if (Ebene = 3) - SendUnicodeChar(0x2195) ; Hoch-Runter-Pfeil - else if ((Ebene = 4) or (Ebene = 5)) - SendUnicodeChar(0x226A) ; ll + SendUnicodeChar(0x2195) ; Hoch-Runter-Pfeil + else if (Ebene = 4) + if NumLock + send {blind}{Shift up}{NumpadHome} + else + send {blind}{NumpadHome} return neo_Numpad8: EbeneAktualisieren() - if ((Ebene = 1) and (NumLock = 0)) - send {blind}{NumpadUp} - else if ((Ebene = 2) and (NumLock = 1)) - send {blind}{Shift up}{NumpadUp}{Shift down} - else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) + 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 !(CheckCompUni("Num_1",0x215B) ; 1/8 - or CheckCompUni("1",0x215B) ; 1/8 - or CheckCompUni("Num_3",0x215C) ; 3/8 - or CheckCompUni("3",0x215C) ; 3/8 - or CheckCompUni("Num_5",0x215D) ; 3/8 - or CheckCompUni("5",0x215D) ; 5/8 - or CheckCompUni("Num_7",0x215E) ; 7/8 - or CheckCompUni("7",0x215E)) ; 7/8 - if (Ebene = 1) - send {blind}{Numpad8} - else - send {blind){Shift up}{Numpad8}{Shift down} - + if NumLock + send {blind}{Numpad8} + else + send {blind){Shift up}{Numpad8} if (PriorDeadKey = "comp") - CompKey := "Num_8" + CompKey := "8" } + else if (Ebene = 2) + SendUnicodeChar(0x2229) ; Durchschnitt else if (Ebene = 3) - SendUnicodeChar(0x2191) ; uparrow - else if ((Ebene = 4) or (Ebene = 5)) - SendUnicodeChar(0x2229) ; intersection + SendUnicodeChar(0x2191) ; Hochpfeil + else if (Ebene = 4) + if NumLock + send {blind}{Shift up}{NumpadUp} + else + send {blind}{NumpadUp} return neo_Numpad9: EbeneAktualisieren() - if ((Ebene = 1) and (NumLock = 0)) - send {blind}{NumpadPgUp} - else if ((Ebene = 2) and (NumLock = 1)) - send {blind}{Shift up}{NumpadPgUp}{Shift down} - else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) + if (Ebene = 1) { - if (Ebene = 1) + if NumLock send {blind}{Numpad9} else - send {blind){Shift up}{Numpad9}{Shift down} - + send {blind){Shift up}{Numpad9} if (PriorDeadKey = "comp") - CompKey := "Num_9" + CompKey := "9" } + else if (Ebene = 2) + SendUnicodeChar(0x2297) ; Tensorprodukt / Vektor in die Ebene zeigend else if (Ebene = 3) - SendUnicodeChar(0x2297) ; Tensorprodukt ; Vektor in die Ebene zeigend - else if ((Ebene = 4) or (Ebene = 5)) - SendUnicodeChar(0x226B) ; gg + SendUnicodeChar(0x220D) ; Kleines umgekehrtes Elementzeichen + else if (Ebene = 4) + if NumLock + send {blind}{Shift up}{NumpadPgUp} + else + send {blind}{NumpadPgUp} return - - neo_Numpad4: EbeneAktualisieren() - if ((Ebene = 1) and (NumLock = 0)) - send {blind}{NumpadLeft} - else if ((Ebene = 2) and (NumLock = 1)) - send {blind}{Shift up}{NumpadLeft}{Shift down} - else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) + if ((Ebene = 1) and !(CheckCompUni("1",0x00BC) ; 1/4 + or CheckCompUni("3",0x00BE))) ; 3/4 { - if !(CheckCompUni("Num_1",0x00BC) ; 1/4 - or CheckCompUni("1",0x00BE) ; 1/4 - or CheckCompUni("Num_3",0x00BE) ; 3/4 - or CheckCompUni("3",0x00BE)) ; 3/4 - if (Ebene = 1) - send {blind}{Numpad4} - else - send {blind){Shift up}{Numpad4}{Shift down} - + if NumLock + send {blind}{Numpad4} + else + send {blind){Shift up}{Numpad4} if (PriorDeadKey = "comp") - CompKey := "Num_4" + CompKey := "4" } + else if (Ebene = 2) + SendUnicodeChar(0x2282) ; Teilmenge else if (Ebene = 3) - SendUnicodeChar(0x2190) ; leftarrow - else if ((Ebene = 4) or (Ebene = 5)) - SendUnicodeChar(0x2282) ; subset of + SendUnicodeChar(0x2190) ; Linkspfeil + else if (Ebene = 4) + if NumLock + send {blind}{Shift up}{NumpadLeft} + else + send {blind}{NumpadLeft} return neo_Numpad5: EbeneAktualisieren() - if ((Ebene = 1) and (NumLock = 0)) - send {blind}{NumpadClear} - else if ((Ebene = 2) and (NumLock = 1)) - send {blind}{Shift up}{NumpadClear}{Shift down} - else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) + 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 !(CheckCompUni("Num_1",0x2155) ; 1/5 - or CheckCompUni("1",0x2155) ; 1/5 - or CheckCompUni("Num_2",0x2156) ; 2/5 - or CheckCompUni("2",0x2156) ; 2/5 - or CheckCompUni("Num_3",0x2157) ; 3/5 - or CheckCompUni("3",0x2157) ; 3/5 - or CheckCompUni("Num_4",0x2158) ; 4/5 - or CheckCompUni("4",0x2158)) ; 4/5 - if (Ebene = 1) - send {blind}{Numpad5} - else - send {blind){Shift up}{Numpad5}{Shift down} - + if NumLock + send {blind}{Numpad5} + else + send {blind){Shift up}{Numpad5} if (PriorDeadKey = "comp") - CompKey := "Num_5" + CompKey := "5" } else if (Ebene = 3) - SendUnicodeChar(0x221E) ; INFINITY - else if ((Ebene = 4) or (Ebene = 5)) - SendUnicodeChar(0x220B) ; enthält das Element + SendUnicodeChar(0x221E) ; Unendlich + else if (Ebene = 2) + SendUnicodeChar(0x20AC) ; Euro + else if (Ebene = 4) ; Beg + if NumLock + send {NumPad5} + else + send {Shift}{Numpad5} return neo_Numpad6: EbeneAktualisieren() - if ((Ebene = 1) and (NumLock = 0)) - send {blind}{NumpadRight} - else if ((Ebene = 2) and (NumLock = 1)) - send {blind}{Shift up}{NumpadRight}{Shift down} - else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) + if ((Ebene = 1) and !(CheckCompUni("1",0x2159) ; 1/6 + or CheckCompUni("5",0x215a))) ; 5/6 { - if !(CheckCompUni("Num_1",0x2159) ; 1/6 - or CheckCompUni("1",0x2159) ; 1/6 - or CheckCompUni("Num_5",0x215A) ; 5/6 - or CheckCompUni("5",0x215A)) ; 5/6 - if (Ebene = 1) - send {blind}{Numpad6} - else - send {blind){Shift up}{Numpad6}{Shift down} - + if NumLock + send {blind}{Numpad6} + else + send {blind){Shift up}{Numpad6} if (PriorDeadKey = "comp") - CompKey := "Num_6" + CompKey := "6" } + else if (Ebene = 2) + SendUnicodeChar(0x2283) ; Obermenge else if (Ebene = 3) - SendUnicodeChar(0x2192) ; rightarrow - else if ((Ebene = 4) or (Ebene = 5)) - SendUnicodeChar(0x2283) ; superset of + SendUnicodeChar(0x2192) ; Rechtspfeil + else if (Ebene = 4) + if NumLock + send {blind}{Shift up}{NumpadRight} + else + send {blind}{NumpadRight} return neo_Numpad1: EbeneAktualisieren() - if ((Ebene = 1) and (NumLock = 0)) - send {blind}{NumpadEnd} - else if ((Ebene = 2) and (NumLock = 1)) - send {blind}{Shift up}{NumpadEnd}{Shift down} - else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) + if (Ebene = 1) { - if (Ebene = 1) + if NumLock send {blind}{Numpad1} else - send {blind){Shift up}{Numpad1}{Shift down} - + send {blind){Shift up}{Numpad1} if (PriorDeadKey = "comp") - CompKey := "Num_1" + CompKey := "1" } + else if (Ebene = 2) + SendUnicodeChar(0x2714) ; Häkchen else if (Ebene = 3) SendUnicodeChar(0x2194) ; Links-Rechts-Pfeil - else if ((Ebene = 4) or (Ebene = 5)) - SendUnicodeChar(0x2264) ; leq + else if (Ebene = 4) + if NumLock + send {blind}{Shift up}{NumpadEnd} + else + send {blind}{NumpadEnd} return neo_Numpad2: EbeneAktualisieren() - if ((Ebene = 1) and (NumLock = 0)) - send {blind}{NumpadDown} - else if ((Ebene = 2) and (NumLock = 1)) - send {blind}{Shift up}{NumpadDown}{Shift down} - else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) + if ((Ebene = 1) and !(CheckCompUni("1",0x00BD))) ; 1/2 { - if !(CheckCompUni("Num_1",0x00BD) ; 1/2 - or CheckCompUni("1",0x00BD)) ; 1/2 - if (Ebene = 1) - send {blind}{Numpad2} - else - send {blind){Shift up}{Numpad2}{Shift down} - + if NumLock + send {blind}{Numpad2} + else + send {blind){Shift up}{Numpad2} if (PriorDeadKey = "comp") - CompKey := "Num_2" + CompKey := "2" } + else if (Ebene = 2) + SendUnicodeChar(0x222A) ; Vereinigung else if (Ebene = 3) - SendUnicodeChar(0x2193) ; downarrow - else if ((Ebene = 4) or (Ebene = 5)) - SendUnicodeChar(0x222A) ; vereinigt + SendUnicodeChar(0x2192) ; Untenpfeil + else if (Ebene = 4) + if NumLock + send {blind}{Shift up}{NumpadDown} + else + send {blind}{NumpadDown} return neo_Numpad3: EbeneAktualisieren() - if ((Ebene = 1) and (NumLock = 0)) - send {blind}{NumpadPgDn} - else if ((Ebene = 2) and (NumLock = 1)) - send {blind}{Shift up}{NumpadPgDn}{Shift down} - else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) + if ((Ebene = 1) and !(CheckCompUni("1",0x2153) ; 1/3 + or CheckCompUni("5",0x2154))) ; 2/3 { - if !(CheckCompUni("Num_1",0x2153) ; 1/3 - or CheckCompUni("1",0x2154) ; 1/3 - or CheckCompUni("Num_2",0x2154) ; 2/3 - or CheckCompUni("2",0x2154)) ; 2/3 - if (Ebene = 1) - send {blind}{Numpad3} - else - send {blind){Shift up}{Numpad3}{Shift down} - + if NumLock + send {blind}{Numpad3} + else + send {blind){Shift up}{Numpad3} if (PriorDeadKey = "comp") - CompKey := "Num_3" + CompKey := "3" } + else if (Ebene = 2) + SendUnicodeChar(0x2718) ; Kreuzchen else if (Ebene = 3) - SendUnicodeChar(0x21CC) ; RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON - else if ((Ebene = 4) or (Ebene = 5)) - SendUnicodeChar(0x2265) ; geq + SendUnicodeChar(0x2192) ; Rechtspfeil + else if (Ebene = 4) + if NumLock + send {blind}{Shift up}{NumpadPgDn} + else + send {blind}{NumpadPgDn} return neo_Numpad0: EbeneAktualisieren() - if ((Ebene = 1) and (NumLock = 0)) - send {blind}{NumpadIns} - else if ((Ebene = 2) and (NumLock = 1)) - send {blind}{Shift up}{NumpadIns}{Shift down} - else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) + if (Ebene = 1) { - if (Ebene = 1) + if NumLock send {blind}{Numpad0} else - send {blind){Shift up}{Numpad0}{Shift down} - + send {blind){Shift up}{Numpad0} if (PriorDeadKey = "comp") - CompKey := "Num_0" + CompKey := "0" } + else if (Ebene = 2) + SendUnicodeChar(0x2030) ; Promille else if (Ebene = 3) - send {blind}`% - else if ((Ebene = 4) or (Ebene = 5)) - send ‰ + SendUnicodeChar(0x0025) ; Prozent + else if (Ebene = 4) + if NumLock + send {blind}{Shift up}{NumpadIns} + else + send {blind}{NumpadIns} return neo_NumpadDot: EbeneAktualisieren() - if ((Ebene = 1) and (NumLock = 0)) - send {blind}{NumpadDel} - else if ((Ebene = 2) and (NumLock = 1)) - send {blind}{Shift up}{NumpadDel}{Shift down} - else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) - if (Ebene = 1) + if (Ebene = 1) + { + if NumLock send {blind}{NumpadDot} - else - send {blind){Shift up}{NumpadDot}{Shift down} + else + send {blind){Shift up}{NumpadDot} + } + else if (Ebene = 2) + send `, else if (Ebene = 3) send {blind}. - else if ((Ebene = 4) or (Ebene = 5)) - send `, + else if (Ebene = 4) + if NumLock + send {blind}{Shift up}{NumpadDel} + else + send {blind}{NumpadDel} return + + /* Sondertasten */ + *space:: if ((einHandNeo)) spacepressed := 1 @@ -1512,11 +1509,7 @@ return /* Folgende Tasten sind nur aufgeführt, um PriorDeadKey zu leeren. Irgendwie sieht das noch nicht schön aus. Vielleicht lässt sich dieses - Problem irgendwie eleganter lösen... - - Nachtrag: - Weil es mit Alt+Tab Probleme gab, wird hier jetzt erstmal rumgeflickschustert, - bis eine allgemeinere Lösung gefunden wurde. + Problem auch eleganter lösen... */ *Enter:: @@ -1535,6 +1528,7 @@ return } return + *Del:: if (not(lernModus) or lernModus_std_Entf) send {Blind}{Del} diff --git a/windows/autohotkey/Source/Keys-Qwert-to-Neo.ahk b/windows/autohotkey/Source/Keys-Qwert-to-Neo.ahk index 8485b03..062fcb2 100644 --- a/windows/autohotkey/Source/Keys-Qwert-to-Neo.ahk +++ b/windows/autohotkey/Source/Keys-Qwert-to-Neo.ahk @@ -443,6 +443,7 @@ VK09SC00F::goto neo_tab } ; Numpad +*VK90SC145::goto neo_NumLock *VK6FSC135::goto neo_NumpadDiv *VK6ASC037::goto neo_NumpadMult *VK6DSC04A::goto neo_NumpadSub diff --git a/windows/autohotkey/Source/Methods-Layers.ahk b/windows/autohotkey/Source/Methods-Layers.ahk index e2cdb99..362858c 100644 --- a/windows/autohotkey/Source/Methods-Layers.ahk +++ b/windows/autohotkey/Source/Methods-Layers.ahk @@ -1,103 +1,137 @@ -/* - ------------------------------------------------------ - Modifier - ------------------------------------------------------ -*/ - - -;LShift+RShift == CapsLock (simuliert) +; LShift+RShift == CapsLock (simuliert) ; Es werden nur die beiden Tastenkombinationen abgefragt, ; daher kommen LShift und RShift ungehindert bis in die ; Applikation. Dies ist aber merkwürdig, da beide Shift- ; Tasten nun /modifier keys/ werden und, wie in der AHK- ; Hilfe beschrieben, eigentlich nicht mehr bis zur App ; durchkommen sollten. +; KeyboardLED(4,"switch") hatte ich zuerst genommen, aber +; das schaltet, oh Wunder, die LED nicht wieder aus. +isMod2Locked = 0 VKA1SC136 & VKA0SC02A:: ; RShift, dann LShift VKA0SC02A & VKA1SC136:: ; LShift, dann RShift -; -; mit diesen funktioniert das automatische Übernehmen der -; gedrückten Shift-Tasten nicht, also z.B. Shift-Ins, wenn Ins -; bei gedrückter Shift-Taste {blind} gesendet wird -; *VKA1SC136:: -; *VKA0SC02A:: - if (GetKeyState("VKA1SC136", "P") and GetKeyState("VKA0SC02A", "P")) - send {blind}{CapsLock} + if (GetKeyState("VKA1SC136", "P") and GetKeyState("VKA0SC02A", "P")) + { + if isMod2Locked + { + isMod2Locked = 0 + KeyboardLED(4,"off") + } + else + { + isMod2Locked = 1 + KeyBoardLED(4,"on") + } + } return - -; Mod3+Mod3 == Mod3-Lock -; Im Gegensatz zu LShift+RShift werden die beiden Tasten -; _nicht_ zur Applikation weitergeleitet, da '#' kein -; Modifier ist und CapsLock sonst den CapsLock-Status -; beeinflusst. Dafür werden sämtliche Events dieser -; Tasten abgefangen, und nur bei gleichzeitigem Drücken -; wird der Mod3-Lock aktiviert und angezeigt. - -IsMod3Locked := 0 -; VKBFSC02B & VK14SC03A:: -; VK14SC03A & VKBFSC02B:: +;Mod3-Tasten (Wichtig, sie werden sonst nicht verarbeitet!) *VKBFSC02B:: ; # *VK14SC03A:: ; CapsLock - if (GetKeyState("VKBFSC02B", "P") and GetKeyState("VK14SC03A", "P")) - { - if (IsMod3Locked) - { - IsMod3Locked = 0 - if (zeigeLockBoxen==1) - { - MsgBox Mod3-Feststellung aufgebehoben! - } - } - else - { - IsMod3Locked = 1 - if (zeigeLockBoxen==1) - { - MsgBox Mod3 festgestellt: Um Mod3 wieder zu lösen drücke beide Mod3 Tasten gleichzeitig! - } - - } - } return -; Mod4+Mod4 == Mod4-Lock -; Wie bei Mod3-Lock werden im Gegensatz zu LShift+RShift -; die beiden Tasten _nicht_ zur Applikation weitergeleitet, -; und nur bei gleichzeitigem Drücken wird der Mod4-Lock -; aktiviert und angezeigt. +;Mod4+Mod4 == Mod4-Lock +; Im Gegensatz zu LShift+RShift werden die beiden Tasten +; _nicht_ zur Applikation weitergeleitet, und nur bei +; gleichzeitigem Drücken wird der Mod4-Lock aktiviert und +; angezeigt. IsMod4Locked := 0 -; VKA5SC138 & VKE2SC056:: ; AltGr, dann < -; VKE2SC056 & VKA5SC138:: ; <, dann AltGr *VKA5SC138:: *VKE2SC056:: - if (GetKeyState("VKA5SC138", "P") and GetKeyState("VKE2SC056", "P")) - { - ; Mod4-Lock durch Mod4(rechts)+Mod4(links) - if (IsMod4Locked) - { - if (zeigeLockBoxen==1) - { - MsgBox Mod4-Feststellung aufgebehoben! - } - IsMod4Locked = 0 - if (UseMod4Light==1) - { - KeyboardLED(1,"off") - } - } - else - { - if (zeigeLockBoxen==1) - { - MsgBox Mod4 festgestellt: Um Mod4 wieder zu lösen drücke beide Mod3 Tasten gleichzeitig! - } - IsMod4Locked = 1 - if (UseMod4Light==1) - { - KeyboardLED(1,"on") - } - } - } + if (GetKeyState("VKA5SC138", "P") and GetKeyState("VKE2SC056", "P")) + { + if IsMod4Locked + { + if zeigeLockBox + MsgBox Mod4-Feststellung aufgebehoben! + IsMod4Locked = 0 + if UseMod4Light + KeyboardLED(1,"off") + } + else + { + if zeigeLockBox + MsgBox Mod4 festgestellt: Um Mod4 wieder zu lösen, drücke beide Mod4-Tasten gleichzeitig! + IsMod4Locked = 1 + if UseMod4Light + KeyboardLED(1,"on") + } + } return + +Ebene12 := 0 +Ebene7 := 0 +Ebene8 := 0 + +EbeneAktualisieren() +{ + global + PriorDeadKey := DeadKey + PriorCompKey := CompKey + DeadKey := "" + CompKey := "" + Modstate := IsMod4Pressed() . IsMod3Pressed() . IsShiftPressed() + if ahkTreiberKombi + if ( Modstate = "001") + Ebene = 6 + else + Ebene = -1 + else + if (Modstate = "000") ; Ebene 1: Ohne Mod + Ebene = 1 + else if (Modstate = "001") ; Ebene 2: Shift + Ebene = 2 + else if (Modstate = "010") ; Ebene 3: Mod3 + Ebene = 3 + else if (Modstate = "100") ; Ebene 4: Mod4 + Ebene = 4 + else if (Modstate = "011") ; Ebene 5: Shift+Mod3 + Ebene = 5 + else if (Modstate = "110") ; Ebene 6: Mod3+Mod4 + Ebene = 6 + else if (Modstate = "101") ; Ebene 7: Shift+Mod4 impliziert Ebene 4 + { + Ebene = 4 + Ebene7 = 1 + } + else if (Modstate = "111") ; Ebene 8: Shift+Mod3+Mod4 impliziert Ebene 6 + { + Ebene = 6 + Ebene8 = 1 + } + Ebene12 := ((Ebene = 1) or (Ebene = 2)) + Ebene14 := ((Ebene = 1) or (Ebene = 4)) + GetKeyState("NumLock","T") +} + + +IsShiftPressed() +{aAAA + global + return ((GetKeyState("Shift","P")) = !(isMod2Locked)) ;xor +} + +IsMod3Pressed() +{ + global + return ((GetKeyState("CapsLock","P")) or (GetKeyState("#","P"))) +} + +IsMod4Pressed() +{ + global + if( not(einHandNeo) or not(spacepressed)) + if IsMod4Locked + return (not ( GetKeyState("<","P") or GetKeyState("SC138","P"))) + else + return ( GetKeyState("<","P") or GetKeyState("SC138","P")) + else + if IsMod4Lock + return (not ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("ä","P"))) + else + return ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("ä","P")) +} + + diff --git a/windows/autohotkey/Source/Methods-Lights.ahk b/windows/autohotkey/Source/Methods-Lights.ahk index 4c327e1..860d583 100644 --- a/windows/autohotkey/Source/Methods-Lights.ahk +++ b/windows/autohotkey/Source/Methods-Lights.ahk @@ -6,7 +6,7 @@ Benutzungshinweise: Man benutze KeyboardLED(LEDvalue,"Cmd"), wobei Cmd = on/off/switch, - LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4 + LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4, bzw. eine beliebige Summe dieser Werte: AlleAus=0, CapsLock+NumLock=6, etc. @@ -14,7 +14,7 @@ http://www.autohotkey.com/forum/viewtopic.php?t=10532 Um eventuelle Wechselwirkungen mit dem bestehenden - Code (insb. der Unicode-Konvertierung) auszuschießen, + Code (insb. der Unicode-Konvertierung) auszuschließen, sind auch alle (Hilfsmethoden) mit dem Postfix LED versehen worden. ------------------------------------------------------ diff --git a/windows/autohotkey/Source/Methods-Other.ahk b/windows/autohotkey/Source/Methods-Other.ahk index e80d2e4..610f763 100644 --- a/windows/autohotkey/Source/Methods-Other.ahk +++ b/windows/autohotkey/Source/Methods-Other.ahk @@ -1,135 +1,3 @@ -/* - Funktionen -*/ - -/* -Ebenen laut Referenz: -1. Ebene (kein Mod) 4. Ebene (Mod4) -2. Ebene (Umschalt) 5. Ebene (Umschalt+Mod3) -3. Ebene (Mod3) 6. Ebene (Mod3+Mod4) -*/ - -EbeneAktualisieren() -{ - global - PriorDeadKey := DeadKey - PriorCompKey := CompKey - DeadKey := "" - CompKey := "" - Ebene12 := 0 - Ebene7 := 0 - Ebene8 := 0 - Modstate := IsShiftPressed() . IsMod3Pressed() . IsMod4Pressed() - - if (ahkTreiberKombi) - if ( Modstate = "001") - Ebene = 6 - else - Ebene = -1 - else - if (Modstate = "000") - Ebene = 1 ; Ebene 1: Ohne Mod - else if (Modstate = "100") - Ebene = 2 ; Ebene 2: Shift - else if (Modstate = "010") - Ebene = 3 ; Ebene 3: Mod3 - else if (Modstate = "001") - Ebene = 4 ; Ebene 4: Mod4 - else if (Modstate = "110") - Ebene = 5 ; Ebene 5: Shift+Mod3 - else if (Modstate = "011") - Ebene = 6 ; Ebene 6: Mod3+Mod4 - else if (Modstate = "101") - { - Ebene = 4 ; Ebene 7: Shift+Mod4 impliziert Ebene 4 - Ebene7 = 1 - } - else if (Modstate = "111") - { - Ebene = 6 ; Ebene 8: Shift+Mod3+Mod4 impliziert Ebene 6 - Ebene8 = 1 - } - - Ebene12 := ((Ebene = 1) or (Ebene = 2)) - - if GetKeyState("NumLock","T") - NumLock = 1 - else - NumLock = 0 -} - - -IsShiftPressed() -{ - return GetKeyState("Shift","P") -} - -IsMod3Pressed() -{ - global - if (IsMod3Locked) - { - return (not ( GetKeyState("CapsLock","P") or GetKeyState("#","P") )) ; # = SC02B - } - else { - return ( GetKeyState("CapsLock","P") or GetKeyState("#","P") ) ; # = SC02B - } -} - -IsMod4Pressed() -{ - global - if( not(einHandNeo) or not(spacepressed) ) - { - if (IsMod4Locked) - { - return (not ( GetKeyState("<","P") or GetKeyState("SC138","P"))) - } - else { - return ( GetKeyState("<","P") or GetKeyState("SC138","P")) - } - } - else - { - if (IsMod4Locked) - { - return (not ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("ä","P"))) - } - else { - return ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("ä","P")) - } - } - -} - - -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) - } -} -/* -Ü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. -*/ - - BSSendUnicodeChar(charCode) { send {bs} @@ -148,12 +16,6 @@ Comp3UnicodeChar(charCode) SendUnicodeChar(charCode) } - -EncodeInteger(ref, val) -{ - DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val) -} - deadAsc(val) { global diff --git a/windows/autohotkey/Source/Methods-ScreenKeyboard.ahk b/windows/autohotkey/Source/Methods-ScreenKeyboard.ahk index 6b12990..a64c426 100644 --- a/windows/autohotkey/Source/Methods-ScreenKeyboard.ahk +++ b/windows/autohotkey/Source/Methods-ScreenKeyboard.ahk @@ -173,98 +173,4 @@ ToggleAlwaysOnTop: alwaysOnTop = 1 } Return - ; Ende der BildschirmTastatur - -/* - ------------------------------------------------------ - Shift+Pause "pausiert" das Script. - ------------------------------------------------------ -*/ - -*pause:: -Suspend, Permit - if isshiftpressed() - goto togglesuspend - else - send {blind}{pause} -return - -; ------------------------------------ - -^.::einHandNeo := not(einHandNeo) ; Punkt -^,::lernModus := not(lernModus) ; Komma - - - -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 - } - -return - - -help: - Run, %A_WinDir%\hh mk:@MSITStore:autohotkey.chm -return - - -about: - msgbox, 64, %name% – Ergonomische Tastaturbelegung, - ( - %name% - `nDas Neo-Layout ersetzt das übliche deutsche - Tastaturlayout mit der Alternative Neo, - beschrieben auf http://neo-layout.org/. - `nDazu sind keine Administratorrechte nötig. - `nWenn Autohotkey aktiviert ist, werden alle Tastendrucke - abgefangen und statt dessen eine Übersetzung weitergeschickt. - `nDies geschieht transparent für den Anwender, - es muss nichts installiert werden. - `nDie Zeichenübersetzung kann leicht über das Icon im - Systemtray deaktiviert werden. `n - ) -return - - -neo: - run http://neo-layout.org/ -return - -autohotkey: - run http://autohotkey.com/ -return - -open: - ListLines ; shows the Autohotkey window -return - -edit: - edit -return - -reload: - Reload -return - -hide: - menu, tray, noicon -return - -exitprogram: - exitapp -return diff --git a/windows/autohotkey/Source/Methods-Unicode.ahk b/windows/autohotkey/Source/Methods-Unicode.ahk index 00a5ba5..227bedf 100644 --- a/windows/autohotkey/Source/Methods-Unicode.ahk +++ b/windows/autohotkey/Source/Methods-Unicode.ahk @@ -32,5 +32,34 @@ BSUnicode(code) 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) + } +} + +EncodeInteger(ref, val) +{ + DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val) +} diff --git a/windows/autohotkey/Source/Warning.ahk b/windows/autohotkey/Source/Warning.ahk index 6148298..514b391 100644 --- a/windows/autohotkey/Source/Warning.ahk +++ b/windows/autohotkey/Source/Warning.ahk @@ -10,7 +10,6 @@ Alle weiterf == Hinweise für Entwickler == in der Datei README.txt! ******************************************* -*/ @@ -28,7 +27,9 @@ in der Datei README.txt! -/* + + + ******************************************* Das war die letzte WARNUNG, ich hoffe nur dass Sie wirklich wissen was Sie hier tun wollen ... -- cgit v1.2.3