Hallo,

ist halt die Frage inwieweit so ein Konfigurator limitiert. Ist die
Tastatur frei programmierbar oder Open Hardware?

Ich fand die Idee auch interessant und habe mal versucht, sie für die
Ergodox zu implementieren. Das hat so ca. 4 Monate gedauert bis ich an
die Speichergrenze gestoßen bin. Ich habe früh daran gedacht mit
cpp-Bedingungen die meisten Features abschaltbar zu machen und alle
erstellten Varianten kompilieren momentan (soweit ich mich
erinnere). Tatsächlich war es am schwersten, mein Ebenenwechselsystem
für Neo zu implementieren. Da ich Ebenenwechsel zumindest partiell (ab
L5/Keypad) Oneshot-fähig haben wollte, durfte ich im Grunde alle
qmk-Funktionen für Ebenenwechsel reimplementieren und ändere in meinen
Ebenenlogikhilfsfunktionen die Funktionspointer, falls die Tastatur den
Neo-Treiber erwartet.

Unicode unterstützt qmk grundsätzlich, die Alt Variante unter Windows
soll aber schlecht funktionieren. Ich setze daher WinCompose voraus, von
dem es eine portable Fassung gibt, Mac soll auch gehen; testen kann ich
es nicht; Linux ist schwierig. Die Methode hängt nicht vom wm ab,
sondern davon was davon gestartet wird. Da gibt es ibus, scim und
uim. Uim ist trotz seiner spärlichen Docs der einzige der auf
Kernel-Konsolen funktioniert und dort brauche ich ihn für die
Festplattenentschlüsselung, wenn ich von der Us-Bioskeymap nicht
umschalten will. Dafür müsste man ihn aber umschreiben, weil er sonst
den Codepoint der eingegebenen Unicode-Zeichen anzeigt (und Scheme
müsste ich erst lernen). Unicode-Eingabe funktioniert in uim außerdem
nur über ein Modul der ungewarteten m17n-lib. Schöner wäre also eine
native Implementierung.

Zu guter Letzt war das Eintragen der 240+ Unicodepoints von Neo in
Headerdateien ziemlich nervig und ist eigentlich automatisierbar. Aus
Platz- und Arbeitsersparnisgründen wollte ich also mittels yacc einen
Compiler generieren, der XKB Symboldateien ausliest und sie mittels
keysymdef.h auf Unicodepoints ummappt. Dann könnte man diese mit
entsprechender semantischer Ausgabe in mappende C-Arrays umwandeln und
letztendlich das ganze so erweitern, dass man eine Treiberkeymap als
Basis und eine als Ziel angibt, und die Ebenen automatisch generiert,
wobei alle auf der Basis nichtexistenten Zeichen durch
Unicodeeingabetasten ersetzt werden.
Die XKB-Dokumentation ist aber quasi nicht vorhanden und ohne Grammatik
hatte ich keinen Bock mehr, daran weiterzuarbeiten.

Könnte den Code in seiner unfertigen und ungetesteten Fassung vielleicht
mal auf Github laden, falls der Rebase halbwegs durchläuft.

Viele Grüße,
Manuel


Antwort per Email an