From 6d0b9db7e1dfa23ee0204b0a57847c4126e2500a Mon Sep 17 00:00:00 2001 From: dennis Date: Sat, 10 Jan 2009 16:33:14 +0000 Subject: Der »alte« AHK-Treiber ist als »deprecated« einzustufen. Der Namenswechsel des Verzeichnis soll dies wiederspielen und eventuelle »Gewohnheitsfehler« vermeiden. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.neo-layout.org@1423 b9310e46-f624-0410-8ea1-cfbb3a30dc96 --- windows/ahk-auslaufend/Source/Methods-Unicode.ahk | 34 +++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 windows/ahk-auslaufend/Source/Methods-Unicode.ahk (limited to 'windows/ahk-auslaufend/Source/Methods-Unicode.ahk') diff --git a/windows/ahk-auslaufend/Source/Methods-Unicode.ahk b/windows/ahk-auslaufend/Source/Methods-Unicode.ahk new file mode 100644 index 0000000..ac4ae79 --- /dev/null +++ b/windows/ahk-auslaufend/Source/Methods-Unicode.ahk @@ -0,0 +1,34 @@ +/* + ------------------------------------------------------ + Methoden zum Senden von Unicode-Zeichen + ------------------------------------------------------ + +Ü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. +*/ + +SendUnicodeChar(charCode1, charCode2) { + global + if !(CheckComp(charCode2) and DeadCompose) + IfWinActive,ahk_class gdkWindowToplevel + { + StringLower,charCode1,charCode1 + send % "^+u" . SubStr(charCode1,3) . " " + } else { + VarSetCapacity(ki,28*2,0) + EncodeInteger(&ki+0,1) + EncodeInteger(&ki+6,charCode1) + EncodeInteger(&ki+8,4) + EncodeInteger(&ki+28,1) + EncodeInteger(&ki+34,charCode1) + EncodeInteger(&ki+36,4|2) + DllCall("SendInput","UInt",2,"UInt",&ki,"Int",28) + } +} + +EncodeInteger(ref,val) { + DllCall("ntdll\RtlFillMemoryUlong","Uint",ref,"Uint",4,"Uint",val) +} + + -- cgit v1.2.3