Hallo Mœsi,

Matthias Wächter schrieb am 05.05.2009 09:19 Uhr:
Meinst du wirklich

Eingabe    Ausgabe
ß        → ß
ß        → <backspace> ſ s

Nein, auf keinen Fall! Wie Du selber geschrieben hast, hat das nachträgliche Löschen von bereits ausgegeben Zeichen mit Backspace nur Probleme bereitet und sollte von uns auch zukünftig vermieden werden.

Ab/seit r1814 gibt es in neo-vars neben dem Umweg über ein vorangedrücktes Compose die Möglichkeit, den Compose-Mechanismus selektiv tolerant gegen Fehleingaben zu machen. Statt dass dann die gesamte bisherige Compose-Sequenz verworfen wird, wenn ein unbekanntes Zeichen angehängt wird, werden dann sowohl die bisherige Compose-Sequenz (bzw. ein Ersatzzeichen) und das darauf folgende, nicht passende Zeichen ausgegeben.

Ganz genau diese Funktionalität hatte ich erhofft irgendwie zusammenbasteln zu können – ¡Herzlichen Dank für die prompte und gewohnt kompetente Umsetzung, Mœsi!

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.

¡Super! Ich habe diesen Code gleich in meine Custom.ahk aufgenommen :-).

Und nach diesem »Stickmuster« kann man jetzt also quasi jedem beliebigem Zeichen »Compose-Funktionalität ohne vorangstelltes Compose« verleihen – oder vielleicht sollte man eher von »Live-Textersetzung« sprechen. Sehr schön, ¡Danke nochmal! :-).


Viele Grüße,
Dennis-ſ

Antwort per Email an