summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormartin_r <martin_r@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2008-08-27 01:23:34 +0000
committermartin_r <martin_r@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2008-08-27 01:23:34 +0000
commit10462b21c85e43ad2129bc2005068fe1fa763b51 (patch)
treec672e3ff0345e7cca83fc99154fe16481d2f521a
parent04ce8558d501f31eb3fcf8a656e70f9d1572f089 (diff)
DeadCompose implementiert, uncomp…-Methoden gelöscht, »return 0«-Zeilen entfernt (wird sowieso gemacht).
checkComp ausgebessert: »global« hatte gefehlt. (Damit wurde ›ſt‹(ſt-Ligatur) ermöglicht (war defekt)). ahkTreiberKombi rausgeschmissen (war für den gelöschten msklc-Treiber gedacht). Massenweise Formatierungen normalisiert. Zusätzliche Compose-Aktivierung über Mod3+Mod3. Einhand- und Lernmodus wiederhergestellt. git-svn-id: https://svn.neo-layout.org@810 b9310e46-f624-0410-8ea1-cfbb3a30dc96
-rw-r--r--windows/autohotkey/Changelog-and-Todo.txt17
-rw-r--r--windows/autohotkey/Source/Global-Part.ahk180
-rw-r--r--windows/autohotkey/Source/Keys-Neo.ahk10
-rw-r--r--windows/autohotkey/Source/Methods-Layers.ahk103
-rw-r--r--windows/autohotkey/Source/Methods-Other.ahk90
-rw-r--r--windows/autohotkey/Source/Methods-Unicode.ahk7
-rw-r--r--windows/autohotkey/neo20.ahk433
-rw-r--r--windows/autohotkey/neo20.exebin424878 -> 424287 bytes
8 files changed, 352 insertions, 488 deletions
diff --git a/windows/autohotkey/Changelog-and-Todo.txt b/windows/autohotkey/Changelog-and-Todo.txt
index 1bdd9df..86b3040 100644
--- a/windows/autohotkey/Changelog-and-Todo.txt
+++ b/windows/autohotkey/Changelog-and-Todo.txt
@@ -8,7 +8,7 @@ Stefan Mayer <stm (at) neo-layout. o r g>
Nora Geißler <nora_geissler (at) yahoo. d e>
Matthias Berg <neo (at) matthias-berg. e u>
Martin Roppelt <m.p.roppelt (at) web. d e>
-Dennis Heidsiek <HeidsiekB (at) aol. c o m>
+Dennis Heidsiek <heidsiekb (at) aol. c o m>
Matthias Wächter <matthias (at) waechter.wiz. a t>
@@ -16,20 +16,27 @@ Matthias Wächter <matthias (at) waechter.wiz. a t>
- Ausgiebig testen … (besonders Vollständigkeit bei Deadkeys).
- Compose vollständig implementieren (Welche Methode ist hierzu am besten geeignet?).
- Bessere Lösung für das Leeren von PriorDeadKey finden, damit die Sondertasten nicht mehr abgefangen werden müssen.
-- Blindes Compose implementieren.
-- CapsLock-Abhängigkeiten entfernen.
=== Ideen und Vorschläge ===
-- Modi für vertauschte Ziffern in der Zahlenreihe und auf der 4. Ebene.
- Die Compose-Kombinationen sollten automatisch aus den Referenzdateien im Compose-Verzeichnis erzeugt werden.
+- Modi für vertauschte Ziffern in der Zahlenreihe und auf der 4. Ebene.
+- Tote Zeichen durch Verbindungszeichen ersetzen, sie können in Abhängigkeit des vorigen Zeichens zusammengezogen werden. Alle Akzente sind an einer Stelle
=== Änderungshistorie ===
+Revision 810 (von Martin Roppelt)
+- DeadCompose implementiert, uncomp…-Methoden gelöscht, »return 0«-Zeilen entfernt (wird sowieso gemacht).
+- checkComp ausgebessert: »global« hatte gefehlt.
+ • Damit wurde ›ſt‹ ermöglicht (war defekt).
+- ahkTreiberKombi rausgeschmissen (war für den gelöschten msklc-Treiber gedacht).
+- Massenweise Formatierungen normalisiert.
+- Zusätzliche Compose-Aktivierung über Mod3+Mod3.
+- Einhand- und Lernmodus wiederhergestellt.
Revision 806 (von Dennis Heidsiek)
- Die automatisch erzeugte Datei neo20.ahk wird wieder um die SVN-Keywords (Date, Author, Revision) ergänzt.
Revision 804 (von Martin Roppelt)
- Formatierung vereinfacht und vereinheitlicht.
-- Compose-Ligaturen implementiert: fl, …
+- Compose-Ligaturen implementiert: ›fl‹, ›ffl‹(♫Fl), ›fi‹, ›ffi‹(♫Fi), ›ff‹, ›st‹, ›ſt‹.
Revision 789 (von Martin Roppelt)
- NumLock-Bug ausgebessert (NumLock konnte nach dem Beenden von Neo nicht mehr aktiviert werden).
Revision 778 (von Martin Roppelt)
diff --git a/windows/autohotkey/Source/Global-Part.ahk b/windows/autohotkey/Source/Global-Part.ahk
index 0a748ad..a2bbd5f 100644
--- a/windows/autohotkey/Source/Global-Part.ahk
+++ b/windows/autohotkey/Source/Global-Part.ahk
@@ -2,10 +2,10 @@
* Initialisierung *
*******************
*/
-DeadKey = ""
-CompKey = ""
-PriorDeadKey = ""
-PriorCompKey = ""
+DeadKey := ""
+CompKey := ""
+PriorDeadKey := ""
+PriorCompKey := ""
Ebene12 = 0
noCaps = 0
@@ -50,9 +50,6 @@ 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,%ini%,Global,ahkTreiberKombi,0
-
; Soll der Treiber im Einhandmodus betrieben werden?
IniRead,einHandNeo,%ini%,Global,einHandNeo,0
@@ -71,22 +68,24 @@ If LangSTastatur
KeyboardLED(2,"on")
; Sollen tote Tasten blind angezeigt werden?
-IniRead,DeadCompose,%ini%,Global,DeadCompose,0
+IniRead,DeadSilence,%ini%,Global,DeadSilence,0
;Sollen Compose-Tasten blind angezeigt werden?
-IniRead,DeadSilence,%ini%,Global,DeadSilence,0
+IniRead,DeadCompose,%ini%,Global,DeadCompose,0
+:Soll der Mod2Lock auch auf die Akzente, die Ziffernreihe und das Numpad angewandt werden?
+IniRead,striktesMod2Lock,%ini%,Global,striktesMod2Lock,0
/***********************
* Recourcen-Verwaltung *
************************
*/
-if(FileExist("ResourceFolder")<>false){
+if (FileExist("ResourceFolder")<>false) {
; Versuche, alle mglicherweise 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){
+ if (bildschirmTastaturEinbinden=1) {
FileInstall,ebene1.png,%ResourceFolder%\ebene1.png,1
FileInstall,ebene2.png,%ResourceFolder%\ebene2.png,1
FileInstall,ebene3.png,%ResourceFolder%\ebene3.png,1
@@ -95,14 +94,12 @@ if(FileExist("ResourceFolder")<>false){
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"))
+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"))
+if (FileExist("neo.ico")&&FileExist("neo_disabled.ico"))
iconBenutzen=1
/*******************************************
@@ -154,6 +151,74 @@ menu,tray,add,%name% beenden, exitprogram
menu,tray,default,%disable%
menu,tray,tip,%name%
+/**************************
+* lernModus Konfiguration *
+* nur relevant wenn *
+* lernModus = 1 *
+* Strg+Komma schaltet um *
+***************************
+*/
+; 0 = aus, 1 = an
+
+; die Nachfolgenden sind ntzlich um sich die Qwertz-Tasten abzugewhnen, 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
+; ntzlich um sich zu zwingen, richtig zu schreiben
+lernModus_neo_Backspace = 0
+lernModus_neo_Entf = 1
+
+/****************************
+* EinHandNeo *
+* Umschalten mit Strg+Punkt *
+*****************************
+*/
+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_
+
/**********************
* Tastenkombinationen *
***********************
@@ -161,29 +226,28 @@ menu,tray,tip,%name%
;Blinde/Sichtbare Tote Tasten
*F9::
if isMod4pressed()
- DeadSilence := !(DeadSilence)
+ DeadSilence := !DeadSilence
else send {blind}{F9}
return
;Blinde/Sichtbare Compose
*F10::
if isMod4pressed()
- DeadCompose := !(DeadCompose)
+ DeadCompose := !DeadCompose
else send {blind}{F10}
return
;Lang-s-Tastatur:
*F11::
if isMod4pressed() {
- LangSTastatur := !(LangSTastatur)
+ LangSTastatur := !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:
+;Alle Modi und Locks in den Normalzustand versetzen, bzw. Skript neu laden:
*Esc::
if isMod4pressed()
reload
@@ -197,6 +261,10 @@ Suspend, Permit
else send {blind}{pause}
return
+^,::lernModus := not(lernModus)
+
+^.::einHandNeo := !einHandNeo
+
/*****************
* Menfunktionen *
******************
@@ -264,75 +332,3 @@ return
exitprogram:
exitapp
return
-
-/**************************
-* lernModus Konfiguration *
-* nur relevant wenn *
-* lernModus = 1 *
-* Strg+Komma schaltet um *
-***************************
-*/
-^,::lernModus := not(lernModus)
-
-; 0 = aus, 1 = an
-
-; die Nachfolgenden sind ntzlich um sich die Qwertz-Tasten abzugewhnen, 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
-; ntzlich 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_
diff --git a/windows/autohotkey/Source/Keys-Neo.ahk b/windows/autohotkey/Source/Keys-Neo.ahk
index ac6868a..6186d62 100644
--- a/windows/autohotkey/Source/Keys-Neo.ahk
+++ b/windows/autohotkey/Source/Keys-Neo.ahk
@@ -27,7 +27,7 @@ neo_tot1:
deadUni(0x002D) ; Querstrich, tot
DeadKey = c5
} else if (Ebene = 6) {
- deadUni(0x0323) ; Punkt drunter (Colon), tot
+ deadUni(0x002E) ; Punkt drunter (Colon), tot
DeadKey = c6
} CompKey := PriorCompKey
return
@@ -481,8 +481,8 @@ neo_sz:
if LangSTastatur
send
else {
- SendUnicodeChar(0x017F) ; langes s
- CheckComp("lang_s")
+ if !checkComp("lang_s")
+ SendUnicodeChar(0x017F) ; langes s
} else if (Ebene = 5)
SendUnicodeChar(0x03C2) ; varsigma
else if (Ebene = 6)
@@ -658,8 +658,8 @@ neo_s:
or CheckDeadUni12("c6",0x1E63,0x1A62)))
{
if LangSTastatur and (Ebene = 1) {
- SendUnicodeChar(0x017F) ;langes S
- CheckComp("lang_s")
+ if !checkComp("lang_s")
+ SendUnicodeChar(0x017F) ; langes s
} else outputChar("s","S")
} else if (Ebene = 3)
send {blind}?
diff --git a/windows/autohotkey/Source/Methods-Layers.ahk b/windows/autohotkey/Source/Methods-Layers.ahk
index ef12e58..fe93848 100644
--- a/windows/autohotkey/Source/Methods-Layers.ahk
+++ b/windows/autohotkey/Source/Methods-Layers.ahk
@@ -11,15 +11,11 @@
isMod2Locked = 0
VKA1SC136 & VKA0SC02A:: ; RShift, dann LShift
VKA0SC02A & VKA1SC136:: ; LShift, dann RShift
- if (GetKeyState("VKA1SC136", "P") and GetKeyState("VKA0SC02A", "P"))
- {
- if isMod2Locked
- {
+ if (GetKeyState("VKA1SC136", "P") and GetKeyState("VKA0SC02A", "P")) {
+ if isMod2Locked {
isMod2Locked = 0
KeyboardLED(4,"off")
- }
- else
- {
+ } else {
isMod2Locked = 1
KeyBoardLED(4,"on")
}
@@ -29,6 +25,10 @@ return
;Mod3-Tasten (Wichtig, sie werden sonst nicht verarbeitet!)
*VKBFSC02B:: ; #
*VK14SC03A:: ; CapsLock
+ if (GetKeyState("VKBFSC02B", "P") and GetKeyState("VK14SC03A", "P")) {
+ DeadKey := "comp"
+ CompKey := ""
+ }
return
;Mod4+Mod4 == Mod4-Lock
@@ -40,18 +40,14 @@ return
IsMod4Locked := 0
*VKA5SC138::
*VKE2SC056::
- if (GetKeyState("VKA5SC138", "P") and GetKeyState("VKE2SC056", "P"))
- {
- if IsMod4Locked
- {
+ if (GetKeyState("VKA5SC138", "P") and GetKeyState("VKE2SC056", "P")) {
+ if IsMod4Locked {
if zeigeLockBox
MsgBox Mod4-Feststellung aufgebehoben!
IsMod4Locked = 0
if UseMod4Light
KeyboardLED(1,"off")
- }
- else
- {
+ } else {
if zeigeLockBox
MsgBox Mod4 festgestellt: Um Mod4 wieder zu lsen, drcke beide Mod4-Tasten gleichzeitig!
IsMod4Locked = 1
@@ -61,8 +57,7 @@ IsMod4Locked := 0
}
return
-EbeneAktualisieren()
-{
+EbeneAktualisieren() {
global
PriorDeadKey := DeadKey
PriorCompKey := CompKey
@@ -71,35 +66,25 @@ EbeneAktualisieren()
Modstate := IsMod4Pressed() . IsMod3Pressed() . IsShiftPressed()
Ebene7 := 0
Ebene8 := 0
- 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))
+ 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))
NumLock := GetKeyState("NumLock","T")
}
@@ -107,6 +92,8 @@ EbeneAktualisieren()
IsShiftPressed()
{
global
+ if striktesMod2Lock
+ noCaps = 0
if GetKeyState("Shift","P")
if isMod2Locked and !noCaps
return 0
@@ -122,21 +109,21 @@ IsShiftPressed()
IsMod3Pressed()
{
- global
- return ((GetKeyState("CapsLock","P")) or (GetKeyState("#","P")))
+ global
+ return (GetKeyState("VKBFSC02B","P") or GetKeyState("VK14SC03A","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"))
+ global
+ if !(einHandNeo) or !(spacepressed)
+ if IsMod4Locked
+ return !(GetKeyState("<","P") or GetKeyState("SC138","P"))
+ else
+ return (GetKeyState("<","P") or GetKeyState("SC138","P"))
+ else
+ if IsMod4Locked
+ return !(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-Other.ahk b/windows/autohotkey/Source/Methods-Other.ahk
index cb95c99..1acfccf 100644
--- a/windows/autohotkey/Source/Methods-Other.ahk
+++ b/windows/autohotkey/Source/Methods-Other.ahk
@@ -30,7 +30,7 @@ CheckDeadAsc(d,val) {
if (PriorDeadKey == d) {
undeadAsc(val)
return 1
- } else return 0
+ }
}
CheckDeadUni(d,val) {
@@ -38,7 +38,7 @@ CheckDeadUni(d,val) {
if (PriorDeadKey == d) {
undeadUni(val)
return 1
- } else return 0
+ }
}
CheckDeadAsc12(d,val1,val2) {
@@ -50,8 +50,8 @@ CheckDeadAsc12(d,val1,val2) {
} else if (Ebene = 2) and (val2 != "") {
undeadAsc(val2)
return 1
- } else return 0
- } else return 0
+ }
+ }
}
CheckDeadUni12(d,val1,val2) {
@@ -63,104 +63,70 @@ CheckDeadUni12(d,val1,val2) {
} else if (Ebene = 2) and (val2 != "") {
undeadUni(val2)
return 1
- } else return 0
- } else return 0
-}
-
-compAsc(val) {
- global
- if !DeadCompose
- send % val
-}
-
-compUni(val) {
- global
- if !DeadCompose
- SendUnicodeChar(val)
-}
-
-uncompAsc(val) {
- global
- if DeadCompose
- send % val
- else send % "{bs}" . val
-}
-
-uncompUni(val) {
- global
- if !DeadCompose
- send {bs}
- SendUnicodeChar(val)
-}
-
-uncomp3Uni(val) {
- global
- if !DeadCompose
- send {bs}{bs}
- SendUnicodeChar(val)
+ }
+ }
}
CheckCompAsc(d,val) {
global
if (PriorCompKey == d) {
- uncompAsc(val)
+ send % val
return 1
- } else return 0
+ }
}
CheckCompAsc12(d,val1,val2) {
global
if (PriorCompKey == d)
if (Ebene = 1) and (val1 != "") {
- uncompAsc(val1)
+ send % val1
return 1
} else if (Ebene = 2) and (val2 != "") {
- uncompAsc(val2)
+ send % val2
return 1
- } else return 0
- else return 0
+ }
}
CheckCompUni(d,val) {
global
if (PriorCompKey == d) {
- uncompUni(val)
+ SendUnicodeChar(val)
return 1
- } else return 0
+ }
}
CheckCompUni12(d,val1,val2){
global
if (PriorCompKey == d) {
if (Ebene = 1) and (val1 != "") {
- uncompUni(val1)
+ SendUnicodeChar(val1)
return 1
}else if (Ebene = 2) and (val2 != "") {
- uncompUni(val2)
+ SendUnicodeChar(val2)
return 1
- } else return 0
- } else return 0
+ }
+ }
}
CheckComp3Uni(d,val) {
global
if (PriorCompKey == d) {
- uncomp3Uni(val)
+ SendUnicodeChar(val)
return 1
- } else return 0
+ }
}
CheckComp3Uni12(d,val1,val2) {
global
if (PriorCompKey == d) {
if (Ebene = 1) and (val1 != "") {
- uncomp3Uni(val1)
+ SendUnicodeChar(val1)
return 1
} else if (Ebene = 2) and (val2 != "") {
- uncomp3Uni(val2)
+ SendUnicodeChar(val2)
return 1
- } else return 0
- } else return 0
+ }
+ }
}
outputChar(val1,val2) {
@@ -168,14 +134,14 @@ outputChar(val1,val2) {
if (Ebene = 1)
c := val1
else c := val2
- if GetKeyState("Shift","P") and isMod2Locked
- send % "{blind}{Shift Up}" . c . "{Shift Down}"
- else send % "{blind}" . c
- if (PriorDeadKey = "comp")
- CompKey := c
+ if !(CheckComp(c) and DeadCompose or PriorCompKey)
+ if GetKeyState("Shift","P") and isMod2Locked
+ send % "{blind}{Shift Up}" . c . "{Shift Down}"
+ else send % "{blind}" . c
}
checkComp(d) {
+ global
if (PriorDeadKey = "comp") {
CompKey := d
return 1
diff --git a/windows/autohotkey/Source/Methods-Unicode.ahk b/windows/autohotkey/Source/Methods-Unicode.ahk
index deaf5e0..86e3b36 100644
--- a/windows/autohotkey/Source/Methods-Unicode.ahk
+++ b/windows/autohotkey/Source/Methods-Unicode.ahk
@@ -8,12 +8,13 @@ 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 fhrendem 0x angegeben sind. Die abenteuerliche ^+u-Konstruktion bentigt im brigen den Hex-Wert in Kleinschrift, was derzeit nicht bei den Zeichendefinitionen umgesetzt ist, daher zentral und weniger fehlertrchtig an dieser Stelle. Auerdem ein abschlieend gesendetes Space, sonst bleibt der eingetippte Unicode-Wert noch kurz sichtbar stehen, bevor er sich GTK-sei-dank in das gewnschte Zeichen verwandelt.
*/
-SendUnicodeChar(charCode){
+SendUnicodeChar(charCode) {
+
IfWinActive,ahk_class gdkWindowToplevel
{
StringLower,charCode,charCode
send % "^+u" . SubStr(charCode,3) . " "
- }else{
+ } else {
VarSetCapacity(ki,28*2,0)
EncodeInteger(&ki+0,1)
EncodeInteger(&ki+6,charCode)
@@ -25,6 +26,6 @@ SendUnicodeChar(charCode){
}
}
-EncodeInteger(ref,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 39d5cac..ef19a6e 100644
--- a/windows/autohotkey/neo20.ahk
+++ b/windows/autohotkey/neo20.ahk
@@ -1,54 +1,11 @@
-/*
-*******************************************
-WICHTIGE WARNUNG:
-
-Dies ist inzwischen eine automatisch generierte
-Datei! Sie wird regelmig berschrieben und
-sollte deshalb nicht mehr direkt bearbeitet werden!
-
-Alle weiterfhrende Informationen finden sich im Abschnitt
-== Hinweise fr Entwickler ==
-in der Datei README.txt!
-
-Versionshinweise (SVN Keywords) fr diese Datei:
-$LastChangedRevision$
-$LastChangedDate$
-$LastChangedBy$
-$HeadURL$
-*******************************************
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-*******************************************
-Das war die letzte WARNUNG, ich hoffe nur dass
-Sie wirklich wissen was Sie hier tun wollen ...
-*******************************************
-*/
/******************
* Initialisierung *
*******************
*/
-DeadKey = ""
-CompKey = ""
-PriorDeadKey = ""
-PriorCompKey = ""
+DeadKey := ""
+CompKey := ""
+PriorDeadKey := ""
+PriorCompKey := ""
Ebene12 = 0
noCaps = 0
@@ -93,9 +50,6 @@ 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,%ini%,Global,ahkTreiberKombi,0
-
; Soll der Treiber im Einhandmodus betrieben werden?
IniRead,einHandNeo,%ini%,Global,einHandNeo,0
@@ -114,22 +68,24 @@ If LangSTastatur
KeyboardLED(2,"on")
; Sollen tote Tasten blind angezeigt werden?
-IniRead,DeadCompose,%ini%,Global,DeadCompose,0
+IniRead,DeadSilence,%ini%,Global,DeadSilence,0
;Sollen Compose-Tasten blind angezeigt werden?
-IniRead,DeadSilence,%ini%,Global,DeadSilence,0
+IniRead,DeadCompose,%ini%,Global,DeadCompose,0
+:Soll der Mod2Lock auch auf die Akzente, die Ziffernreihe und das Numpad angewandt werden?
+IniRead,striktesMod2Lock,%ini%,Global,striktesMod2Lock,0
/***********************
* Recourcen-Verwaltung *
************************
*/
-if(FileExist("ResourceFolder")<>false){
+if (FileExist("ResourceFolder")<>false) {
; Versuche, alle mglicherweise 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){
+ if (bildschirmTastaturEinbinden=1) {
FileInstall,ebene1.png,%ResourceFolder%\ebene1.png,1
FileInstall,ebene2.png,%ResourceFolder%\ebene2.png,1
FileInstall,ebene3.png,%ResourceFolder%\ebene3.png,1
@@ -138,14 +94,12 @@ if(FileExist("ResourceFolder")<>false){
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"))
+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"))
+if (FileExist("neo.ico")&&FileExist("neo_disabled.ico"))
iconBenutzen=1
/*******************************************
@@ -197,6 +151,74 @@ menu,tray,add,%name% beenden, exitprogram
menu,tray,default,%disable%
menu,tray,tip,%name%
+/**************************
+* lernModus Konfiguration *
+* nur relevant wenn *
+* lernModus = 1 *
+* Strg+Komma schaltet um *
+***************************
+*/
+; 0 = aus, 1 = an
+
+; die Nachfolgenden sind ntzlich um sich die Qwertz-Tasten abzugewhnen, 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
+; ntzlich um sich zu zwingen, richtig zu schreiben
+lernModus_neo_Backspace = 0
+lernModus_neo_Entf = 1
+
+/****************************
+* EinHandNeo *
+* Umschalten mit Strg+Punkt *
+*****************************
+*/
+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_
+
/**********************
* Tastenkombinationen *
***********************
@@ -204,29 +226,28 @@ menu,tray,tip,%name%
;Blinde/Sichtbare Tote Tasten
*F9::
if isMod4pressed()
- DeadSilence := !(DeadSilence)
+ DeadSilence := !DeadSilence
else send {blind}{F9}
return
;Blinde/Sichtbare Compose
*F10::
if isMod4pressed()
- DeadCompose := !(DeadCompose)
+ DeadCompose := !DeadCompose
else send {blind}{F10}
return
;Lang-s-Tastatur:
*F11::
if isMod4pressed() {
- LangSTastatur := !(LangSTastatur)
+ LangSTastatur := !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:
+;Alle Modi und Locks in den Normalzustand versetzen, bzw. Skript neu laden:
*Esc::
if isMod4pressed()
reload
@@ -240,6 +261,10 @@ Suspend, Permit
else send {blind}{pause}
return
+^,::lernModus := not(lernModus)
+
+^.::einHandNeo := !einHandNeo
+
/*****************
* Menfunktionen *
******************
@@ -307,78 +332,6 @@ return
exitprogram:
exitapp
return
-
-/**************************
-* lernModus Konfiguration *
-* nur relevant wenn *
-* lernModus = 1 *
-* Strg+Komma schaltet um *
-***************************
-*/
-^,::lernModus := not(lernModus)
-
-; 0 = aus, 1 = an
-
-; die Nachfolgenden sind ntzlich um sich die Qwertz-Tasten abzugewhnen, 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
-; ntzlich 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,
; daher kommen LShift und RShift ungehindert bis in die
@@ -392,15 +345,11 @@ gespiegelt_j = neo_
isMod2Locked = 0
VKA1SC136 & VKA0SC02A:: ; RShift, dann LShift
VKA0SC02A & VKA1SC136:: ; LShift, dann RShift
- if (GetKeyState("VKA1SC136", "P") and GetKeyState("VKA0SC02A", "P"))
- {
- if isMod2Locked
- {
+ if (GetKeyState("VKA1SC136", "P") and GetKeyState("VKA0SC02A", "P")) {
+ if isMod2Locked {
isMod2Locked = 0
KeyboardLED(4,"off")
- }
- else
- {
+ } else {
isMod2Locked = 1
KeyBoardLED(4,"on")
}
@@ -410,6 +359,10 @@ return
;Mod3-Tasten (Wichtig, sie werden sonst nicht verarbeitet!)
*VKBFSC02B:: ; #
*VK14SC03A:: ; CapsLock
+ if (GetKeyState("VKBFSC02B", "P") and GetKeyState("VK14SC03A", "P")) {
+ DeadKey := "comp"
+ CompKey := ""
+ }
return
;Mod4+Mod4 == Mod4-Lock
@@ -421,18 +374,14 @@ return
IsMod4Locked := 0
*VKA5SC138::
*VKE2SC056::
- if (GetKeyState("VKA5SC138", "P") and GetKeyState("VKE2SC056", "P"))
- {
- if IsMod4Locked
- {
+ if (GetKeyState("VKA5SC138", "P") and GetKeyState("VKE2SC056", "P")) {
+ if IsMod4Locked {
if zeigeLockBox
MsgBox Mod4-Feststellung aufgebehoben!
IsMod4Locked = 0
if UseMod4Light
KeyboardLED(1,"off")
- }
- else
- {
+ } else {
if zeigeLockBox
MsgBox Mod4 festgestellt: Um Mod4 wieder zu lsen, drcke beide Mod4-Tasten gleichzeitig!
IsMod4Locked = 1
@@ -442,8 +391,7 @@ IsMod4Locked := 0
}
return
-EbeneAktualisieren()
-{
+EbeneAktualisieren() {
global
PriorDeadKey := DeadKey
PriorCompKey := CompKey
@@ -452,35 +400,25 @@ EbeneAktualisieren()
Modstate := IsMod4Pressed() . IsMod3Pressed() . IsShiftPressed()
Ebene7 := 0
Ebene8 := 0
- 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))
+ 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))
NumLock := GetKeyState("NumLock","T")
}
@@ -488,6 +426,8 @@ EbeneAktualisieren()
IsShiftPressed()
{
global
+ if striktesMod2Lock
+ noCaps = 0
if GetKeyState("Shift","P")
if isMod2Locked and !noCaps
return 0
@@ -503,23 +443,23 @@ IsShiftPressed()
IsMod3Pressed()
{
- global
- return ((GetKeyState("CapsLock","P")) or (GetKeyState("#","P")))
+ 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"))
+ global
+ if !(einHandNeo) or !(spacepressed)
+ if IsMod4Locked
+ return !(GetKeyState("<","P") or GetKeyState("SC138","P"))
+ else
+ return (GetKeyState("<","P") or GetKeyState("SC138","P"))
+ else
+ if IsMod4Locked
+ return !(GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("","P"))
+ else
+ return (GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("","P"))
}
/*
------------------------------------------------------
@@ -855,7 +795,7 @@ neo_tot1:
deadUni(0x002D) ; Querstrich, tot
DeadKey = c5
} else if (Ebene = 6) {
- deadUni(0x0323) ; Punkt drunter (Colon), tot
+ deadUni(0x002E) ; Punkt drunter (Colon), tot
DeadKey = c6
} CompKey := PriorCompKey
return
@@ -1309,8 +1249,8 @@ neo_sz:
if LangSTastatur
send
else {
- SendUnicodeChar(0x017F) ; langes s
- CheckComp("lang_s")
+ if !checkComp("lang_s")
+ SendUnicodeChar(0x017F) ; langes s
} else if (Ebene = 5)
SendUnicodeChar(0x03C2) ; varsigma
else if (Ebene = 6)
@@ -1486,8 +1426,8 @@ neo_s:
or CheckDeadUni12("c6",0x1E63,0x1A62)))
{
if LangSTastatur and (Ebene = 1) {
- SendUnicodeChar(0x017F) ;langes S
- CheckComp("lang_s")
+ if !checkComp("lang_s")
+ SendUnicodeChar(0x017F) ; langes s
} else outputChar("s","S")
} else if (Ebene = 3)
send {blind}?
@@ -2340,7 +2280,7 @@ CheckDeadAsc(d,val) {
if (PriorDeadKey == d) {
undeadAsc(val)
return 1
- } else return 0
+ }
}
CheckDeadUni(d,val) {
@@ -2348,7 +2288,7 @@ CheckDeadUni(d,val) {
if (PriorDeadKey == d) {
undeadUni(val)
return 1
- } else return 0
+ }
}
CheckDeadAsc12(d,val1,val2) {
@@ -2360,8 +2300,8 @@ CheckDeadAsc12(d,val1,val2) {
} else if (Ebene = 2) and (val2 != "") {
undeadAsc(val2)
return 1
- } else return 0
- } else return 0
+ }
+ }
}
CheckDeadUni12(d,val1,val2) {
@@ -2373,104 +2313,70 @@ CheckDeadUni12(d,val1,val2) {
} else if (Ebene = 2) and (val2 != "") {
undeadUni(val2)
return 1
- } else return 0
- } else return 0
-}
-
-compAsc(val) {
- global
- if !DeadCompose
- send % val
-}
-
-compUni(val) {
- global
- if !DeadCompose
- SendUnicodeChar(val)
-}
-
-uncompAsc(val) {
- global
- if DeadCompose
- send % val
- else send % "{bs}" . val
-}
-
-uncompUni(val) {
- global
- if !DeadCompose
- send {bs}
- SendUnicodeChar(val)
-}
-
-uncomp3Uni(val) {
- global
- if !DeadCompose
- send {bs}{bs}
- SendUnicodeChar(val)
+ }
+ }
}
CheckCompAsc(d,val) {
global
if (PriorCompKey == d) {
- uncompAsc(val)
+ send % val
return 1
- } else return 0
+ }
}
CheckCompAsc12(d,val1,val2) {
global
if (PriorCompKey == d)
if (Ebene = 1) and (val1 != "") {
- uncompAsc(val1)
+ send % val1
return 1
} else if (Ebene = 2) and (val2 != "") {
- uncompAsc(val2)
+ send % val2
return 1
- } else return 0
- else return 0
+ }
}
CheckCompUni(d,val) {
global
if (PriorCompKey == d) {
- uncompUni(val)
+ SendUnicodeChar(val)
return 1
- } else return 0
+ }
}
CheckCompUni12(d,val1,val2){
global
if (PriorCompKey == d) {
if (Ebene = 1) and (val1 != "") {
- uncompUni(val1)
+ SendUnicodeChar(val1)
return 1
}else if (Ebene = 2) and (val2 != "") {
- uncompUni(val2)
+ SendUnicodeChar(val2)
return 1
- } else return 0
- } else return 0
+ }
+ }
}
CheckComp3Uni(d,val) {
global
if (PriorCompKey == d) {
- uncomp3Uni(val)
+ SendUnicodeChar(val)
return 1
- } else return 0
+ }
}
CheckComp3Uni12(d,val1,val2) {
global
if (PriorCompKey == d) {
if (Ebene = 1) and (val1 != "") {
- uncomp3Uni(val1)
+ SendUnicodeChar(val1)
return 1
} else if (Ebene = 2) and (val2 != "") {
- uncomp3Uni(val2)
+ SendUnicodeChar(val2)
return 1
- } else return 0
- } else return 0
+ }
+ }
}
outputChar(val1,val2) {
@@ -2478,14 +2384,14 @@ outputChar(val1,val2) {
if (Ebene = 1)
c := val1
else c := val2
- if GetKeyState("Shift","P") and isMod2Locked
- send % "{blind}{Shift Up}" . c . "{Shift Down}"
- else send % "{blind}" . c
- if (PriorDeadKey = "comp")
- CompKey := c
+ if !(CheckComp(c) and DeadCompose or PriorCompKey)
+ if GetKeyState("Shift","P") and isMod2Locked
+ send % "{blind}{Shift Up}" . c . "{Shift Down}"
+ else send % "{blind}" . c
}
checkComp(d) {
+ global
if (PriorDeadKey = "comp") {
CompKey := d
return 1
@@ -2501,12 +2407,13 @@ 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 fhrendem 0x angegeben sind. Die abenteuerliche ^+u-Konstruktion bentigt im brigen den Hex-Wert in Kleinschrift, was derzeit nicht bei den Zeichendefinitionen umgesetzt ist, daher zentral und weniger fehlertrchtig an dieser Stelle. Auerdem ein abschlieend gesendetes Space, sonst bleibt der eingetippte Unicode-Wert noch kurz sichtbar stehen, bevor er sich GTK-sei-dank in das gewnschte Zeichen verwandelt.
*/
-SendUnicodeChar(charCode){
+SendUnicodeChar(charCode) {
+
IfWinActive,ahk_class gdkWindowToplevel
{
StringLower,charCode,charCode
send % "^+u" . SubStr(charCode,3) . " "
- }else{
+ } else {
VarSetCapacity(ki,28*2,0)
EncodeInteger(&ki+0,1)
EncodeInteger(&ki+6,charCode)
@@ -2518,7 +2425,7 @@ SendUnicodeChar(charCode){
}
}
-EncodeInteger(ref,val){
+EncodeInteger(ref,val) {
DllCall("ntdll\RtlFillMemoryUlong","Uint",ref,"Uint",4,"Uint",val)
}
/*
diff --git a/windows/autohotkey/neo20.exe b/windows/autohotkey/neo20.exe
index 42533ad..c4cd3f9 100644
--- a/windows/autohotkey/neo20.exe
+++ b/windows/autohotkey/neo20.exe
Binary files differ