Hallo,

ist halt die Frage inwieweit so ein Konfigurator limitiert. Ist die Tastatur 
frei programmierbar und 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 letztendlich 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.

Viele Grüße,
Manuel
-- 

Antwort per Email an