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
