Welche der vielen Keymaps in diesem Repository ist autoritativ? #571
Labels
No Label
(╯°□°)╯︵ ┻━┻
Bug
Diskussion
Dokumentation
Duplikat
Gitea
Hardware
Hilfe
Invalid
Java
Lernen
Qt
Remote
Subversion
Tablet
Tastaturbelegung
Test
Treiber/Android
Treiber/iOS
Treiber/Linux/Konsole
Treiber/Linux/xkbmap
Treiber/Linux/xmodmap
Treiber/MacOS
Treiber/Windows/AHK
Treiber/Windows/kbdneo
Treiber/Windows/ReNeo
Verbesserung
Website
Windows 11
Wontfix
Worksforme
No Milestone
No Assignees
3 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: neo/neo-layout#571
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Es gibt ja recht viele Keymaps und Treiber in diesem Repository, für verschiedene Betriebssysteme und so weiter. Die meisten davon (alle?) scheinen hardgecodet zu sein. Das heißt, es gibt sehr viel Duplikation.
Daher folgende Fragen:
Ich denke, es wäre sinnvoll, wenn es eine einzige, verbindliche Definiton von Neo gäbe und alle Keymaps, Treiber und so weiter automatisch per Skript daraus generiert würden. So müsste man nur eine Datei ändern und alle anderen wären automatisch auf dem neuesten Stand. Derzeit ist manches wohl veraltet (siehe auch #567) und ich habe den Eindruck, dass niemand wirklich einen Überblick hat, was noch aktuell ist und was nicht. Zumindest ich als Außenstehender finde das schwer zu überblicken.
Autoritativ ist die Referenz. Ursprünglich wurde diese mal aus einer xmodmap generiert. Soweit ich das sehen kann, deckt die Referenz sich vollständig mit der hochgeströmten xkbmap. Als Referenz für Compose-Sequenzen dienen die Compose-Dateien in https://git.neo-layout.org/neo/neo-layout/src/branch/master/Compose .
Wir haben derzeit kein Tooling, um automatisch Treiber aus der Referenz zu generieren und es arbeitet auch niemand dran.
Ich stimme zu, dass im Repo sehr viel alter Legacy-Müll ist, dem eine größere Aufräumaktion vielleicht ganz gut tun würde.
Das ist leider nicht wirklich maschinenlesbar.
Oder vielleicht doch. Habe hier noch was gefunden: https://git.neo-layout.org/neo/neo-layout/src/branch/master/yaml/parse_neo.py
Scheint zu funktionieren, gibt aber leider ausgerechnet Yaml aus, was auch nicht super zu parsen ist. Aber das könnte man wohl relativ leicht ändern.
Ich frage mich aber, ob die andere Richtung nicht mehr Sinn machen würde.
Damit kann man arbeiten.
Gäbe es denn grundsätzlich Interesse daran?
Da fallen mir auch ein paar Sachen ein:
Die Referenz soll vermutlich auch nicht dafür gedacht sein, maschinenlesbar zu sein, sondern menschenlesbar. Sei es um mal ein Zeichen/Akzent nachzuschlagen oder eines zu suchen. Dafür ist sie vernünftig strukturiert.
Die oben verlinkte xkbmap kann hier eher den maschinenlesbaren Part übernehmen. Zumindest ist es ein gebräuchliches Format. Sollten wir dagegen für ein eventuelles Tooling zur Treibergenerierung ein bestimmtes/anderes Format haben wollen (z.B. JSON), lässt sich dann sicherlich ein Konvertierungsskript bauen, oder wir definieren uns ein eigenes und füllen das manuell, um dieses dann in weiteren Skripts (hast Du da Ideen?) zu verwenden.
Das YAML-Skript sieht mir ein bisschen unverständlich aus, und wie du sagst, YAML ist selbst wiederum etwas schlecht zu parsen. Heutzutage wäre wohl eher JSON (als YAML-Untermenge) das Format der Wahl und hat sich für Datensammlungen durchgesetzt.
Tooling
Die Referenz wird eigentlich nicht mehr angefasst, d.h. Treiber sind abgeschlossen, bis auf Bugfixes. Ich sehe wenig Sinn, da besonders viel Aufwand hineinzustecken in eine Sache, die manuell sehr selten angewendet wird.
Für kbdneo habe ich vor einigen Monaten ein Buildskript generiert, um die Generierung an Windows 10 anzupassen und die verschiedenen Varianten (Neo, Neoqwertz, Bone) unter einen Hut zu bringen. Dieses wird zwar manuell ausgeführt, ist aber nachvollziehbar dokumentiert. Ich denke, darauf kommt es eher an. Wie in #567 zu sehen ist, sind dort die Compose-Kombinationen ein Problem, weil nicht dokumentiert ist, wie diese (und welche) erstmalig zu C-Code generiert wurden und es nicht ohne Weiteres (manuell) reproduzierbar ist.
Ähnliches gilt für NeoVars, während die Linuxtreiber die systemeigenen Compose-Dateien verwenden können. (Für Mac weiß ich’s gerade nicht.)
Also ich finde nicht, dass wir automatisches Bauen und Deployen benötigen – aber dokumentierte und nachvollziehbare Buildschritte.
Aufräumen / weitere Sachen
Das sind gute Punkte. Magst Du die (gemeinsam) in ein eigenes Issue verschieben? Das passt thematisch jetzt nicht direkt zu „Welche Keymap ist die richtige“. Im anderen Issue können wir die dann der Reihe nach angehen und abhaken.
Ich fasse mal den Stand für die angefragten Punkte zusammen:
Compose
Aufräumen
Ein paar Dinge wurden in #576 aufgeräumt. Die legacy-Tools wie Neo1.1 könnten zwar weg, andererseits stören sie auch nicht weiter. Wenn mehr Klärungsbedarf besteht, bitte ein entsprechendes Issue erstellen.