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 --