summaryrefslogtreecommitdiffstats
path: root/windows/autohotkey/Source/Methods-Other.ahk
diff options
context:
space:
mode:
Diffstat (limited to 'windows/autohotkey/Source/Methods-Other.ahk')
-rw-r--r--windows/autohotkey/Source/Methods-Other.ahk410
1 files changed, 327 insertions, 83 deletions
diff --git a/windows/autohotkey/Source/Methods-Other.ahk b/windows/autohotkey/Source/Methods-Other.ahk
index 7413690..86983c6 100644
--- a/windows/autohotkey/Source/Methods-Other.ahk
+++ b/windows/autohotkey/Source/Methods-Other.ahk
@@ -14,72 +14,42 @@ Ebenen laut Referenz:
EbeneAktualisieren()
{
global
+ PriorDeadKey := DeadKey
+ PriorCompKey := CompKey
+ DeadKey := ""
+ CompKey := ""
+ Ebene12 := 0
+ Modstate := IsShiftPressed() . IsMod3Pressed() . IsMod4Pressed()
+
if (ahkTreiberKombi)
- {
- if ( IsMod4Pressed() and not(IsShiftPressed()) and not(IsMod3Pressed()))
- {
+ if ( Modstate = "001")
Ebene = 6
- }
else
- {
- Ebene = -1
- }
- }
+ Ebene = -1
else
- {
- if ( IsShiftPressed() )
- { ; Umschalt
- if ( IsMod3Pressed() )
- { ; Umschalt UND Mod3
- if ( IsMod4Pressed() )
- { ; Umschalt UND Mod3 UND Mod4
- ; Ebene 8 impliziert Ebene 6
- Ebene = 6
- }
- else
- { ; Umschald UND Mod3 NICHT Mod4
- Ebene = 5
- }
- }
- else
- { ; Umschalt NICHT Mod3
- if ( IsMod4Pressed() )
- { ; Umschalt UND Mod4 NICHT Mod3
- ; Ebene 7 impliziert Ebene 4
- Ebene = 4
- }
- else
- { ; Umschalt NICHT Mod3 NICHT Mod4
- Ebene = 2
- }
- }
- }
- else
- { ; NICHT Umschalt
- if ( IsMod3Pressed() )
- { ; Mod3 NICHT Umschalt
- if ( IsMod4Pressed() )
- { ; Mod3 UND Mod4 NICHT Umschalt
- Ebene = 6
- }
- else
- { ; Mod3 NICHT Mod4 NICHT Umschalt
- Ebene = 3
- }
- }
- else
- { ; NICHT Umschalt NICHT Mod3
- if ( IsMod4Pressed() )
- { ; Mod4 NICHT Umschalt NICHT Mod3
- Ebene = 4
- }
- else
- { ; NICHT Umschalt NICHT Mod3 NICHT Mod4
- Ebene = 1
- }
- }
- }
- }
+ 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
+ else if (Modstate = "111")
+ Ebene = 6 ; Ebene 8: Shift+Mod3+Mod4 impliziert Ebene 6
+
+ Ebene12 := ((Ebene = 1) or (Ebene = 2))
+
+ if GetKeyState("NumLock","T")
+ NumLock = 1
+ else
+ NumLock = 0
}
@@ -108,38 +78,26 @@ IsMod4Pressed()
{
if (IsMod4Locked)
{
- return (not ( GetKeyState("<","P") or GetKeyState("SC138","P") or altGrPressed ))
+ return (not ( GetKeyState("<","P") or GetKeyState("SC138","P")))
}
else {
- return ( GetKeyState("<","P") or GetKeyState("SC138","P") or altGrPressed )
+ return ( GetKeyState("<","P") or GetKeyState("SC138","P"))
}
}
else
{
if (IsMod4Locked)
{
- return (not ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("ä","P") or altGrPressed ))
+ return (not ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("ä","P")))
}
else {
- return ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("ä","P") or altGrPressed )
+ return ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("ä","P"))
}
}
}
-IsModifierPressed()
-{
- if (GetKeyState("LControl","P") or GetKeyState("RControl","P") or GetKeyState("LAlt","P") or GetKeyState("RAltl","P") or GetKeyState("LWin","P") or GetKeyState("RWin","P") or GetKeyState("LShift","P") or GetKeyState("RShift","P") or GetKeyState("AltGr","P") )
- {
- return 1
- }
- else
- {
- return 0
- }
-}
-
SendUnicodeChar(charCode)
{
IfWinActive, ahk_class gdkWindowToplevel
@@ -160,7 +118,7 @@ SendUnicodeChar(charCode)
}
}
/*
-Über den GDK-Workaround:
+Ü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.
@@ -181,8 +139,7 @@ CompUnicodeChar(charCode)
Comp3UnicodeChar(charCode)
{
- send {bs}
- send {bs}
+ send {bs}{bs}
SendUnicodeChar(charCode)
}
@@ -192,9 +149,296 @@ EncodeInteger(ref, val)
DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val)
}
+DeadSilence = 0
+
+deadAsc(val)
+{
+ global
+ if (DeadSilence)
+ {} ; keine Ausgabe
+ else
+ send % "{blind}" . val
+}
+
+deadUni(val)
+{
+ global
+ if (DeadSilence)
+ {} ; keine Ausgabe
+ else
+ SendUnicodeChar(val)
+}
+
+undeadAsc(val)
+{
+ global
+ if (DeadSilence)
+ send % "{blind}" . val
+ else
+ send % "{blind}{bs}" . val
+}
+
+undeadUni(val)
+{
+ global
+ if (DeadSilence)
+ {} ; keine ausgabe
+ else
+ send {bs}
+ SendUnicodeChar(val)
+}
+
+CheckDeadAsc(d,val)
+{
+ global
+ if (PriorDeadKey == d)
+ {
+ undeadAsc(val)
+ return 1
+ }
+ else
+ return 0
+}
+
+CheckDeadUni(d,val)
+{
+ global
+ if (PriorDeadKey == d)
+ {
+ undeadUni(val)
+ return 1
+ }
+ else
+ return 0
+}
+
+CheckDeadAsc12(d,val1,val2)
+{
+ global
+ if (PriorDeadKey == d)
+ {
+ if ((Ebene = 1) and (val1 != ""))
+ {
+ undeadAsc(val1)
+ return 1
+ }
+ else if ((Ebene = 2) and (val2 != ""))
+ {
+ undeadAsc(val2)
+ return 1
+ }
+ else
+ return 0
+ }
+ else
+ return 0
+}
+
+CheckDeadUni12(d,val1,val2)
+{
+ global
+ if (PriorDeadKey == d)
+ {
+ if ((Ebene = 1) and (val1 != ""))
+ {
+ undeadUni(val1)
+ return 1
+ }
+ else if ((Ebene = 2) and (val2 != ""))
+ {
+ undeadUni(val2)
+ return 1
+ }
+ else
+ return 0
+ }
+ else
+ return 0
+}
+
+DeadCompose = 0
+
+compAsc(val)
+{
+ global
+ if (DeadCompose)
+ {} ; keine Ausgabe
+ else
+ send % "{blind}" . val
+}
+
+compUni(val)
+{
+ global
+ if (DeadCompose)
+ {} ; keine Ausgabe
+ else
+ SendUnicodeChar(val)
+}
+
+uncompAsc(val)
+{
+ global
+ if (DeadCompose)
+ send % "{blind}" . val
+ else
+ send % "{blind}{bs}" . val
+}
+
+uncompUni(val)
+{
+ global
+ if (DeadCompose)
+ {} ; keine ausgabe
+ else
+ send {bs}
+ SendUnicodeChar(val)
+}
+
+uncomp3Uni(val)
+{
+ global
+ if (DeadCompose)
+ {} ; keine ausgabe
+ else
+ send {bs}{bs}
+ SendUnicodeChar(val)
+}
+
+CheckCompAsc(d,val)
+{
+ global
+ if (PriorCompKey == d)
+ {
+ uncompAsc(val)
+ return 1
+ }
+ else
+ return 0
+}
+
+CheckCompAsc12(d,val1,val2)
+{
+ global
+ if (PriorCompKey == d)
+ if ((Ebene = 1) and (val1 != ""))
+ {
+ uncompAsc(val1)
+ return 1
+ }
+ else if ((Ebene = 2) and (val2 != ""))
+ {
+ uncompAsc(val2)
+ return 1
+ }
+ else
+ return 0
+ else
+ return 0
+}
+
+CheckCompUni(d,val)
+{
+ global
+ if (PriorCompKey == d)
+ {
+ uncompUni(val)
+ return 1
+ }
+ else
+ return 0
+}
+
+CheckCompUni12(d,val1,val2)
+{
+ global
+ if (PriorCompKey == d)
+ {
+ if ((Ebene = 1) and (val1 != ""))
+ {
+ uncompUni(val1)
+ return 1
+ }
+ else if ((Ebene = 2) and (val2 != ""))
+ {
+ uncompUni(val2)
+ return 1
+ }
+ else
+ return 0
+ }
+ else
+ return 0
+}
+
+CheckComp3Uni(d,val)
+{
+ global
+ if (PriorCompKey == d)
+ {
+ uncomp3Uni(val)
+ return 1
+ }
+ else
+ return 0
+}
+
+CheckComp3Uni12(d,val1,val2)
+{
+ global
+ if (PriorCompKey == d)
+ {
+ if ((Ebene = 1) and (val1 != ""))
+ {
+ uncomp3Uni(val1)
+ return 1
+ }
+ else if ((Ebene = 2) and (val2 != ""))
+ {
+ uncomp3Uni(val2)
+ return 1
+ }
+ else
+ return 0
+ }
+ else
+ return 0
+}
+
+outputChar(val1,val2)
+{
+ global
+ if (Ebene = 1)
+ c := val1
+ else
+ c := val2
+ send % "{blind}" . c
+ if (PriorDeadKey = "comp")
+ CompKey := c
+}
+
+;Tote/Untote Tasten
+*F9::
+ if (isMod4pressed())
+ DeadSilence := not(DeadSilence)
+ else
+ send {blind}{F9}
+return
+
+;Tote/Untote Compose
+*F10::
+ if (isMod4pressed())
+ DeadCompose := not(DeadCompose)
+ else
+ send {blind}{F10}
+return
;Lang-s-Tastatur:
-SC056 & *F11::
-LangSTastatur := not(LangSTastatur) ; schaltet die Lang-s-Tastatur ein und aus
+*F11::
+ if (isMod4pressed())
+ LangSTastatur := not(LangSTastatur) ; schaltet die Lang-s-Tastatur ein und aus
+ else
+ send {blind}{F11}
return
+