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]

Antwort per Email an