Ist das nicht AHK was Du beschreibst? Vielleicht sollte ich erst noch
die anderen Mails lesen, aber das kam mir da sofort in den Sinn. Gibt es
natürlich nur für Windows dieses AHK. Aber da vermisst Du es doch. Ok,
die einfache Konfigurationsdatei ist der wesentliche Vorteil, den Du
suchst, nehme ich an.
Grüße,
Erik
El 28/8/25 a las 18:46, qwertfisch escribió:
Hallo zusammen,
bei den ganzen Mails und interessanten Vorschlägen und Erweiterungen
des Neo-Layouts habe ich bemerkt, dass ein gewisser Bedarf besteht,
ein Software-Tastaturlayout möglichst einfach konfigurieren zu können,
ohne auf Programmierkenntnisse zurückzugreifen. Selbst wenn man
manches programmieren kann, heißt es nicht, dass es einfach ist, noch
dass schnelle Anpassungen zum Experimentieren drin sind.
Für Windows-Nutzer ist Reneo ein ziemlich gutes Tool. Es hat die
Handhabung der Neo-Ebenen und ihrer Umschalttasten in sich einkodiert
und stellt dazu eine JSON-Schnittstelle bereit, um mit Layouts der
Neo-Familie zu spielen oder eigene Variationen schnell und dauerhaft
konfigurieren zu können. Das ist sehr praktisch, aber bin bei meinen
Ideen bereits auf Features gestoßen, die damit nicht realisierbar
sind, die wiederum weitere Spezialfälle im Reneo-Code erfordern. Das
ist nicht wirklich nachhaltig noch besonders schnell oder motivierend.
Daher möchte ich hier kurz ein bisschen vorfühlen und weitere Ideen
sammeln für eine generische Variante von Reneo, die ich Keymechs
nenne. Ich trage dieses Projekt seit über zwei Jahren mit mir herum
und hatte Anfang 2023 auch eine erste lauffähige Rohversion (jedoch
nicht konfigurierbar). Dann kam das Leben dazwischen und die Idee
verflog ein wenig. Durch die ganzen Mails hier habe ich mich
entschieden, sie wieder aufleben zu lassen und weiß nun auch, dass der
Ansatz nicht über die Implementierung, sondern über die Konfiguration
erfolgen sollte.
Die Ziele von Keymechs sind:
• wie Reneo ein Programm im Usermode, dass die eingehenden getippten
Tasten interpretiert und gemäß der aktuellen Layoutkonfiguration
„umbaut“, sodass das gewünschte Zeichen / Taste / Funktion herauskommt.
• unabhängig vom tatsächlich aktiven Tastaturlayout
• generische Definition von Ebenen, nicht nur auf die Neo-Familie
beschränkt
• Ermöglichen verschiedener Verhaltensweisen, darunter auch Mod-Tap
• einfachere Konfiguration als bisher (JSON ist nicht dafür gemacht)
• anpassbar an unterschiedliche Hardware-Layouts (nicht nur ISO/ANSI)
An Reneo finde ich einiges gut, das ich gerne auch übernehmen würde:
• Einlesen und Verwenden von Compose Combinations
• Bildschirmtastatur (hier ggf. auch mit Darstellung von CoCos)
• Konfiguration für Laien
Wenn man sich den Reneo-Code durchschaut (und versteht), wird man
einige gewachsene Strukturen entdecken. Vieles ist aus Neo einfach
hartkodiert drin, so dass es umso schwieriger ist, mit den
Layer-Umschalttasten andere Dinge zu erreichen, oder andere/weitere
Layer zu definieren. Manches geht, aber ist dann auch wieder explizit
einkodiert worden. Auch der Einhandmodus, der eine ganz spezielle
Mod-Tap-Konfiguration verwendet, ist manuell drin im Code. Dies führt
zu einer schlechten Erweiterbarkeit und ist wie oben beschrieben der
Grund, dass ich hier nochmal neu ansetzen möchte, um all diese Sache
konfigurierbar zu machen, was entsprechend auch mehr
Einstellmöglichkeiten braucht.
Ich möchte mich in der Funktionsweise grob an dem orientieren, was ZMK
für programmierbare Tastaturen bietet, die sogenannten Behaviors:
https://zmk.dev/docs/keymaps/behaviors
Dies soll nicht (unbedingt) die Syntax zur Konfiguration sein. ZMK
setzt an einer ganz anderen Stelle an als Reneo, weswegen die Optionen
von ZMK hier weder komplett möglich noch sinnvoll in dieser Form sind.
Doch die Behaviors finde ich sehr nützlich und reichen (fast) aus, um
mindestens Neo damit generisch zu definieren.
Was die Implementierung von Keymechs angeht, habe ich bereits ein
funktionierendes Konzept erstellt. Ich würde das zwar nochmal
überarbeiten (ist zwei Jahre her), aber vom Prinzip her klappt es. Die
Konfiguration ist dagegen das, was mir Schwierigkeiten bereitet. Ich
hätte gerne eine „sprechende“, direkt verständliche Konfiguration,
ohne viel Klimbim und unnötige Optionen. Eine die man erstmal so
runterschreiben kann und die visuell auf einen Blick zeigt, wie eine
Ebene ausschaut. Mal ein Beispiel mit 6x3 Tasten:
[Mod3]
… _ [ ] ^ !
\ / { } * ?
# $ | ~ ` +
Dazu kommen noch die Optionen für die Verhaltensweisen von Tasten, um
die Ebenenumschaltung zu steuern, Locks festzulegen usw. Die machen
die Darstellung natürlich länger, aber aus meiner Sicht besteht keine
Notwendigkeit für elendig hässliche Strukturen wie bei JSON.
Ich habe ein paar Ideen für das Konfigurationsformat, welche ich aber
in einer weiteren Mail schreibe (die hier ist bereits zu lang).
So wie ich das in den letzten Wochen gelesen habe, besteht vermehrt
Bedarf. Ich würd’s halt auch erstmal nur für Windows entwickeln, halte
mir aber eine Umsetzung desselben Prinzips für Linux offen (Mac ist
eine andere Geschichte). Ich weiß auch um bestehende Tools wie bspw.
ZMK (keyboard firmware), KMonad, Kanata, keyd (nur Linux) oder
keymapper (arbeitet auf Tasten statt Ebenen), die alle die eine oder
andere Sache umsetzen, teils sehr feature-reich sind. Ich habe mir
viele davon angesehen und bin zu dem Schluss gekommen, dass sie
entweder nicht geeignet sind, nicht für Windows erhältlich, oder
meistens viel zu umständlich in der Konfiguration daherkommen.
Mächtig, ja, aber wenn ich quasi Lisp programmieren muss, um mein
Tastaturlayout zu bekommen, dann wünsche ich mir lieber eine
kompaktere und intutiv verständliche Sprache genau für diesen Zweck.
Ich würd’s halt gerne probieren und dabei vor allem für mich lernen,
eine Konfigurationsdatei einer selbstdefinierten Sprache (DSL) zu
parsen. Ich freue mich über jegliche Anregung, Kritik, Hinweise.
qwertfisch
_______________________________________________
Diskussion mailing list -- diskussion@neo-layout.org
To unsubscribe send an email to diskussion-le...@neo-layout.org
_______________________________________________
Diskussion mailing list -- diskussion@neo-layout.org
To unsubscribe send an email to diskussion-le...@neo-layout.org