Hallo Dennis!

Dennis Heidsiek schrieb:
Und da es in der deutschen Sprache kein einziges Wort mit Doppel-ß gibt (¿Gegenbeispiel?) hatte ich eben die verrückte Idee, //über meine Custom.ahk im Lang-ſ-Modus die automatische Ersetzung ßß→ſs mit einzubauen³. Was haltet ihr davon?⁴

es kommt darauf an, wie du es umsetzen wills. Meinst du wirklich

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

oder etwas mit Compose wie in den Fußnoten angegeben? Letzteres ist
absolut zu bevorzugen, da eine wichtige Änderung, ich glaube, noch im
alten ahk-neo war, nicht mit Backspace zu arbeiten, d.h. ein einmal
geschriebener (ausgegebener) Buchstabe bleibt auch.

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. Für die gleiche Funktion ohne diesen Patch bräuchte man für alle Kombinationen dieser Compose-Sequenz mit einem nachfolgenden Zeichen eine entsprechende Compose-Sequenz in der Compose-Datei, was diese unnötig aufbläht.

Eingabe    Ausgabe
ß        →
ß        → ſ s

bzw.

Eingabe    Ausgabe
ß        →
<key x>  → ß <key x>


– Mœsi


Im Log zu r1814 liest sich das so:

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

Antwort per Email an