Hallo miteinander, Einer der Wünsche für eine Neo2 überlegene Tastaturbelegung ist, dass wichtige Modifikatoren besser zu erreichen sind. Dazu muss man die Modifikatoren auf Tasten legen, auf denen jetzt Buchstaben bzw. Punkt und Komma liegen. Wohin mit den verdrängten Zeichen?
Die einfachste Lösung ist, schlechter gelegene Tasten oder höhere Ebenen heranzuziehen. Das funktioniert sicher, ist aber langweilig und nicht unbedingt die effizienteste Lösung. Die Alternative ist, ein paar Zeichen mit toten Tasten zu erzeugen (zum Beispiel im Sinne von Karls Quick-Tot-Tasten). Diese Lösung hat drei Haken: a) Man braucht einen passablen Platz für die tote Taste. b) Unter X kann man mit toten Tasten keine Alt- oder Control-Codes generieren. Das heißt, entweder sieht man eine alternative Eingabemöglichkeit vor oder man beschränkt die so erzeugten Zeichen auf Umlaute und andere nicht-ASCII-Zeichen. c) Das System wird fragiler, zumindest unter X: Die Tastatur funktioniert nur wenn Treiber und Compose beide funktionieren, und diese beiden Komponenten sind bei X getrennt. Die Konsequenzen davon sind diesselben wie für b). Man könnte meinen, ein weiterer Haken sei, dass man mehr Anschläge braucht, wenn ein Zeichen per toter Taste statt direkt erzeugt wird. Das ist meistens, aber nicht unbedingt so, siehe unten. Mit b) und c) muss man sich abfinden. Zu a) sehe ich zwei Auswege. 1. Die tote-q-Tastatur: Statt extra eine tote Taste einzuführen tötet man q. Q deshalb, weil es der seltenste Buchstabe ist und noch dazu fast ausschließlich im Bigramm qu auftaucht. In .XCompose sieht die tote-q-Tastatur zum Beispiel so aus: ~Ctrl ~Alt <q> <q> : q ~Ctrl ~Alt <Q> <Q> : Q ~Ctrl ~Alt <q> <u> : "qu" ~Ctrl ~Alt <q> <U> : "qU" ~Ctrl ~Alt <Q> <u> : "Qu" ~Ctrl ~Alt <Q> <U> : "QU" ~Ctrl ~Alt <q> <space> : odiaeresis ~Ctrl ~Alt <Q> <space> : Odiaeresis ~Ctrl ~Alt <q> <s> : ssharp ~Ctrl ~Alt <q> <S> : "ẞ" ~Ctrl ~Alt <Q> <S> : "ẞ" Durch ~Ctrl ~Alt erreicht man, dass Control-q und Alt-q noch funktionieren; die Sequenzen mit u stellen sicher, dass das Bigramm qu eingegeben werden kann, als wäre q noch lebendig; ein einzelnes q bekommt man durch einen Doppeltanschlag. Der eigentliche Zweck des toten q ist im Beispiel oben die Erzeugung von ö und ß als Compose-Sequenzen. Wenn aus irgendeinem Grund Compose nicht funktioniert (zum Beispiel in Applikationen, die Compose nicht unterstützen) bleibt in der Regel das q lebendig; man verliert zwar ein paar Umlaute, aber hat noch immer ein bedienbares System. Ich habe jetzt drei Monate mit totem q gelebt nur zwei Ausnahmen von der Regel gefunden (rdesktop und ein Derivat von ICA Client); für beide Programme kann mit der Umgebungsvariable XCOMPOSEFILE das q am Leben halten (Kommandozeile «XCOMPOSEFILE= rdesktop» oder ähnlich). Insgesamt ist die tote-q-Lösung gangbar. Lernbarkeit: An den Doppeltanschlag von q bei der Bedienung von Programmen (die q für Quit verwenden) habe ich mich rasch gewöhnt. Die Gewöhnung beim Schreiben geht langsamer. Ich glaube das liegt daran, dass ich wenig Deutsch und daher wenig ö und ß schreibe. An die Lage der Umlaute bei Neo hatte ich mich nach drei Monaten genausowenig gewöhnt. 2. Modifikatoren als tote Tasten benutzen. Einen Modifikator zu drücken und gleich wieder loszulassen hat normalerweise keine Funktion; die Idee ist, diesen Vorgang wie den Druck einer toten Taste zu behandeln. Der AHK-Treiber nutzt diese Idee in der Implementierung des Einhand-Modus. Windows ist also kein Problem. Mit XKB hingegen ist die Idee nicht umsetzbar. Sie lässt sich aber mit Eingabemethoden realisieren. Im Neoland ist die Eingabemethode der Wahl der Compose-Mechanismus, wobei wir also wieder bei den toten Tasten sind. Normalerweise ignoriert Compose Modifikatoren völlig. Mit kleinen Sourcecodeänderungen kann man aber mit der Definition <ISO_Level3_Shift> : ssharp mit Mod3 ein ß eingeben. Mit einem einzigen Anschlag, wohlgemerkt. Zu den üblichen Einschränkungen der toten Tasten kommen noch folgende Bedenken: - Ob Compose jemals wie gewünscht erweitert wird ist offen. Ein Patch ist eingereicht (https://bugs.freedesktop.org/show_bug.cgi?id=26705), aber das heißt nicht viel. Auch im günstigsten Fall wird es Jahre dauern, bis die Änderung sich allgemein verbreitet hat. - Die Lösung funktioniert nicht mit allen Programmen, auch nicht mit allen Compose-tauglichen. Beispielsweise versagen xterm und emacs mit Xaw; urxvt, firefox, inkscape, OpenOffice, kword, dillo, gitk und emacs mit GTK-Widgets funktionieren hingegen. Alles in allem ist das Bild aber besser als ich gehofft hatte. Ich habe auch mit einen weiteren Eingabemethode, IBus, experimentiert. Ich habe nur kleines Demo, nichts, was den Compose-Mechanismus der Xlib auch nur annähernd nachbildet; es geht nur um die Frage, ob man den Trick mit den Modifikatoren hinbringt. Die Zwischenbilanz ist: Erfolg für Firefox, inkscape, OpenOffice, koffice, dillo, gitk und urxvt, Misserfolg für xterm und emacs (Die Probleme mit emacs sind den IBus-Entwickler bekannt; ich nehme an, sie werden in absehbaren Zeit behoben). Zur Lernbarkeit kann ich nicht viel sagen. Das größte Hindernis sind unabsichtliche Eingaben. Das passiert mir öfters, aber ich bin auch sonst ein schlampiger Tipper. Ich habe auf meinem Privatrechner seit einer Woche sämtliche Modifikatoren mit auffälligen, nutzlosen Strings belegt, so dass ich versehentliche Bedienung bemerke. Die Häufigkeit der Fehlbedienungen nimmt langsam ab. Langsam. Die Lösung mit doppelt benutzten Modifikator-Tasten ist die technisch anspruchvollste, hat aber auch am meisten Potenzial, zumal wenn man sich auf ein Rahmenwerk wie IBus stützt, bei dem man die Fäden in der Hand hat und nicht auf die Gnade von Entwicklern anderer Projekte angewiesen ist. Als Appetithäppchen habe ich in meinem Demo die Möglichkeit eingebaut, Unicode-Zeichen als vierstellige Hexzahl einzugeben (Eingeleitet von der keysym Codeinput, die man sich irgendwo auf die Tastatur legen sollte). Neo-Griechisch und Neo-Kyrillisch ließen sich mit einem aufgebohrten (sprich: selektiv ein- und abschaltbaren) Compose elegant implementieren. Oder Kürzelsysteme… Falls jemand damit experimentieren möchte: Der Patch für Compose ist im oben erwähnten Ticket auf freedesktop.org zu finden, das kleine und dennoch fehlerhafte Demo für IBus im Anhang. Andreas
start
Description: IBus-Demo