Am Montag, den 05.04.2010, 17:36 +0200 schrieb Knittl:
> 2010/4/5 Frank Stähr <!^*?|[email protected]>:
> > […] wenn ich dich
> > richtig verstanden habe, solltest du wohl meine Mails noch einmal lesen.
> > Wohl auch die vom Februar.

> weder du, ich oder
> sonstjemand, der neo tippt will einem anderen neoling was böses – also
> lieber frank, lies auch bitte meine mails ordentlich ;)

Du hast da was aus dem Zusammenhang gerissen, nämlich

> vielleicht hast du
> dich ja bei deinem »Eine Datei z. B. svg  enthlt die Keycodes« auch
> nur vertippt, auf das wollte ich auch hinweisen.

und außerdem hast du meine Mailaddy hier im Klartext geschickt – ich bin
also einfach davon ausgegangen, dass du von Grund auf böse bist ;-)

Nein, ernsthaft, meiner Adresse macht das nichts mehr aus und meine
Implementierung erkläre ich noch einmal möglichst unmissverständlich und
diesmal vollständig:

Meine Lösung bestand im Wesentlichen aus *drei* Dateien, nämlich layout,
systemcodes und dem awk-Skript.

Die Datei layout sieht etwa so aus:
lnxkcd10 1 ° ¹ ª ₁ ¬
lnxkcd11 2 § ² º ₂ ∨
lnxkcd12 3 ℓ ³ № ₃ ∧
lnxkcd13 4 » › ⇞ ♀ ⊥
usw.

Das erste in jeder Zeile ist das, was ich Keycode nenne. Es bezeichnet
eine Taste auf der Tastatur und ist unabhängig vom Layout. Dahinter
kommen die sechs Zeichen der sechs Ebenen, die zu der jeweiligen Taste
gehören (hier also ein Teil der Zahlenreihe).

systemcodes:
utf8    neo_de.xmodmap
1       1
°       degree
¹       onesuperior
ª       ordfeminine
₁       onesubscript
¬       notsign
2       2
§       section
²       twosuperior
º       masculine

Die erste Zeile enthält die „Kategorien“, zu denen die in den Spalten
stehenden Wörter bzw. Zeichen gehören, also UTF-8, neo_de.xmodmap, ahk,
xkb usw. (Spalten und Zeilen auch hier nur auszugsweise).

Die dritte Datei ist das awk-Skript, damit erhält man: Eine Datei –
**z. B.** irgendeine svg-Datei (ich hatte als Beispiel die
neo_de.xmodmap) – enthält die /Keycodes/, also nicht das Layout.
awk läuft da durch und ersetzt diese automatisch mit den tatsächlichen
Zeichen. Damit hat man also /ein/ Programm für /alle/ layoutabhängigen
Dateien, ob nun neo_de.xmodmap, ahk oder eben auch svg.

> alles was ich gesagt hab, ist, dass svg nicht die beste basis
> darstellt – das hast du in deinem mail so geschrieben.

Ja, als Zitat für sich alleine war das tatsächlich nicht so klar. Aber
nun wissen wir, dass das Layout also nicht in der svg, sondern in der
Datei layout gespeichert ist.

> und den
> scancode (…, …) vorschlag hab ich gelesen, deshalb auch meine
> anmerkung, dass gewisse treiber informationen brauchen, die so eben
> nicht darstellbar sind und jeder treiber die zu erzeugenden zeichen
> und deren zugehörigen in einem anderen format benötigt.

Genau, und dafür ist die Datei systemcodes. Dies alles ist recht simpel;
das Problem, das bleibt, ist die Bearbeitung aller layoutabhängigen
Dateien, und das sind zur Zeit praktisch alle. Man muss also überall in
diesen Dateien ° (bzw. degree) durch lnxkcd10_2 ersetzen usw. (hier:
Linux Keycode № 10, Ebene 2).

Davon abgesehen finde ich Martins Vorschlag gut, aus so einer Datei
layout noch eine besser menschenlesbare Datei zu erzeugen. In dieser
müssen ja auch die Positionen und das Verhalten der Modifier beschrieben
werden. (Eine besser technisch lesbare Referenz ist mit dieser
Implementierung erstmal nicht unbedingt nötig.)

tschau

Frank


Antwort per Email an