From 3ce36c4d6c124b14b80fff05b837e3d477e8c630 Mon Sep 17 00:00:00 2001 From: mösi Date: Tue, 5 May 2009 07:04:53 +0000 Subject: 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. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- windows/neo-vars/src/source/varsfunctions.ahk | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'windows') 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 -- cgit v1.2.3