summaryrefslogtreecommitdiff
path: root/windows/neo-vars/src
diff options
context:
space:
mode:
authormösi <mösi@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2009-05-05 07:04:53 +0000
committermösi <mösi@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2009-05-05 07:04:53 +0000
commit3ce36c4d6c124b14b80fff05b837e3d477e8c630 (patch)
treefd82442a759b4d266743d5b8f6b56224fa9dffa9 /windows/neo-vars/src
parent76900903f71c4672698b07ffdb3dc138580552e8 (diff)
downloadneo-layout-3ce36c4d6c124b14b80fff05b837e3d477e8c630.tar.gz
neo-layout-3ce36c4d6c124b14b80fff05b837e3d477e8c630.tar.bz2
neo-layout-3ce36c4d6c124b14b80fff05b837e3d477e8c630.zip
CF%Comp% kann nun bei fehlgeschlagenem Compose bewirken, dass eine bis dahin gültige Sequenz nachträglich ausgegeben wird, wenn ein unbekanntes Zeichen folgt.
Setzt man beispielsweise CMU0000DF := 1 CDU0000DFU0000DF := "U00017FU000073" dann bewirken die ersten beiden Zeilen, dass ein einzelnes ß erst mal „tot“ wirkt, und mit einem zweiten ß wird „ſs“ draus. Man kann nun diese Zeile anhängen: CFU0000DF := "U0000DF" Das bewirkt nun, dass das erste ß, wenn es von irgend einem anderen Zeichen gefolgt wird, mit diesem dann (verzögert) ausgegeben wird, so, als gäbe es für alle Compose-Möglichkeiten aus ß und anderem Zeichen eine entsprechende Compose-Sequenz, die eben diese beiden Zeichen als Ergebnis liefert. Normaler Weise würden beide Zeichen verschluckt werden, da es keine entsprechende Compose-Sequenz gibt. Ohne CFU0000DF: ßß → ſs ßa → ßb → Mit CFU0000DF: ßß → ſs ßa → ßa ßb → ßb git-svn-id: https://svn.neo-layout.org@1814 b9310e46-f624-0410-8ea1-cfbb3a30dc96
Diffstat (limited to 'windows/neo-vars/src')
-rw-r--r--windows/neo-vars/src/source/varsfunctions.ahk22
1 files changed, 22 insertions, 0 deletions
diff --git a/windows/neo-vars/src/source/varsfunctions.ahk b/windows/neo-vars/src/source/varsfunctions.ahk
index d538a03..079dadc 100644
--- a/windows/neo-vars/src/source/varsfunctions.ahk
+++ b/windows/neo-vars/src/source/varsfunctions.ahk
@@ -42,6 +42,7 @@ CharStarDown(PhysKey, ActKey, char) {
CharProc%SubProc%()
return
}
+rerun:
wasNonShiftKeyPressed := 1
if (PP%PhysKey% != "")
CompNew := PP%PhysKey% ; Von Tastaturwiederholung
@@ -56,6 +57,27 @@ CharStarDown(PhysKey, ActKey, char) {
tosend := ""
PP%PhysKey% := ""
Comp := CompNew
+ } else if (CF%Comp% != "") {
+ tosend := CF%Comp%
+ if (PR%PhysKey% != "") { ; Eventuell vergessenen Key-Release aufr�umen
+ CharOutUp(PR%PhysKey%)
+ PR%PhysKey% := ""
+ }
+
+ loop {
+ if (SubStr(tosend,1,1)=="P") {
+ SubProc := SubStr(tosend,2,6)
+ CharProc%SubProc%()
+ } else {
+ CharOut(SubStr(tosend,1,7))
+ }
+ tosend := SubStr(tosend,8)
+ if (tosend == "")
+ break ; erledigt
+ }
+ Comp := ""
+ PP%PhysKey% := ""
+ goto rerun
} else if (Comp == "") { ; noch kein Zeichen in der Compose-Queue: Ein einzelnes Zeichen wird geschickt
tosend := char
PP%PhysKey% := char