summaryrefslogtreecommitdiff
path: root/windows/ahk-auslaufend/Source/Methods-Layers.ahk
diff options
context:
space:
mode:
Diffstat (limited to 'windows/ahk-auslaufend/Source/Methods-Layers.ahk')
-rw-r--r--windows/ahk-auslaufend/Source/Methods-Layers.ahk131
1 files changed, 131 insertions, 0 deletions
diff --git a/windows/ahk-auslaufend/Source/Methods-Layers.ahk b/windows/ahk-auslaufend/Source/Methods-Layers.ahk
new file mode 100644
index 0000000..c59ccb7
--- /dev/null
+++ b/windows/ahk-auslaufend/Source/Methods-Layers.ahk
@@ -0,0 +1,131 @@
+; 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
+ if GetKeyState("VKA1SC136", "P") and GetKeyState("VKA0SC02A", "P") {
+ if isMod2Locked {
+ isMod2Locked = 0
+ KeyboardLED(4, "off")
+ } else {
+ isMod2Locked = 1
+ KeyBoardLED(4, "on")
+ }
+ }
+return
+
+;Mod3-Tasten (Wichtig, sie werden sonst nicht verarbeitet!)
+;Auf Mod3+Mod3 liegt zusätzlich zu Mod3+Tab Compose
+*VKBFSC02B:: ; #
+*VK14SC03A:: ; CapsLock
+ if GetKeyState("VKBFSC02B", "P") and GetKeyState("VK14SC03A", "P") {
+ DeadKey := "comp"
+ CompKey := ""
+ }
+return
+
+;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::
+ 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
+
+EbeneAktualisieren() {
+ global
+ PriorDeadKey := DeadKey
+ PriorCompKey := CompKey
+ DeadKey := ""
+ CompKey := ""
+ Modstate := IsMod4Pressed() . IsMod3Pressed() . IsShiftPressed()
+ Ebene7 := 0
+ Ebene8 := 0
+ 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))
+ NumLock := GetKeyState("NumLock", "T")
+ noCaps := 0
+}
+
+IsShiftPressed()
+{
+ global
+ if !(NoCaps and GetKeyState("Shift", "P") and (GetKeyState("Alt", "P") or GetKeyState("Strg", "P"))) {
+ if striktesMod2Lock
+ noCaps = 0
+ if GetKeyState("Shift","P")
+ if isMod2Locked and !noCaps
+ return 0
+ else return 1
+ else if isMod2Locked and !noCaps
+ return 1
+ else return 0
+ }
+}
+
+IsMod3Pressed()
+{
+ global
+ return (GetKeyState("VKBFSC02B","P") or GetKeyState("VK14SC03A","P"))
+}
+
+IsMod4Pressed()
+{
+ 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"))
+}
+
+
+