Guten Abend, werte Leute!

Der eine oder andere erinnert sich vielleicht noch an neo_yaml. (Warum
heißt das eigentlich so?)

Zum baldigen Start von Neo 3 – auch wenn ich davon nicht so viel halte –
sollte so langsam auch eine automatisierte Erstellung der Treiber aus
der Referenz stehen.

Zur Zeit bin ich hin und weg von awk und damals hieß es, dass das
Fortführen von yalm nicht unbedingt an Python gebunden ist und gerne von
vorne begonnen werden darf. awk ist nicht so gut bzw. umfangreich wie
Python oder Perl, eignet sich aber für unsere Zwecke hervorragend.
Es sollte für alle gängigen Betriebssysteme verfügbar sein. Einige der
nachfolgenden Hinweise und Befehle gelten aber nur für Linux.

Alle relevanten Dateien sind angefügt und ich würde erstmal gerne von
euch wissen, was ihr so davon haltet.

Betrachtet bitte die neo_de.xmodmap: Sie ist bei der Ziffernreihe
modifiziert, sodass sie dort mehr oder weniger layoutunabhängig ist.
(Die ganze Datei wollte ich noch nicht „portieren“, es geht erstmal nur
ums Testen.)
Statt dem Befehl onesuperior befindet sich dort zum Beispiel lnxkcd10_3
– damit ist die 3. Ebene des Linux-Keycode 10 gemeint. Und so zieht sich
das durch den ganzen Abschnitt, es könnte auch auf die ganze Datei und
auch auf andere Dateien wie das ahk-Skript oder gar das Tastaturlayout
als svg-Datei ausgeweitet werden.


awk läuft nun durch diese Datei und ersetzt diese Schlüsselwörter durch
die korrekten Einträge. Probiert’s aus:

awk -f transform layout systemcodes neo_de.xmodmap > ausgabe

Die entstandene Datei entspricht nun der originalen, die auf der
Neo-Website zu finden ist:

diff -s ausgabe neo_de.xmodmap.orig


Die wichtigen zwei Hilfsdateien sind layout und systemcodes.
In layout stehen die ganzen „Keycodes“ (habe ich willkürlich gewählt –
sie repräsentieren einfach nur die Tasten) und dahinter die sechs
Zeichen der sechs Ebenen.
systemcodes enthält alle per Neo darstellbaren Zeichen und dahinter
jeweils das Kommando, das der Treiber benötigt. Zum Beispiel braucht die
xmodmap für » das Kommando guillemotright. Im Moment ist dort auch nur
die xmodmap berücksichtigt, das kann aber sehr leicht erweitert werden.

Natürlich kann diese Automatisierung nicht alles berücksichtigen. Die
Position der Modifier etwa müssen in den „layoutunabhängigen“
Treiberdateien dann doch manuell verändert werden.
Außerdem gibt es hier und da noch Probleme: Mit der Pseudoebene wusste
ich im Moment noch nicht so viel anzufangen, das kann man sicher noch
eleganter lösen. Und auch schwer erkennbare oder nicht darstellbare
Unicodezeichen habe ich provisorisch abgekürzt: Da man im Quelltext zum
Beispiel deutschen und englischen Gedankenstrich nicht unterscheiden
kann, hab ich als Kennung für emdash nicht — sondern m- gewählt; und für
KP_Multiply, der eigentlich * entspricht, stattdessen k*. Der Gravis
könnte ` und der tote Gravis einfach d` sein. usw.

Sooo:
Ist awk ok? Eine schöne Einführung findet ihr in der letzten Juniausgabe
von freiesMagazin¹, ein etwas umfangreicheres Handbuch bei Wikipedia².
Sind die keycodes in Ordnung? Die sind nämlich gar nicht so
unveränderbar, ich würde mir hier etwas mehr Invarianz wünschen.
Was wünscht ihr euch von der layout-Datei? Sie ist im Moment nicht so
gut leserlich. Man könnte das verbessern, aber dann wäre das awk-Skript
„transform“ nicht mehr so einfach gestaltet. Eine gut lesbare Referenz
kann (und muss) man aber sowieso erstellen.
Sonstige Verbesserungsvorschläge/Wünsche/Anmerkungen?

Ich arbeite auch gerne an diesem Projekt weiter, aber erst, wenn ich
weiß, dass das in keine falsche Richtung geht.


tschau

Frank


[1] http://www.freiesmagazin.de/freiesMagazin-2009-06
[2] http://www.ostc.de/awk.pdf

Attachment: yaml.tar.gz
Description: application/compressed-tar

Antwort per Email an