summaryrefslogtreecommitdiff
path: root/windows/neo-vars/src
diff options
context:
space:
mode:
authormösi <mösi@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2009-05-05 13:42:11 +0000
committermösi <mösi@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2009-05-05 13:42:11 +0000
commit6d3a62db526e7943583b9bfa3746b22b5377a6c4 (patch)
treedb4f015b8e4c53008023ebbcab7192bfe02eecfd /windows/neo-vars/src
parent3ce36c4d6c124b14b80fff05b837e3d477e8c630 (diff)
downloadneo-layout-6d3a62db526e7943583b9bfa3746b22b5377a6c4.tar.gz
neo-layout-6d3a62db526e7943583b9bfa3746b22b5377a6c4.tar.bz2
neo-layout-6d3a62db526e7943583b9bfa3746b22b5377a6c4.zip
NEOEbeneAktualisieren etwas komprimiert und Ebenenevaluierung in Tabellen gepackt. Dabei auch gleich #119 gefixt.
git-svn-id: https://svn.neo-layout.org@1815 b9310e46-f624-0410-8ea1-cfbb3a30dc96
Diffstat (limited to 'windows/neo-vars/src')
-rw-r--r--windows/neo-vars/src/source/levelfunctions.ahk45
1 files changed, 18 insertions, 27 deletions
diff --git a/windows/neo-vars/src/source/levelfunctions.ahk b/windows/neo-vars/src/source/levelfunctions.ahk
index b3aa70b..5d5eff2 100644
--- a/windows/neo-vars/src/source/levelfunctions.ahk
+++ b/windows/neo-vars/src/source/levelfunctions.ahk
@@ -1,34 +1,25 @@
NEOEbeneAktualisieren() {
global
- Modstate := IsMod4Active() . IsMod3Active()
Ebene7 := 0
Ebene8 := 0
- if (Modstate == "00") { ; Ebene 1 oder 2
- if (IsShiftActive()) ; Ebene 2: Shift oder CapsLock
- EbeneC := 2
- else ; Ebene 1: Ohne Mod oder CapsLock mit Shift
- EbeneC := 1
- if (IsShiftPressed) ; NC: Ebene 2: Shift (ignoriert CapsLock)
- EbeneNC := 2
- else ; NC: Ebene 1: Ohne Mod (ignoriert CapsLock)
- EbeneNC := 1
- } else if (Modstate == "01") { ; Ebene 3 oder 5 (ignoriert CapsLock)
- if (IsShiftPressed) ; Ebene 5: Shift+Mod3
- EbeneC := 5
- else ; Ebene 3: Mod3
- EbeneC := 3
- EbeneNC := EbeneC ; NC: gleich
- } else if (Modstate == "10") { ; Ebene 4 (Mit Shift: Auch Ebene 7) (ignoriert CapsLock)
- EbeneC := 4
- if (IsShiftPressed) ; Ebene 7: Shift+Mod4
- Ebene7 := 1
- EbeneNC := EbeneC ; NC: gleich
- } else if (ModState == "11") { ; Ebene 6 (Mit Shift Xoder CapsLock: Auch Ebene 8)
- EbeneC := 6
- if (IsShiftPressed) ; Ebene 8: Shift (ignoriert CapsLock)
- Ebene8 := 1
- EbeneNC := EbeneC ; NC: gleich
- }
+
+ ModPos := 1 + (isMod4Locked << 4) ; plus 1, da SubStr() bei 1 beginnt
+ + (isMod4Pressed << 3)
+ + (isMod3Pressed << 2)
+ + (isMod2Locked << 1)
+ + (isShiftPressed << 0)
+
+ ; isMod4Locked 00000000000000001111111111111111
+ ; isMod4Pressed 00000000111111110000000011111111
+ ; isMod3Pressed 00001111000011110000111100001111
+ ; isMod2Locked 00110011001100110011001100110011
+ ; isShiftPressed 01010101010101010101010101010101
+
+ EbeneNC := SubStr("12123535444466664444353512126666",ModPos,1) ; Für normale Tasten (reagieren nicht auf CapsLock)
+ EbeneC := SubStr("12213535444466664444353512216666",ModPos,1) ; Für Buchstaben (reagieren auf CapsLock)
+ Ebene7 := SubStr("00000000010100000101000000000000",ModPos,1)
+ Ebene8 := SubStr("00000000000001010000000000000101",ModPos,1)
+
if (BSTguiErstellt) {
if (striktesMod2Lock)
BSTSwitch(EbeneC)