diff options
author | mösi <mösi@b9310e46-f624-0410-8ea1-cfbb3a30dc96> | 2009-05-05 07:04:53 +0000 |
---|---|---|
committer | mösi <mösi@b9310e46-f624-0410-8ea1-cfbb3a30dc96> | 2009-05-05 07:04:53 +0000 |
commit | 3ce36c4d6c124b14b80fff05b837e3d477e8c630 (patch) | |
tree | fd82442a759b4d266743d5b8f6b56224fa9dffa9 /windows/neo-vars | |
parent | 76900903f71c4672698b07ffdb3dc138580552e8 (diff) |
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')
-rw-r--r-- | windows/neo-vars/src/source/varsfunctions.ahk | 22 |
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
|