From 24229c131a3b46ff68963809df00d50aac85d44d Mon Sep 17 00:00:00 2001 From: mösi Date: Fri, 13 Feb 2009 08:54:48 +0000 Subject: Wiemitneo, erster Versuch. Aufruf: oder MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Vor dem Aufruf muss man das zu suchende Zeichen im Clipboard haben, d.h. beispielsweise im Browser markiert und mit Strg+C ins Clipboard kopiert haben. Sollten sich mehrere Zeichen im Clipboard befinden, wird nur für das erste Zeichen die mögliche Belegung ausgegeben. Das bedeutet auch, dass für Multi-Zeichen-Compose-Sequenzen, die also mehrere Zeichen als Ergebnis einer Compose-Sequenz erzeugen, keine Hints angegeben werden. Die Funktion sucht in zweierlei Variablentabellen: Einerseits die Reverse-Compose Variablen, die mit CRC... beginnen, andererseits die Reverse-Key-Tabellen, die mit CRK... beginnen. Für die Ergebnisse der CRC-Suche werden die einzelnen Compose-Tastendrücke bislang _nicht_ weiter aufgeschlüsselt. Das Ergebnis wird jedenfalls in einem Tooltip angezeigt. Das ganze erfolgt mehrzeilig, sollte es mehrere Möglichkeiten zum Erzeugen des Zeichens geben. Für die Erzeugung der Reverse-Compose-Variablen muss die compose.generated.ahk-Datei auf quasi das Doppelte aufgeblasen werden, um eine iterative Suche zu vermeiden. Vielleicht fällt uns diesbezüglich ja noch etwas Besseres ein. git-svn-id: https://svn.neo-layout.org@1653 b9310e46-f624-0410-8ea1-cfbb3a30dc96 --- windows/neo-vars/src/source/tools.ahk | 68 +++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) (limited to 'windows/neo-vars/src/source/tools.ahk') diff --git a/windows/neo-vars/src/source/tools.ahk b/windows/neo-vars/src/source/tools.ahk index 0ff0628..ca2775f 100644 --- a/windows/neo-vars/src/source/tools.ahk +++ b/windows/neo-vars/src/source/tools.ahk @@ -480,3 +480,71 @@ PressHookCalc(PhysKey, ActKey, Char) { } } } + +CDSCompU0055U0057 := "P_WMN" +CDSCompU0075U0077 := "P_WMN" + +CharProc_WMN() { + global + TrayTip,Wie mit NEO, Here we are!,10,1 + ok := DllCall("OpenClipboard") + if (!ok) { + TrayTip,Wie mit NEO,Fehler in OpenClipboard,10,1 + return + } + uclph:=DllCall("GetClipboardData","uint",CF_UNICODETEXT:=13) + if (uclph == 0) { + DllCall("CloseClipboard") + TrayTip,Wie mit NEO,Fehler in GetClipboardData,10,1 + return + } + uclp := DllCall("GlobalLock","uint",uclph) + if (uclp == 0) { + DllCall("CloseClipboard") + TrayTip,Wie mit NEO,Fehler in GlobalLock,10,1 + return + } + a := *(uclp+0) + b := *(uclp+1) + + DllCall("GlobalUnlock","uint",uclph) + DllCall("CloseClipboard") + +SetFormat,Integer,h + a += 256*b +SetFormat,Integer,d + a := "U" . substr("0000" . substr(a,3),-3) + wtt := CRC%a% . " " . CRK%a% . " " + if (wtt=="") { + TrayTip,Wie mit NEO,Keine Information`, wie %a% eingegeben werden kann!,10,1 + return + } + + wmn := "" + loop,parse,wtt,%A_Space% + { + this_wmn := "" + this_wtt := A_LoopField + if (this_wtt == "") + continue ; probably at first or last entry + loop { + if (this_wtt == "") + break + this_char := substr(this_wtt,1,5) + this_wtt := substr(this_wtt,6) + if (CB%this_char% != "") + this_char := CB%this_char% + else if (CS%this_char% != "") + this_char := CS%this_char% + ; this_char will contain Uxxxx if no shortcut is present. Fix this here. + if (substr(this_char,-1) == ")+") + this_wmn .= this_char + else if (substr(this_wmn,-1) == ")+") + this_wmn .= "<" . this_char . ">" + else + this_wmn .= " <" . this_char . ">" + } + wmn .= this_wmn . "`r`n" + } + TrayTip,Wie mit NEO,% wmn,10,1 +} -- cgit v1.2.3