summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--windows/autohotkey/neo20-all-in-one.ahk161
-rw-r--r--windows/autohotkey/neo20-all-in-one.exebin421726 -> 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
--- a/windows/autohotkey/neo20-all-in-one.exe
+++ b/windows/autohotkey/neo20-all-in-one.exe
Binary files differ