summaryrefslogtreecommitdiffstats
path: root/windows/neo-vars/src/source/tools.ahk
diff options
context:
space:
mode:
authormösi <mösi@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2009-02-13 08:54:48 +0000
committermösi <mösi@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2009-02-13 08:54:48 +0000
commit24229c131a3b46ff68963809df00d50aac85d44d (patch)
tree4b5aee9c86015b0e0b3a29e5b5467a89449163ce /windows/neo-vars/src/source/tools.ahk
parentf5440da7a1c3dfc69ca9f77214b3759934849942 (diff)
Wiemitneo, erster Versuch.
Aufruf: <Compose> <u> <w> oder <Compose> <U> <W> 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
Diffstat (limited to '')
-rw-r--r--windows/neo-vars/src/source/tools.ahk68
1 files changed, 68 insertions, 0 deletions
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
+}