Moin,
Am 31.08.2025 10:33, schrieb Gerhard Heide via Diskussion:
Du hast als Ziel einer DSL 'Ich hätte gerne eine „sprechende“, direkt
verständliche Konfiguration, ... und die visuell auf einen Blick zeigt, wie
eine Ebene ausschaut.
Das erinnert mich doch direkt an mein Lieblingstool kanata, dessen erster
Konfigurationsschritt genauso einfach und sprechend aussieht.
(defsrc
esc F1 F13 F16 F24
^ 1 2 3 4 5 6 7 8 9 0 + ´ ⌫
tab - z u a ä x p l f j q ß #
caps c s i e o d t n r h k ret
lsft 102d y . ü , ö b g w m v rsft
lmet lalt F14 spc F15 ralt
)
Doch dann gehts los, caps und 102d (<) brauchen einen Alias, weil ihre
echte Funktion mehr Platz benötigt, als in dieser Übersicht praktikabel
darstellbar.
Ja, ich bin auf Kanata gestoßen bei meinen Recherchen. Vom groben Überblick
her würde ich auch sagen, das bietet so ziemlich die Features, die man für
eine Ebenenverwaltung braucht. Du nennst es dein Lieblingstool, hast du
damit Erfahrung? Ließe sich damit beispielsweise das aktuelle Neo-Layout
umsetzen? Also mit allen Ebenen über dieselben Umschalttasten, und auch die
Ebenen-Locks?
Ich habe es noch nicht selbst live getestet, weil ich Verständnisprobleme
mit den Befehlen habe. Soweit ich das sehe, ist „defsrc“ dafür da, ein
virtuelles Layout der physischen Tasten abzubilden. D.h. alle diese obigen
Definitionen verweisen auf einen Keycode. Das tatsächliche Layoutmapping
wäre dann in einer „deflayer“ Konfiguration. Dort ist mir nicht klar, ob
bspw. ein „x“ nun versucht,
(1) die physische Taste zu tippen (die bei qwerty mit „x“ beschriftet ist)
(2) die virtuelle Taste des aktuellen System-Tastaturlayouts zu tippen, die
ein „x“ hervorbringt, aber das kann ja eine ganz andere physische Taste
sein, oder
(3) tatsächlich den Text „x“ auszugeben.
Gewünscht wäre sicherlich (2) … vielleicht muss ich doch mal mehr mit Kanata
experimentieren. Korrigier mich bitte, wenn ich da falsch liege.
Was spricht gegen einen Alias, wenn die Funktion einer Taste doch mal
aufwendiger sein könnte? Das muss sich doch nicht beides ausschließen. Wenn
ich Neo definieren wollte, fände ich das rein mit tastenbezogenen
Definitionen eher unübersichtlich. Da ist die JSON-Definition von Reneo fast
noch besser.
Möglicherweise funktioniert der visuelle Ansatz nicht 100%ig. Ein Alias kann
hier die Brücke schlagen zwischen einer ganzen Ebenendefinition und einer
Tastendefinition.
Jede weitere Ebene erfordert vom Nutzer die selbe Reihenfolge und Anzahl
von Eintragen zu managen.
Natürlich geht das, aber Änderungen durch den Nutzer erfordern oft viele
Stellen gleichzeitig anzupassen um wieder einen definierten Zustand zu
erreichen.
Das ist ein gutes Argument. Du hast recht, es sollte eine Möglichkeit geben,
nur Tasten zu definieren. Warum also nicht beides anbieten? Im Normalfall
will man ja eine komplette Ebene am Stück definieren, und die allermeisten
Tasten davon sind Buchstaben. Ich fände eine Tastatur-Definition plus Aliase
einen guten Kompromiss. Und es ist syntaktischer Zucker. Kann man nutzen,
muss man nicht.
Für mich sieht das im Grunde nach einer anderen Art aus, wie man
Definitionen aufschreibt. „Horizontal“ für mehrere kurze nacheinander, oder
vertikal mit einer Definition pro Zeile. Wie oben gesagt, der Nutzer bekommt
die Wahl, und ich halte in vielen Fällen den Zucker für die bessere Wahl.
os-layout qwertz
layer1-map f e
layer1-map d i
layer1-map caps layer3-trigger
layer4-map caps layer5-trigger
layer3-map < layer5-trigger
layer4-map-shortcut x lctl x
Klar hat keinerlei Visualisierung und ist sehr laber-lastig, aber ist
einfach genug um jedem ein personalisierte Layouts und eigene Ebenen zu
ermöglichen.
Die Geschwätzigkeit bekommt man optimiert, das ist nicht das Ding. Bspw.
kann man die Definitionen nach Ebenen anordnen, dann kommt vielleicht so
etwas heraus. Das verbessert auch die Lesbarkeit.
[layer1]
map f e
map d i
[layer4]
shortcut x lctrl x
Der andere Vorteil, die Kürze der Kommandos macht es deutlich einfacher,
das in Konfigurationen anderer Tools wie Reneo oder kanata zu übersetzen,
obwohl deren Konfigurationen komplett anders aussehen.
Hm, wenn Dinge mit Reneo oder Kanata gleichermaßen möglich wären, müsste man
erst gar kein neues Tool schreiben. Ich verstehe daher den Sinn einer
solchen Konvertierung nicht. Diese kann nicht alles vollständig übersetzen.
qwertfisch
_______________________________________________
Diskussion mailing list -- [email protected]
To unsubscribe send an email to [email protected]