From 66d7b779cf7db996a51be4920a209c42c1fc10b4 Mon Sep 17 00:00:00 2001 From: hans-christoph Date: Sun, 10 Aug 2008 18:43:18 +0000 Subject: Reorganisation des Codes durch Matthias Wächter. Details siehe CHANGES.txt, Abschnitt 2008-08-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.neo-layout.org@740 b9310e46-f624-0410-8ea1-cfbb3a30dc96 --- windows/autohotkey/Source/Methods-Other.ahk | 410 ++++++++++++++++++++++------ 1 file changed, 327 insertions(+), 83 deletions(-) (limited to 'windows/autohotkey/Source/Methods-Other.ahk') 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 + -- cgit v1.2.3