From ba46161970ef1bc494b504e9ff5e2a38085d62a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?m=C3=B6si?= Date: Sat, 1 Nov 2008 06:21:03 +0000 Subject: =?UTF-8?q?caps/nocaps=20umgesetzt.=20Dazu=20gibt=20es=20einen=20W?= =?UTF-8?q?echsel=20zwischen=20EbeneC=20und=20Ebene,=20wenn=20f=C3=BCr=20e?= =?UTF-8?q?ine=20Taste=20nocaps=20(NOC%PhysKey%)=20definiert=20ist.=20Die?= =?UTF-8?q?=20Behandlung=20von=20PR%PhysKey%=20hat=20so=20nicht=20immer=20?= =?UTF-8?q?richtig=20funktioniert=20(z.B.=20Mod4+F=3DSLeft,=20Mod4=20losla?= =?UTF-8?q?ssen).=20Jetzt=20wird=20die=20Taste=20losgelassen,=20bevor=20du?= =?UTF-8?q?rch=20das=20Loslassen=20eines=20Modifiers=20ein=20neues=20Zeich?= =?UTF-8?q?en=20geschickt=20wird.=20in=20EbeneAktualisieren()=20wird=20die?= =?UTF-8?q?=20Ebene=20jetzt=20zwei=20mal=20berechnet:=20Einmal=20f=C3=BCr?= =?UTF-8?q?=20die=20Zeichen,=20die=20CapsLock=20verwenden=20und=20dann=20n?= =?UTF-8?q?och=20einmal=20f=C3=BCr=20die,=20die=20es=20ignorieren.=20Au?= =?UTF-8?q?=C3=9Ferdem=20wird=20(hoffentlich)=20zur=20Performance-Optimier?= =?UTF-8?q?ung=20auf=20die=20Funktionen=20GetKeyState()=20verzichtet,=20st?= =?UTF-8?q?attdessen=20wird=20das=20Dr=C3=BCcken=20und=20Loslassen=20der?= =?UTF-8?q?=20Modifier=20selbst=20abgefragt=20und=20=C3=BCber=20deren=20Zu?= =?UTF-8?q?stand=20Buch=20gef=C3=BChrt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.neo-layout.org@1074 b9310e46-f624-0410-8ea1-cfbb3a30dc96 --- windows/neo-vars/recycle.ahk | 268 +++++++++++++++++++++++++++++-------------- 1 file changed, 179 insertions(+), 89 deletions(-) (limited to 'windows/neo-vars/recycle.ahk') diff --git a/windows/neo-vars/recycle.ahk b/windows/neo-vars/recycle.ahk index 2a46b1a..e35ac23 100644 --- a/windows/neo-vars/recycle.ahk +++ b/windows/neo-vars/recycle.ahk @@ -157,8 +157,17 @@ Sonstige Variablen */ guiErstellt := 0 alwaysOnTop := 1 -IsMod4Locked := 0 +isShiftRPressed := 0 +isShiftLPressed := 0 +isShiftPressed := 0 isMod2Locked := 0 +IsMod3RPressed := 0 +IsMod3LPressed := 0 +IsMod3Pressed := 0 +IsMod4RPressed := 0 +IsMod4LPressed := 0 +IsMod4Pressed := 0 +IsMod4Locked := 0 ; die Nachfolgenden sind nützlich um sich die Qwertz-Tasten abzugewöhnen, da alle auf der 4. Ebene vorhanden. lernModus_std_Return := 0 lernModus_std_Backspace := 0 @@ -184,68 +193,85 @@ lernModus_neo_Entf := 1 EbeneAktualisieren() { global - Modstate := IsMod4Pressed() . IsMod3Pressed() . IsShiftPressed() + Modstate := IsMod4Active() . IsMod3Active() . IsShiftActive() 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 + 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 } - else if (Modstate = "111") ; Ebene 8: Shift+Mod3+Mod4 impliziert Ebene 6 - { - Ebene = 6 - Ebene8 = 1 + + ; jetzt für Tasten, die Mod2Locked ignorieren + Modstate := IsMod4Active() . IsMod3Active() . IsShiftPressed + Ebene7C := 0 + Ebene8C := 0 + if (Modstate = "000") ; Ebene 1: Ohne Mod + EbeneC := 1 + else if (Modstate = "001") ; Ebene 2: Shift + EbeneC := 2 + else if (Modstate = "010") ; Ebene 3: Mod3 + EbeneC := 3 + else if (Modstate = "100") ; Ebene 4: Mod4 + EbeneC := 4 + else if (Modstate = "011") ; Ebene 5: Shift+Mod3 + EbeneC := 5 + else if (Modstate = "110") ; Ebene 6: Mod3+Mod4 + EbeneC := 6 + else if (Modstate = "101") { ; Ebene 7: Shift+Mod4 impliziert Ebene 4 + EbeneC := 4 + Ebene7C := 1 + } else if (Modstate = "111") { ; Ebene 8: Shift+Mod3+Mod4 impliziert Ebene 6 + EbeneC := 6 + Ebene8C := 1 } } -IsShiftPressed() -{ +IsShiftActive() { global - if GetKeyState("Shift","P") - if isMod2Locked and !noCaps + if (isMod2Locked) + if (isShiftPressed) return 0 else return 1 else - if isMod2Locked and !noCaps + if (isShiftPressed) return 1 else return 0 - noCaps = 0 } -IsMod3Pressed() -{ +IsMod3Active() { global - return ((GetKeyState("CapsLock","P")) or (GetKeyState("#","P"))) + return isMod3Pressed } -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")) +IsMod4Active() { + global + if (isMod4Locked) + if (isMod4Pressed) + return 0 + else + return 1 + else + if (isMod4Pressed) + return 1 + else + return 0 } /* @@ -514,28 +540,71 @@ return ; KeyboardLED(4,"switch") hatte ich zuerst genommen, aber ; das schaltet, oh Wunder, die LED nicht wieder aus. -VKA1SC136 & VKA0SC02A:: ; RShift, dann LShift -VKA0SC02A & VKA1SC136:: ; LShift, dann RShift - if (GetKeyState("VKA1SC136", "P") and GetKeyState("VKA0SC02A", "P")) +~*VKA1SC136:: + if (isShiftLPressed and !isShiftRPressed) + ToggleMod2Lock() + isShiftRPressed := 1 + isShiftPressed := 1 +return + +~*VKA1SC136 up:: + isShiftRPressed := 0 + isShiftPressed := isShiftLPressed +return + +~*VKA0SC02A:: + if (isShiftRPressed and !isShiftLPressed) + ToggleMod2Lock() + isShiftLPressed := 1 + isShiftPressed := 1 +return + +~*VKA0SC02A up:: + isShiftLPressed := 0 + isShiftPressed := isShiftRPressed +return + +ToggleMod2Lock() { + global + if (isMod2Locked) { - if isMod2Locked - { - isMod2Locked = 0 - KeyboardLED(4,"off") - } - else - { - isMod2Locked = 1 - KeyBoardLED(4,"on") - } + isMod2Locked := 0 + KeyboardLED(4,"off") + } + else + { + isMod2Locked := 1 + KeyBoardLED(4,"on") } +} + + +*VKBFSC02B:: + if (isMod3LPressed and !isMod3RPressed) + CharStarDown("MOD3", "MOD3", "SComp") + isMod3RPressed := 1 + isMod3Pressed := 1 return -;Mod3-Tasten (Wichtig, sie werden sonst nicht verarbeitet!) -*VKBFSC02B:: ; # -*VK14SC03A:: ; CapsLock - if GetKeyState("VKBFSC02B", "P") and GetKeyState("VK14SC03A", "P") - CharStarDown("", "", "SComp") +*VKBFSC02B up:: + if (isMod3LPressed) + CharStarUp("MOD3") + isMod3RPressed := 0 + isMod3Pressed := isMod3LPressed +return + +*VK14SC03A:: + if (isMod3RPressed and !isMod3LPressed) + CharStarDown("MOD3", "MOD3", "SComp") + isMod3LPressed := 1 + isMod3Pressed := 1 +return + +*VK14SC03A up:: + if (isMod3RPressed) + CharStarUp("MOD3") + isMod3LPressed := 0 + isMod3Pressed := isMod3RPressed return ;Mod4+Mod4 == Mod4-Lock @@ -545,27 +614,48 @@ return ; angezeigt. *VKA5SC138:: + wasMod4RPressed := isMod4RPressed + isMod4RPressed := 1 + isMod4Pressed := 1 + if (isMod4LPressed and !wasMod4RPressed) + ToggleMod4Lock() +return + +*VKA5SC138 up:: + isMod4RPressed := 0 + isMod4Pressed := isMod4LPressed +return + *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") - } - } + wasMod4LPressed := isMod4LPressed + isMod4LPressed := 1 + isMod4Pressed := 1 + if (isMod4RPressed and !wasMod4LPressed) + ToggleMod4Lock() return + +*VKE2SC056 up:: + isMod4LPressed := 0 + isMod4Pressed := isMod4RPressed +return + +ToggleMod4Lock() { + global + if (IsMod4Locked) { + IsMod4Locked := 0 + if (UseMod4Light) + KeyboardLED(1,"off") + if (zeigeLockBox) + MsgBox Mod4-Feststellung aufgehoben! + } else { + IsMod4Locked := 1 + if (UseMod4Light) + KeyboardLED(1,"on") + if (zeigeLockBox) + MsgBox Mod4 festgestellt: Um Mod4 wieder zu lösen, drücke beide Mod4-Tasten gleichzeitig! + } +} + /* ------------------------------------------------------ BildschirmTastatur @@ -573,49 +663,49 @@ return */ F1:: - if(isMod4Pressed()&&zeigeBildschirmTastatur) + if(isMod4Active() && zeigeBildschirmTastatur) goto Switch1 else send {blind}{F1} return F2:: - if(isMod4Pressed()&&zeigeBildschirmTastatur) + if(isMod4Active() && zeigeBildschirmTastatur) goto Switch2 else send {blind}{F2} return F3:: - if(isMod4Pressed()&&zeigeBildschirmTastatur) + if(isMod4Active() && zeigeBildschirmTastatur) goto Switch3 else send {blind}{F3} return F4:: - if(isMod4Pressed()&&zeigeBildschirmTastatur) + if(isMod4Active() && zeigeBildschirmTastatur) goto Switch4 else send {blind}{F4} return F5:: - if(isMod4Pressed()&&zeigeBildschirmTastatur) + if(isMod4Active() && zeigeBildschirmTastatur) goto Switch5 else send {blind}{F5} return F6:: - if(isMod4Pressed()&&zeigeBildschirmTastatur) + if(isMod4Active() && zeigeBildschirmTastatur) goto Switch6 else send {blind}{F6} return F7:: - if(isMod4Pressed()&&zeigeBildschirmTastatur) + if(isMod4Active() && zeigeBildschirmTastatur) goto Show else send {blind}{F7} return F8:: - if(isMod4Pressed()&&zeigeBildschirmTastatur) + if(isMod4Active() && zeigeBildschirmTastatur) goto ToggleAlwaysOnTop else send {blind}{F8} return -- cgit v1.2.3