diff options
| author | mösi <mösi@b9310e46-f624-0410-8ea1-cfbb3a30dc96> | 2009-04-14 19:28:26 +0000 | 
|---|---|---|
| committer | mösi <mösi@b9310e46-f624-0410-8ea1-cfbb3a30dc96> | 2009-04-14 19:28:26 +0000 | 
| commit | 6ce2ecb2cadeb87c8a38dbfb520b88359961271a (patch) | |
| tree | eb23f25537b3b71e0d798b2d0829ba0b3da0dc42 /windows/neo-vars/src/source/varsfunctions.ahk | |
| parent | daad38a1e658de5daf192c19cebd2b2a0a082655 (diff) | |
| download | neo-layout-6ce2ecb2cadeb87c8a38dbfb520b88359961271a.tar.gz neo-layout-6ce2ecb2cadeb87c8a38dbfb520b88359961271a.tar.bz2 neo-layout-6ce2ecb2cadeb87c8a38dbfb520b88359961271a.zip  | |
Erste Implementierung von UTF-16-Unterstützung mit Surrogates.
Sämtliche Variablen sind nun um 2 Zeichen breiter, um den erweiterten Coderaum zu unterstützen.
git-svn-id: https://svn.neo-layout.org@1788 b9310e46-f624-0410-8ea1-cfbb3a30dc96
Diffstat (limited to 'windows/neo-vars/src/source/varsfunctions.ahk')
| -rw-r--r-- | windows/neo-vars/src/source/varsfunctions.ahk | 122 | 
1 files changed, 76 insertions, 46 deletions
diff --git a/windows/neo-vars/src/source/varsfunctions.ahk b/windows/neo-vars/src/source/varsfunctions.ahk index ff394b8..b9c73df 100644 --- a/windows/neo-vars/src/source/varsfunctions.ahk +++ b/windows/neo-vars/src/source/varsfunctions.ahk @@ -38,7 +38,7 @@ AllStar(This_HotKey) {  CharStarDown(PhysKey, ActKey, char) {
    global
    if (SubStr(char,1,1)=="P") {
 -    SubProc := SubStr(char,2,4)
 +    SubProc := SubStr(char,2,6)
      CharProc%SubProc%()
      return
    }
 @@ -67,7 +67,7 @@ CharStarDown(PhysKey, ActKey, char) { -  if (strlen(tosend) > 5) {          ; Ausgabe mehrerer Zeichen
 +  if (strlen(tosend) > 7) {          ; Ausgabe mehrerer Zeichen
      if (PR%PhysKey% != "") {         ; Eventuell vergessenen Key-Release aufr�umen
        CharOutUp(PR%PhysKey%)
        PR%PhysKey% := ""
 @@ -75,12 +75,12 @@ CharStarDown(PhysKey, ActKey, char) {      loop {
        if (SubStr(tosend,1,1)=="P") {
 -        SubProc := SubStr(tosend,2,4)
 +        SubProc := SubStr(tosend,2,6)
          CharProc%SubProc%()
        } else {
 -        CharOut(SubStr(tosend,1,5))
 +        CharOut(SubStr(tosend,1,7))
        }
 -      tosend := SubStr(tosend,6)
 +      tosend := SubStr(tosend,8)
        if (tosend == "") 
          break                ; erledigt
      }
 @@ -90,7 +90,7 @@ CharStarDown(PhysKey, ActKey, char) {          CharOutUp(PR%PhysKey%)
          PR%PhysKey% := ""
        }
 -      SubProc := SubStr(tosend,2,4)
 +      SubProc := SubStr(tosend,2,6)
        CharProc%SubProc%()
      } else {
        if ((PR%PhysKey% != "") and (PR%PhysKey% != tosend))
 @@ -110,7 +110,7 @@ CharStarUp(PhysKey) {      tosend := PR%PhysKey%
      PR%PhysKey% := ""
      if (SubStr(tosend,1,1)=="P") {
 -      SubProc := SubStr(tosend,2,4)
 +      SubProc := SubStr(tosend,2,6)
        CharProc%SubProc%()
      } else
        CharOutUp(tosend)
 @@ -186,14 +186,14 @@ CharProc(name) {    CharProc%name%()
  }
 -CharProcRlod() {
 +CharProc__Rlod() {
    global
    ; Neustart des AHK-Skripts
    reload
  }
  ; Modifier
 -CharProcM2LD() {
 +CharProc__M2LD() {
    global
    if (!isShiftLPressed) {
      if (isShiftRPressed and !wasNonShiftKeyPressed)
 @@ -202,20 +202,20 @@ CharProcM2LD() {      isShiftPressed := 1
      wasNonShiftKeyPressed := 0
      EbeneAktualisieren()
 -    PR%PhysKey% := "PM2LU"
 +    PR%PhysKey% := "P__M2LU"
    }
 -  CharOutDown("SL_M2")
 +  CharOutDown("S__L_M2")
  }
 -CharProcM2LU() {
 +CharProc__M2LU() {
    global
    isShiftLPressed := 0
    isShiftPressed := isShiftRPressed
    EbeneAktualisieren()
 -  CharOutUp("SL_M2")
 +  CharOutUp("S__L_M2")
  }
 -CharProcM2RD() {
 +CharProc__M2RD() {
    global
    if (!isShiftRPressed) {
      if (isShiftLPressed and !wasNonShiftKeyPressed)
 @@ -224,33 +224,33 @@ CharProcM2RD() {      isShiftPressed := 1
      wasNonShiftKeyPressed := 0
      EbeneAktualisieren()
 -    PR%PhysKey% := "PM2RU"
 +    PR%PhysKey% := "P__M2RU"
    }
 -  CharOutDown("SR_M2")
 +  CharOutDown("S__R_M2")
  }
 -CharProcM2RU() {
 +CharProc__M2RU() {
    global
    isShiftRPressed := 0
    isShiftPressed := isShiftLPressed
    EbeneAktualisieren()
 -  CharOutUp("SR_M2")
 +  CharOutUp("S__R_M2")
  }
 -CharProcM3LD() {
 +CharProc__M3LD() {
    global
    if (!isMod3LPressed) {
      if (isMod3RPressed and !wasNonShiftKeyPressed)
 -      CharStarDown("MOD3", "MOD3", "SComp")
 +      CharStarDown("MOD3", "MOD3", "S__Comp")
      isMod3LPressed := 1
      isMod3Pressed := 1
      wasNonShiftKeyPressed := 0
      EbeneAktualisieren()
 -    PR%PhysKey% := "PM3LU"
 +    PR%PhysKey% := "P__M3LU"
    }
  }
 -CharProcM3LU() {
 +CharProc__M3LU() {
    global
    if (isMod3RPressed)
      CharStarUp("MOD3")
 @@ -259,20 +259,20 @@ CharProcM3LU() {    EbeneAktualisieren()
  }
 -CharProcM3RD() {
 +CharProc__M3RD() {
    global
    if (!Mod3RPressed) {
      if (isMod3LPressed and !wasNonShiftKeyPressed)
 -      CharStarDown("MOD3", "MOD3", "SComp")
 +      CharStarDown("MOD3", "MOD3", "S__Comp")
      isMod3RPressed := 1
      isMod3Pressed := 1
      wasNonShiftKeyPressed := 0
      EbeneAktualisieren()
 -    PR%PhysKey% := "PM3RU"
 +    PR%PhysKey% := "P__M3RU"
    }
  }
 -CharProcM3RU() {
 +CharProc__M3RU() {
    global
    if (isMod3LPressed)
      CharStarUp("MOD3")
 @@ -281,13 +281,13 @@ CharProcM3RU() {    EbeneAktualisieren()
  }
 -CharProcM4LD() {
 +CharProc__M4LD() {
    global
    if (!isMod4LPressed) {
      isMod4LPressed := 1
      isMod4Pressed := 1
      EbeneAktualisieren()
 -    PR%PhysKey% := "PM4LU"
 +    PR%PhysKey% := "P__M4LU"
      if (isMod4RPressed and !wasNonShiftKeyPressed) {
        wasNonShiftKeyPressed := 0
        ToggleMod4Lock()
 @@ -296,20 +296,20 @@ CharProcM4LD() {    }
  }
 -CharProcM4LU() {
 +CharProc__M4LU() {
    global
    isMod4LPressed := 0
    isMod4Pressed := isMod4RPressed
    EbeneAktualisieren()
  }
 -CharProcM4RD() {
 +CharProc__M4RD() {
    global
    if (!isMod4RPressed) {
      isMod4RPressed := 1
      isMod4Pressed := 1
      EbeneAktualisieren()
 -    PR%PhysKey% := "PM4RU"
 +    PR%PhysKey% := "P__M4RU"
      if (isMod4LPressed and !wasNonShiftKeyPressed) {
        wasNonShiftKeyPressed := 0
        ToggleMod4Lock()
 @@ -318,7 +318,7 @@ CharProcM4RD() {    }
  }
 -CharProcM4RU() {
 +CharProc__M4RU() {
    global
    isMod4RPressed := 0
    isMod4Pressed := isMod4LPressed
 @@ -333,13 +333,25 @@ SendUnicodeChar(charCode){    } else {
      static ki := "#"
      if (ki =="#") {
 -      VarSetCapacity(ki,28*2,0)
 -      DllCall("RtlFillMemory","uint",&ki+   0,"uint",1,"uint",1)
 -      DllCall("RtlFillMemory","uint",&ki+28+0,"uint",1,"uint",1)
 +      VarSetCapacity(ki,28*4,0)
 +      DllCall("RtlFillMemory","uint",&ki+     0,"uint",1,"uint",1)
 +      DllCall("RtlFillMemory","uint",&ki+  28+0,"uint",1,"uint",1)
 +      DllCall("RtlFillMemory","uint",&ki+2*28+0,"uint",1,"uint",1)
 +      DllCall("RtlFillMemory","uint",&ki+3*28+0,"uint",1,"uint",1)
 +    }
 +    if (charCode < 0x10000) {
 +      DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+   6,"uint",4,"uint",0x40000|charCode) ;KEYEVENTF_UNICODE
 +      DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+28+6,"uint",4,"uint",0x60000|charCode) ;KEYEVENTF_KEYUP|KEYEVENTF_UNICODE
 +      DllCall("SendInput","UInt",2,"UInt",&ki,"Int",28)
 +    } else {
 +      hi_surrogate := 0xD800|((charCode-0x10000)/1024)
 +      lo_surrogate := 0xDC00|((charCode-0x10000)&0x3FF)
 +      DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+     6,"uint",4,"uint",0x40000|hi_surrogate) ;KEYEVENTF_UNICODE
 +      DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+  28+6,"uint",4,"uint",0x40000|lo_surrogate) ;KEYEVENTF_UNICODE
 +      DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+2*28+6,"uint",4,"uint",0x60000|hi_surrogate) ;KEYEVENTF_KEYUP|KEYEVENTF_UNICODE
 +      DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+3*28+6,"uint",4,"uint",0x60000|lo_surrogate) ;KEYEVENTF_KEYUP|KEYEVENTF_UNICODE
 +      DllCall("SendInput","UInt",4,"UInt",&ki,"Int",28)
      }
 -    DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+   6,"uint",4,"uint",0x40000|charCode) ;KEYEVENTF_UNICODE
 -    DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+28+6,"uint",4,"uint",0x60000|charCode) ;KEYEVENTF_KEYUP|KEYEVENTF_UNICODE
 -    DllCall("SendInput","UInt",2,"UInt",&ki,"Int",28)
    }
  }
 @@ -351,11 +363,20 @@ SendUnicodeCharDown(charCode){    } else {
      static ki := "#"
      if (ki =="#") {
 -      VarSetCapacity(ki,28,0)
 -      DllCall("RtlFillMemory","uint",&ki,"uint",1,"uint",1)
 +      VarSetCapacity(ki,28*2,0)
 +      DllCall("RtlFillMemory","uint",&ki+     0,"uint",1,"uint",1)
 +      DllCall("RtlFillMemory","uint",&ki+  28+0,"uint",1,"uint",1)
 +    }
 +    if (charCode < 0x10000) {
 +      DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+   6,"uint",4,"uint",0x40000|charCode) ;KEYEVENTF_UNICODE
 +      DllCall("SendInput","UInt",1,"UInt",&ki,"Int",28)
 +    } else {
 +      hi_surrogate := 0xD800|((charCode-0x10000)/1024)
 +      lo_surrogate := 0xDC00|((charCode-0x10000) & 0x3FF)
 +      DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+     6,"uint",4,"uint",0x40000|hi_surrogate) ;KEYEVENTF_UNICODE
 +      DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+  28+6,"uint",4,"uint",0x40000|lo_surrogate) ;KEYEVENTF_UNICODE
 +      DllCall("SendInput","UInt",2,"UInt",&ki,"Int",28)
      }
 -    DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+6,"uint",4,"uint",0x40000|charCode) ;KEYEVENTF_UNICODE
 -    DllCall("SendInput","UInt",1,"UInt",&ki,"Int",28)
    }
  }
 @@ -366,11 +387,20 @@ SendUnicodeCharUp(charCode){    } else {
      static ki := "#"
      if (ki =="#") {
 -      VarSetCapacity(ki,28,0)
 -      DllCall("RtlFillMemory","uint",&ki,"uint",1,"uint",1)
 +      VarSetCapacity(ki,28*2,0)
 +      DllCall("RtlFillMemory","uint",&ki+     0,"uint",1,"uint",1)
 +      DllCall("RtlFillMemory","uint",&ki+  28+0,"uint",1,"uint",1)
 +    }
 +    if (charCode < 0x10000) {
 +      DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+   6,"uint",4,"uint",0x60000|charCode) ;KEYEVENTF_KEYUP|KEYEVENTF_UNICODE
 +      DllCall("SendInput","UInt",1,"UInt",&ki,"Int",28)
 +    } else {
 +      hi_surrogate := 0xD800|((charCode-0x10000)/1024)
 +      lo_surrogate := 0xDC00|((charCode-0x10000)&0x3FF)
 +      DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+     6,"uint",4,"uint",0x60000|hi_surrogate) ;KEYEVENTF_KEYUP|KEYEVENTF_UNICODE
 +      DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+  28+6,"uint",4,"uint",0x60000|lo_surrogate) ;KEYEVENTF_KEYUP|KEYEVENTF_UNICODE
 +      DllCall("SendInput","UInt",2,"UInt",&ki,"Int",28)
      }
 -    DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+6,"uint",4,"uint",0x60000|charCode) ;KEYEVENTF_KEYUP|KEYEVENTF_UNICODE
 -    DllCall("SendInput","UInt",1,"UInt",&ki,"Int",28)
    }
  }
  | 
