From c63134e1ac0522b643dffd4c71bcff2b27eab30d Mon Sep 17 00:00:00 2001 From: martin_r Date: Mon, 18 Aug 2008 19:25:20 +0000 Subject: =?UTF-8?q?Modularisierung=20des=20AHK=20konsequent=20weitergef?= =?UTF-8?q?=C3=BChrt.=20neo20.txt:=20Ebenen=207=20und=208=20erg=C3=A4nzt,?= =?UTF-8?q?=20Ebenen=202=20und=204=20des=20Numpads=20vertauscht.=20Methods?= =?UTF-8?q?-Layers.ahk:=20Mod3-Lock=20abgeschafft,=20CapsLock=20neu=20gesc?= =?UTF-8?q?hrieben.=20+=20Viele=20kleine=20=C3=84nderungen.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.neo-layout.org@776 b9310e46-f624-0410-8ea1-cfbb3a30dc96 --- windows/autohotkey/Source/Methods-Unicode.ahk | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'windows/autohotkey/Source/Methods-Unicode.ahk') diff --git a/windows/autohotkey/Source/Methods-Unicode.ahk b/windows/autohotkey/Source/Methods-Unicode.ahk index 00a5ba5..227bedf 100644 --- a/windows/autohotkey/Source/Methods-Unicode.ahk +++ b/windows/autohotkey/Source/Methods-Unicode.ahk @@ -32,5 +32,34 @@ BSUnicode(code) Neuer Weg – Benutzung der entsprechenden Win32-API-Methode ************************************************************/ +/* +Ü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(charCode) +{ + IfWinActive, ahk_class gdkWindowToplevel + { + StringLower, charCode, charCode + send % "^+u" . SubStr(charCode,3) . " " + } else { + VarSetCapacity(ki, 28 * 2, 0) + + EncodeInteger(&ki + 0, 1) + EncodeInteger(&ki + 6, charCode) + EncodeInteger(&ki + 8, 4) + EncodeInteger(&ki +28, 1) + EncodeInteger(&ki +34, charCode) + 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