From b9516f7014be35899e7bdfcd151a82be56901d9b Mon Sep 17 00:00:00 2001 From: martin_r Date: Tue, 8 Jul 2008 21:22:57 +0000 Subject: neo20-all-in-one.ahk und -.exe aktualisiert git-svn-id: https://svn.neo-layout.org@627 b9310e46-f624-0410-8ea1-cfbb3a30dc96 --- windows/autohotkey/neo20-all-in-one.ahk | 161 ++++++++++++++++++++------------ windows/autohotkey/neo20-all-in-one.exe | Bin 421726 -> 421096 bytes 2 files changed, 102 insertions(+), 59 deletions(-) diff --git a/windows/autohotkey/neo20-all-in-one.ahk b/windows/autohotkey/neo20-all-in-one.ahk index 556306d..aa8089e 100644 --- a/windows/autohotkey/neo20-all-in-one.ahk +++ b/windows/autohotkey/neo20-all-in-one.ahk @@ -137,29 +137,28 @@ DU BIST GEWARNT WORDEN! nicht mehr abgefangen werden müssen. - Testen ob die Capslocklösung (siehe *1:: ebene 1) auch für Numpad gebraucht wird - Sind Ebenen vom Touchpad noch richtig? - - Die Bildschirmtastatur mit Mod4 deaktiviert den Mod4-Lock + - Die Bildschirmtastatur mit Mod4 deaktiviert den Mod4-Lock Ideen: - Symbol ändern (Neo-Logo abwarten) - bei Ebene 4 rechte Hand (Numpad) z.B. Numpad5 statt 5 senden - CHANGEHISTORY: - - + CHANGEHISTORY: - Revision: 616 + Revision 624(von Martin Roppelt): + - Lang-s-Tastatur (ein- und auszuschalten durch Mod4+ß) Revision 616 (von Dennis Heidsiek): - - Der nicht funktionierender Mod5-Lock-Fix wurde wieder entfernt, da + - Der nicht funktionierende Mod5-Lock-Fix wurde wieder entfernt, da er sogar neue Fehler produzierte. Revision 615 (von Dennis Heidsiek): - Erfolgloser Versuch, den Mod4-Lock wiederherzustellen - (durch eine Tilde von den Scancodes der Bildschirmtastatur). + (durch eine Tilde vor den Scancodes der Bildschirmtastatur). - Rechtschreibfehler korrigiert. - Zwei AHK-Links eingefügt. Revision 609 (von Dennis Heidsiek): - Vorläufiger Abschluss der AHK-Modularisierung. - Bessere Testmöglichkeit »All.ahk« für AHK-Entwickler hinzugefügt, bei der sich die Zeilenangaben in Fehlermeldungen auf die tatsächlichen Module und - nicht auf das grosse »vereinigte« Skript beziehen. + nicht auf das große »vereinigte« Skript beziehen. Revision 608 (von Martin Roppelt): - Rechtschreibfehler korrigiert und Dateinamen aktualisiert und sortiert. Revision 590 (von Dennis Heidsiek): @@ -276,11 +275,12 @@ DU BIST GEWARNT WORDEN! */ ; Im folgenden gilt (soweit nicht anders angegeben) Ja = 1, Nein = 0: -ahkTreiberKombi := 0 ; Sollen Ebenen 1-4 ignoriert werden? (kann z.B. vom dll Treiber übernommen werden) -einHandNeo := 0 ; Soll der Treiber im Einhandmodus betrieben werden? -lernModus := 0 ; Soll der Lernmodus aktiviert werden? -bildschirmTastaturEinbinden := 1 ; Sollen die Bilder für die Bildschirmtastatur in die EXE-Datei miteingebunden werden (Nachteil: grössere Dateigrösse, Vorteil: Referenz für Anfanger stets einfach verfügbar) -UseMod4Light := 1 ; Aktivierter Mod4 Lock wird über die Rollen-LED des Keybord angezeigt (analog zu CapsLock) +ahkTreiberKombi := 0 ; Sollen Ebenen 1-4 ignoriert werden? (kann z.B. vom dll Treiber übernommen werden) +einHandNeo := 0 ; Soll der Treiber im Einhandmodus betrieben werden? +lernModus := 0 ; Soll der Lernmodus aktiviert werden? +bildschirmTastaturEinbinden := 1 ; Sollen die Bilder für die Bildschirmtastatur in die EXE-Datei miteingebunden werden (Nachteil: grössere Dateigrösse, Vorteil: Referenz für Anfänger stets einfach verfügbar) +UseMod4Light := 1 ; Aktivierter Mod4 Lock wird über die Rollen-LED des Keybord angezeigt (analog zu CapsLock) +LangSTastatur := 0 ; Sollen Lang-s auf s, s auf ß und ß auf M3+ß gelegt werden? Process, Priority,, High @@ -508,22 +508,24 @@ IsMod4Locked := 0 < & *SC138:: if (IsMod4Locked) { -; MsgBox Mod4-Feststellung aufgebehoben + MsgBox Mod4-Feststellung aufgebehoben IsMod4Locked = 0 - if (UseMod4Light==1) { + if (UseMod4Light==1) + { KeyboardLED(1,"off") } } else { -; MsgBox Mod4 festgestellt: Um Mod4 wieder zu lösen drücke beide Mod4 Tasten gleichzeitig + MsgBox Mod4 festgestellt: Um Mod4 wieder zu lösen drücke beide Mod4 Tasten gleichzeitig IsMod4Locked = 1 - if (UseMod4Light==1) { + if (UseMod4Light==1) + { KeyboardLED(1,"on") } - } return + *SC138:: altGrPressed := 1 return ; Damit AltGr nicht extra etwas schickt und als stiller Modifier geht. @@ -531,7 +533,7 @@ return ; Damit AltGr nicht extra etwas schickt und als stiller Modifier geht. altGrPressed := 0 return -/* ; das folgende wird seltsamerweise nicht gebraucht :) oder führt zum AltGr Bug; Umschalt+‹ (Mod4) Zeigt ‹ +; das folgende wird seltsamerweise nicht gebraucht :) oder führt zum AltGr Bug; Umschalt+‹ (Mod4) Zeigt ‹ SC138 & *<:: if (IsMod4Locked) { @@ -544,7 +546,7 @@ SC138 & *<:: IsMod4Locked = 1 } return -*/ + ; Mod3-Lock durch Mod3+Mod3 IsMod3Locked := 0 @@ -658,7 +660,7 @@ return { goto neo_sz } -*SC00D::goto neo_tot2 ; Akkut +*SC00D::goto neo_tot2 ; Akut ; Reihe 2 *Tab::goto neo_tab *q:: @@ -1081,7 +1083,7 @@ Die eigentliche NEO-Belegung und der Hauptteil des AHK-Treibers. 1. Ebene Aktualisieren 2. Abhängig von der Variablen "Ebene" Zeichen ausgeben und die Variable "PriorDeadKey" setzen - Ablauf bei "lebenden" (sagt man das?) Tasten: + Ablauf bei "untoten" Tasten: 1. Ebene Aktualisieren 2. Abhängig von den Variablen "Ebene" und "PriorDeadKey" Zeichen ausgeben 3. "PriorDeadKey" mit leerem String überschreiben @@ -1101,27 +1103,27 @@ neo_tot1: } else if Ebene = 2 { - SendUnicodeChar(0x02C7) ; caron, tot + SendUnicodeChar(0x02C7) ; caron, tot PriorDeadKey := "c2" } else if Ebene = 3 { - SendUnicodeChar(0x02D8) ; brevis + SendUnicodeChar(0x02D8) ; brevis PriorDeadKey := "c3" } else if Ebene = 4 { - SendUnicodeChar(0x00B7) ; Mittenpunkt, tot + SendUnicodeChar(0x00B7) ; Mittenpunkt, tot PriorDeadKey := "c5" } else if Ebene = 5 { - send - ; querstrich, tot + send - ; querstrich, tot PriorDeadKey := "c4" } else if Ebene = 6 { - Send . ; punkt darunter (colon) + Send . ; punkt darunter (colon) PriorDeadKey := "c6" } return @@ -2240,13 +2242,13 @@ neo_f: BSSendUnicodeChar(0x2259) ; entspricht else if (PriorDeadKey = "t1") ; tilde BSSendUnicodeChar(0x2245) ; ungefähr gleich - else if (PriorDeadKey = "t5") ; Schrägstrich + else if (PriorDeadKey = "t5") ; Schrägstrich BSSendUnicodeChar(0x2260) ; ungleich - else if (PriorDeadKey = "c4") ; Querstrich + else if (PriorDeadKey = "c4") ; Querstrich BSSendUnicodeChar(0x2261) ; identisch - else if (PriorDeadKey = "c2") ; caron + else if (PriorDeadKey = "c2") ; caron BSSendUnicodeChar(0x225A) ; EQUIANGULAR TO - else if (PriorDeadKey = "a6") ; ring drüber + else if (PriorDeadKey = "a6") ; ring drüber BSSendUnicodeChar(0x2257) ; ring equal to else send `= @@ -2285,7 +2287,7 @@ neo_q: Send {+} } else if Ebene = 5 - SendUnicodeChar(0x03D5) ; phi symbol (varphi) + SendUnicodeChar(0x03D5) ; phi symbol (varphi) else if Ebene = 6 SendUnicodeChar(0x211A) ; Q (rationale Zahlen) PriorDeadKey := "" CompKey := "" @@ -2296,29 +2298,50 @@ neo_sz: if Ebene = 1 if GetKeyState("CapsLock","T") { - SendUnicodeChar(0x1E9E) ; versal-ß + SendUnicodeChar(0x1E9E) ; verssal-ß } else { - send ß - } + if (LangSTastatur = 1) + { + sendinput {blind}s + } + else + { + send ß + } + } else if Ebene = 2 if GetKeyState("CapsLock","T") { - send ß + if (LangSTastatur = 1) + { + sendinput {blind}s + } + else + { + send ß + } } else { SendUnicodeChar(0x1E9E) ; versal-ß } else if Ebene = 3 - SendUnicodeChar(0x017F) ; langes s + { + if (LangSTastatur = 1) + send ß + else + SendUnicodeChar(0x017F) ; langes s + } else if Ebene = 4 - {} ; leer + { + LangSTastatur := not(LangSTastatur) ; schaltet die Lang-s-Tastatur ein und aus + } else if Ebene = 5 SendUnicodeChar(0x03C2) ; varsigma else if Ebene = 6 - SendUnicodeChar(0x2218) ; Verknüpfungsoperator + SendUnicodeChar(0x2218) ; Verknüpfungsoperator PriorDeadKey := "" CompKey := "" return @@ -2767,20 +2790,30 @@ neo_s: EbeneAktualisieren() if Ebene = 1 { - if (PriorDeadKey = "c1") ; circumflex + if (PriorDeadKey = "c1") ; circumflex BSSendUnicodeChar(0x015D) - else if (PriorDeadKey = "a1") ; akut + else if (PriorDeadKey = "a1") ; akut BSSendUnicodeChar(0x015B) - else if (PriorDeadKey = "c2") ; caron + else if (PriorDeadKey = "c2") ; caron BSSendUnicodeChar(0x0161) - else if (PriorDeadKey = "a3") ; cedilla + else if (PriorDeadKey = "a3") ; cedilla BSSendUnicodeChar(0x015F) - else if (PriorDeadKey = "a5") ; punkt darüber + else if (PriorDeadKey = "a5") ; punkt darüber BSSendUnicodeChar(0x1E61) else if (PriorDeadKey = "c6") ; punkt darunter BSSendUnicodeChar(0x1E63) - else - sendinput {blind}s + else + { + if (LangSTastatur = 1) + { + if GetKeyState("CapsLock","T") + sendinput {blind}s + else + SendUnicodeChar(0x017F) ; langes s + } + else + sendinput {blind}s + } if (PriorDeadKey = "comp") CompKey := "s_small" else @@ -2788,20 +2821,25 @@ neo_s: } else if Ebene = 2 { - if (PriorDeadKey = "c1") ; circumflex + if (PriorDeadKey = "c1") ; circumflex BSSendUnicodeChar(0x015C) - else if (PriorDeadKey = "c2") ; caron + else if (PriorDeadKey = "c2") ; caron BSSendUnicodeChar(0x0160) - else if (PriorDeadKey = "a1") ; akut + else if (PriorDeadKey = "a1") ; akut BSSendUnicodeChar(0x015A) - else if (PriorDeadKey = "a3") ; cedilla + else if (PriorDeadKey = "a3") ; cedilla BSSendUnicodeChar(0x015E) - else if (PriorDeadKey = "a5") ; punkt darüber + else if (PriorDeadKey = "a5") ; punkt darüber BSSendUnicodeChar(0x1E60) else if (PriorDeadKey = "c6") ; punkt darunter BSSendUnicodeChar(0x1E62) else - sendinput {blind}S + { + if GetKeyState("CapsLock","T") && (LangSTastatur = 1) + SendUnicodeChar(0x017F) + else + sendinput {blind}S + } if (PriorDeadKey = "comp") CompKey := "s_capital" else @@ -3358,7 +3396,8 @@ neo_komma: } } - else { + else + { send {blind}, } } @@ -4380,11 +4419,15 @@ neo_tab: } */ } - else if (IsMod3Pressed()) { ;# + else if (IsMod3Pressed()) ;# + { + #Include *i %a_scriptdir%\ComposeLaunch.ahk + #Include *i %a_scriptdir%\Source\ComposeLaunch.ahk PriorDeadKey := "comp" CompKey := "" } - else { + else + { send {blind}{Tab} PriorDeadKey := "" CompKey := "" @@ -4600,7 +4643,7 @@ InsertIntegerLED(pInteger, ByRef pDest, pOffset = 0, pSize = 4) /* Ebenen laut Referenz: 1. Ebene (kein Mod) 4. Ebene (Mod4) -2. Ebene (Umschalt) 5. Ebene (Mod3+Umschalt) +2. Ebene (Umschalt) 5. Ebene (Umschalt+Mod3) 3. Ebene (Mod3) 6. Ebene (Mod3+Mod4) */ @@ -4625,7 +4668,7 @@ EbeneAktualisieren() if ( IsMod3Pressed() ) { ; Umschalt UND Mod3 if ( IsMod4Pressed() ) - { ; Umschald UND Mod3 UND Mod4 + { ; Umschalt UND Mod3 UND Mod4 ; Ebene 8 impliziert Ebene 6 Ebene = 6 } @@ -4637,12 +4680,12 @@ EbeneAktualisieren() else { ; Umschalt NICHT Mod3 if ( IsMod4Pressed() ) - { ; Umschald UND Mod4 NICHT Mod3 + { ; Umschalt UND Mod4 NICHT Mod3 ; Ebene 7 impliziert Ebene 4 Ebene = 4 } else - { ; Umschald NICHT Mod3 NICHT Mod4 + { ; Umschalt NICHT Mod3 NICHT Mod4 Ebene = 2 } } diff --git a/windows/autohotkey/neo20-all-in-one.exe b/windows/autohotkey/neo20-all-in-one.exe index abe081e..8aa31af 100644 Binary files a/windows/autohotkey/neo20-all-in-one.exe and b/windows/autohotkey/neo20-all-in-one.exe differ -- cgit v1.2.3