"compose" auf der Konsole ermöglicht die Eingabe von zwei Zeichen, gibt jedoch ein drittes aus.
Das Problem ist, dass die Compose-Definitionen Bytes verwenden , und zwar sowohl für die beiden Eingaben (dh Sie können Compose nicht in Form von eingegebenen Schlüsseln definieren, sondern nur in Form von eingegebenen Symbolen) als auch für die Ausgabe.
Damit es in UTF-8 funktioniert, das aus mehreren Bytes (mindestens 1 bis 4 Bytes) besteht, müsste die Art und Weise, wie die Konsoleneingabe verarbeitet wird, erheblich geändert werden. Es scheint, dass es keine Pläne gibt, dies zu tun (der Konsens unter den Kernelentwicklern ist, dass die Konsole eine Konsole bleiben sollte, etwas Einfaches, das nur für den letzten Neustart verwendet wird; wenn Sie tatsächlich Unicode benötigen, brauchen Sie wahrscheinlich auch Bidi, Shaping usw .;) Es ist besser, ein Grafikterminal auszuführen (ein Vollbild-xterm auf X11; es gibt jedoch auch andere Möglichkeiten).
Tatsächlich funktioniert es mit Multibyte-Zeichen auf der Konsole nicht und auch nicht. ABER es funktioniert immer noch, wenn Sie die Erstellungsdefinitionen auf reines ASCII beschränken.
Und ich fand auch heraus, dass es auch funktioniert, wenn die Ausgabe in ISO-8859-1 ist (das entspricht Unicode-Werten bis zu 0x00ff); dafür kannst du in ein Startskript eine Zeile einfügen:
loadkeys / somepath / somefile
und fügen Sie in diese Datei die gewünschten Compose-Definitionen ein (achten Sie darauf, die Datei in der ISO-8859-1-Codierung zu speichern; und verwenden Sie nur Zeichen größer als 0x7f als Ausgabe). Die Syntax einer solchen Datei ist sehr einfach:
komponiere 'somechar' 'somotherchar' zu 'desiredoutput'
z.B:
komponiere 'a' 'a' bis 'å'
komponiere 'a' 'e' bis 'æ'
Der Apostroph muss entkommen.
Die Auswirkung von toten diakritischen Schlüsseln wird ebenfalls in dieser Datei definiert. für dead_acute + a definieren Sie eine Zeile wie:
komponiere '\' '' a 'bis' á '
dead_grave verwendet backtick (`), dead_diaeresis verwendet doublequote ("), dead_circumflex verwendet circumflex (^) und dead_tilde verwendet tilde (~).