Am 18.09.2025 21:32, schrieb Erik del Toro Streb:
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.
Darauf antworte ich mit einem klaren Jein! ;)
Autohotkey kann diese Dinge, aber es ist nicht primär dafür gedacht.
Entsprechend ist es deutlich umständlicher anzuwenden. Wer auch immer sich
die Mühe gemacht hat, das Neo-AHK-Skript zu basteln, dem gebührt mein
Respekt dafür, ein ungeeignetes Werkzeug etwas zu zweckentfremden und das
Ziel trotzdem zu erreichen.
Mit Autohotkey die Tasten umzubiegen ist von hinten durch die Brust ins
Auge, wie man so sagt. Kann man machen, sollte man nicht. Reneo wurde
entwickelt, weil AHK zuviele unnötige Schichten verwendete und es dadurch
bei ausgelasteten Rechnern oder zu schnellen Eingaben nacheinander (gerade
in Spielen!) zu Verhakungen und Anhalten des Skripts kam. Reneo verwendet
auf unterer Ebene denselben Systemaufruf, vermeidet aber unnötiges
„Klappern“ von Modifiern oder virtuell gedrückten/losgelassenen Tasten.
Was ich gerne möchte ist ein Tool wie Reneo, das nicht bloß fest verdrahtet
für Neo(-like) Layouts funktioniert, sondern deutlich mächtiger ist. Hier
ist AHK leider keine gangbare Alternative, auch wenn man hier gewissermaßen
die AHK-Sprache als Konfiguration nutzen könnte. Es ist bereits für
Neo-Layouts kompliziert unter der Haube – generische Konfigurierbarkeit wäre
ein Graus in der Implementierung und hätte weiterhin die angesprochenen
Nachteile.
qwertfisch
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 -- [email protected]
To unsubscribe send an email to [email protected]