Dieses Repository beschreibt einen persönlichen MoErgo-Go60-Entwurf, der aktiv weiterentwickelt wird. Layout, Build-Pfad, JSON-Generator und Doku können sich kurzfristig ändern.
Persönliches MoErgo Go60-Layout für:
- deutsches OS-Layout unter Linux
- i3 / Regolith
- Coding, Navigation und Zahleneingabe ohne häufiges Verlassen der Home Row
Das Repo enthält inzwischen zwei technische Zielpfade für dasselbe Layout:
config/go60.keymap+config/go60.confLokaler ZMK-Pfad für den klassischen Firmware-Build. Hier ist das Layout als 4-Layer-Variante umgesetzt: Base, NAV, Numpad, Magic. AltGr läuft über echtenRALTplus Mod-Morphs fürä/ö/ü/ß; zusätzlich erzeugt ein Long-Press (300ms) aufA/O/Udirektä/ö/ü(phone-style).scripts/build_moergo_json.py->moergo-layout.jsonUpload-Pfad für den MoErgo-Web-Editor. Hier wird zusätzlich ein 5. LayerAltGrerzeugt, weil der Editor Custom-Behaviors anders modelliert als die lokale ZMK-Keymap. Dieser Pfad ist aktuell der bevorzugte Weg für Builds mit per-Key-LED-Farben.
Die ergonomische Grundidee bleibt in beiden Pfaden gleich:
- Home-Row-Mods im GACS-Schema
- linke Thumb-Seite für
BkSp,NAV,Numpad,Super - rechte Thumb-Seite für
Space,AltGr,Ctrl,Enter - rechte Hand als Numpad auf eigenem Layer
- Magic-Layer für BT, RGB, Reset und Bootloader
- Touchpads: links Scroll, rechts Cursor
Hinweis – optimiert für Rechtshänder. Inhalts-Cluster (Numpad- Ziffern, NAV-Pfeile, Maus-Cursor) sitzen auf der rechten Hand; Layer-Trigger und Modifier-Halte (NAV, Numpad, Magic, HRM-Mods) sitzen primär auf der linken Hand. Linkshänder müssten das Layout spiegeln (Trigger auf RH, Inhalt auf LH).
Neu in den letzten Commits:
- Umlaut-Long-Press (300ms) auf
A/O/U→ä/ö/ü; Shift bleedet durch →Ä/Ö/Ü. AltGr+a/o/u/s funktioniert weiterhin als Mod-Morph (auf der Tap-Seite verdrahtet).Averliert dabei die HRM-Super-Rolle (Super sitzt dediziert auf LH C2R5). - NAV+AltGr+Pfeil = Window-Focus in i3/Regolith. Inner Mod-Morph
morpht
RALTzuLGUI, sodass Window-Switching einhändig läuft (LH-Daumen NAV + RH-Daumen AltGr + RH-Pfeil). Move bleibtShift-HRM (F) + AltGr + Pfeil→Super+Shift+Pfeilvia Bleed. - LH-Scroll auf 1/4 (vorher 1/2 noch zu schnell).
- Numpad-Trigger umgezogen auf LH T3 (äußere Daumentaste): Hold =
momentary, Doppel-Tap =
tog L_NUMPADan/aus auf derselben Taste. Vorher saß der Trigger auf LH C3R5 (Del-Position), war mit dem Daumen aber mühsam zu erreichen — und Alt am Daumen wurde fast nie genutzt. Die zwei wurden getauscht:Altwohnt jetzt auf C3R5, Numpad auf T3. Del bleibt auf RH C6R4. Math-Trio± · ×blieb auf Numpad-R1 (historischer Workaround der alten Trigger-Position). - NAV-Doppelbelegung: Alt+Pfeil/PgUp/PgDn = Media (Vol±, Prev/ Next, Play/Pause, Mute) per Mod-Morph. Shift+Pfeil (Selektion) und Ctrl+Pfeil (Wortsprung) bleiben Standard. Grüne Media- Tasten auf NAV LH R2 bleiben als direkter Zugriff.
- Multi-Bracket-Tasten im Numpad: RH C2R1/C3R1 senden
(), mit LH-Modifier-Tasten auch[](Shift),{}(Ctrl) und<>(Alt) - Unicode-Math-Symbole auf Numpad LH:
π ∞ ∇ √ Σ ∫ ± · ×per Ctrl+Shift+U (Linux/IBus, funktioniert in GTK-Apps) - Formel-Variablen
X Y Z Tauf Numpad LH - NAV mit Home-Row-Mod-Passthrough:
Ctrl+Pfeilfür Wortsprung,Ctrl+Shift+Pfeilfür Wortauswahl funktioniert unverändert - Print-taugliches SVG-Coloring: Buchstaben, Ziffern, Operatoren, Klammern/Syntax, Separatoren und Action-Tasten jeweils eigene Farbe
- AltGr-Lernlabels auf Base:
ä ö ü ßund{ [ ] } \in der Ecke der jeweiligen Basistaste - RGB-Underglow-Defaults in
config/go60.conf - Python-Generator für MoErgo-JSON-Uploads
Die folgenden SVGs werden aus keymap.yaml per uv run draw generiert und
durch den Pre-Commit-Hook aktuell gehalten.
Standard-Schreibebene. Home-Row-Mods im xACS-Schema: links S=Alt,
D=Ctrl, F=Shift, gespiegelt rechts auf ; L K J plus ;=Super. Die
A-Position trägt kein Super-HRM (Super sitzt dediziert auf LH C2R5),
sondern reagiert auf Long-Press (300ms) → ä. O und U analog für
ö/ü. Tap sendet den Buchstaben; balanced Flavor, 280ms für die HRMs,
300ms für den Umlaut-Long-Press.
Als Lernhilfe tragen viele Tasten zusätzlich das Shift-Zweitzeichen
(z. B. ! " § $ % über 1 2 3 4 5). Umlaute sind auf zwei Wegen
erreichbar: Long-Press auf A/O/U → ä/ö/ü (Shift bleed → Ä/Ö/Ü),
oder AltGr+a/o/u/s → ä/ö/ü/ß (Mod-Morph). ß hat zusätzlich eine
eigene Taste auf RH C6R1.
Daumen links (inside → outside): BkSp (Tap-Dance auf Ctrl+BkSp für
Wortlöschen), NAV (Hold aktiviert NAV-Layer), Numpad (Tap-Dance:
hold = momentary, Doppel-Tap = toggle). Alt sitzt auf LH C3R5
(Bottom-Row, mittlere Position). Daumen rechts
(outside → inside): Ctrl, AltGr, Space. AltGr am rechten Daumen
macht die ganze deutsche AltGr-Ebene ohne Layer-Wechsel erreichbar.
Aktiviert durch Halten des mittleren linken Daumens. Rechte Hand trägt
Pfeile (← ↓ ↑ → auf J K I L-Positionen), Home/End, PgUp/PgDn und
F1…F12. Linke Hand trägt in R2 die Medientasten Prev/Play/Next plus
Vol+/Vol-/Mute.
Wichtig: die Home-Row-Positionen (A S D F) sind auf NAV komplett
transparent. Dadurch greifen die Base-HRMs weiter, und Kombinationen wie
Ctrl+→ (Wortsprung) oder Ctrl+Shift+→ (Wortauswahl) funktionieren,
ohne den NAV-Layer wieder verlassen zu müssen.
Window-Switching in i3/Regolith einhändig: NAV+AltGr+Pfeil →
Super+Pfeil (Focus). Inner Mod-Morph konsumiert RALT und emittiert
LGUI, sodass der Host nur Super+Pfeil sieht. Move = zusätzlich
Shift-HRM (F) halten → Super+Shift+Pfeil via Bleed.
| Operation | Tastenkombi | LH-Finger |
|---|---|---|
| Cursor ← | NAV + J | 1 (Daumen) |
| Selektion ← | NAV + F-Shift + J | 2 (Daumen+Index) |
| Wort-Sprung ← | NAV + D-Ctrl + J | 2 (Daumen+Mid) |
| Wort-Selektion ← | NAV + D + F + J | 3 |
| Window-Focus ← | NAV + AltGr (RH-T2) + J | 1 (Daumen) |
| Window-Move ← | NAV + F-Shift + AltGr + J | 2 (Daumen+Index) |
| Workspace 1..9 | Super (LH C2R5) + Zahl | 1 |
| Window→Workspace N | Super + F-Shift + Zahl | 2 |
| Workspace prev/next | aktuell durch Alt+Pfeil=Media verdeckt | — |
J ist hier die NAV-Pfeil-Position (←). Modifier kommen aus den HRMs
auf LH R3 (F=Shift, D=Ctrl, S=Alt) bzw. dem AltGr am rechten
Daumen. Super liegt dediziert auf LH C2R5 (Bottom-Row, kein HRM).
Home/End sitzen auf den NAV-Positionen H/; als 1-Daumen-Operation;
PgUp/PgDn auf U/O.
Per Hold auf LH T3 (äußere Daumentaste) momentary aktiv, per
Doppel-Tap getoggled; ein zweiter Doppel-Tap auf derselben Taste
schaltet wieder aus (tog L_NUMPAD, kein separater Exit-Key auf
der RH nötig). Del wohnt auf RH C6R4 (wo früher der Num-Toggle saß).
Rechte Hand wird zum klassischen Ziffernblock
mit Mathe-Spalte / * - + ⏎ am Pinky, 0 . , auf der Daumenzeile,
= # auf der linken Index-Spalte.
Linke Hand ist grundsätzlich deaktiviert (kein Buchstabenleckagerisiko), mit gezielten Ausnahmen:
- Multi-Bracket-Mods auf R3:
S=Alt,D=Ctrl,F=Shiftals reine Modifier-Tasten. In Kombination mit RH C2R1/C3R1 ((/)) ergeben sie[](Shift),{}(Ctrl) und<>(Alt). Ein einziges Finger-Paar für alle Klammerarten. - UTF-8 Math-Symbole:
± · ×auf R1 C5/C4/C3 (historisch von R4 nach oben verschoben, als der Numpad-Trigger noch auf C3R5 saß),π ∞ebenfalls auf R1,∇ √ Σ ∫auf R2. Intern Makros, die perCtrl+Shift+U+ Hex +Spacein GTK-Apps (Chrome, gedit, gnome-terminal, …) den Unicode-Codepoint einfügen. Alacritty/kitty/xterm blockieren IBus – dort funktionieren die Makros nicht. - Formel-Variablen
T(R2),Y X(R4) undZ(RH R2). Grau eingefärbt, damit sie visuell nicht mit den blauen Ziffern kollidieren. ^-Passthrough ganz oben links für Potenzen; mit Shift (F-Position) ergibt sich°.
MoErgo-Referenzlayout, aktiviert durch Halten von LH C6R4. Tap alleine
zeigt den RGB-Status. Hier leben Bluetooth-Profilwahl (BT0…BT3,
BT-Clr, BT-ClrAll), RGB-Steuerung (Helligkeit, Farbton, Sättigung,
Geschwindigkeit, Effekt-Toggle), Reset, Bootloader und USB-Output.
layout.mdAktuelle Belegung, Thumb-Konzept, Layer-Übersicht und Unterschiede zwischen lokalem ZMK- und MoErgo-Editor-Pfad.design-decisions.mdWarum das Layout so gebaut ist und warum der Editor-Pfad technisch leicht vom lokalen ZMK-Pfad abweicht.config/README.mdDetails zum lokalen ZMK-Build, zur Firmware-Konfiguration und zur Abgrenzung gegenüber dem JSON-Upload-Workflow.
Die übrigen Markdown-Dateien bleiben als historische Begleitdokumente im Repo, sind aber nicht mehr der primäre Einstieg.
| Pfad | Zweck |
|---|---|
keymap.yaml |
Ergonomischer Layout-Entwurf und SVG-Farbannotation |
config/go60.keymap |
Lokale ZMK-Device-Tree-Keymap |
config/go60.conf |
Kconfig-Optionen, aktuell inkl. RGB-Underglow-Defaults |
scripts/build_moergo_json.py |
Generator für den MoErgo-Web-Editor |
moergo-layout.json |
Generiertes Upload-Artefakt für my.moergo.com/go60 |
example-led-keys-go60.keymap |
Referenzdatei aus der MoErgo-LED-/Editor-Welt |
example-colored-led-keys.json |
Referenz-JSON für farbige Tasten im Editor |
assets/*.svg |
Gerenderte Layer-SVGs aus keymap.yaml |
src/my_split_keyboard/ |
Python-Helper für die SVG-Erzeugung |
uv run drawRegeneriert die SVGs in assets/ aus keymap.yaml.
uv run python scripts/build_moergo_json.pyErzeugt moergo-layout.json. Diese Datei kann in den MoErgo Web-Editor
hochgeladen werden. Der JSON-Weg ist aktuell nötig, wenn Builds die
im Generator definierten per-Key-Farben enthalten sollen.
Der klassische ZMK-Build läuft weiterhin über GitHub Actions auf Basis von
config/. Das resultierende Artifact ist go60.uf2.
Wichtig:
- Der lokale
config/-Pfad bildet das Layout funktional ab. - Der MoErgo-JSON-Pfad bildet zusätzlich editor- und LED-spezifische Details ab.
- Beide Pfade sollen semantisch nah beieinander bleiben, sind aber aktuell nicht byte-identisch.
git config core.hooksPath .githooksDer Hook regeneriert die SVGs automatisch, wenn die Layout-Quellen geändert werden.
MIT, siehe LICENSE.