617adf8515
git-svn-id: https://svn.neo-layout.org@872 b9310e46-f624-0410-8ea1-cfbb3a30dc96
128 lines
3.6 KiB
AutoHotkey
128 lines
3.6 KiB
AutoHotkey
; 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"))
|
|
}
|