nftable-migration
1#+title: ZSA Moonlander QMK Config
2
3Custom QMK firmware for the ZSA Moonlander split keyboard (72 keys, STM32 MCU, RGB backlighting).
4
5* Features
6
7- Layouts: Bépo (primary), ErgoL, QWERTY
8- Home row mods (280ms tapping term), smart numword layer
9- Combos, key overrides, leader key, tap dance
10- French accents (US International layout), repeat key
11
12* Build & Flash
13
14#+begin_src bash
15./go.sh build # Build firmware (output: build/qmk_firmware/.build/)
16./go.sh flash # Build and flash (press reset button when prompted)
17./go.sh update # Update QMK submodules
18./go.sh clean # Clean build artifacts
19#+end_src
20
21* Keymap Visualization
22
23[[file:../moonlander.svg]]
24
25*Note*: Combo definitions are automatically parsed from =keymap.c= during visualization generation via =parse-combos.sh=.
26
27* Layers
28
29| Layer | Name | Description |
30|-------+------------+------------------------------------------------------------------|
31| L0 | Bépo | Primary French layout, home row mods, numword activation |
32| L1 | ErgoL | Alternative French layout |
33| L2 | QWERTY | Standard layout with home row mods |
34| L3 | Symbols | Programming symbols, brackets, operators |
35| L4 | Numbers | Numpad layout (auto-disable after 5s) |
36| L5 | Navigation | Arrows, page nav, media controls |
37| L6 | Mouse | Mouse emulation |
38| L7 | Modifiers | Additional modifiers and function keys |
39
40*Home row mods (Bépo)*: Left: A(GUI) U(Alt) I(Shift) E(Ctrl) ,(Hyper) | Right: C(Hyper) T(Ctrl) S(Shift) R(Alt) N(GUI)
41
42* Configuration
43
44** Timing
45- Tapping: 280ms | Quick tap: 100ms | Flow: 150ms | Combo: 40ms | Numword timeout: 5s
46
47** Combos & Overrides
48- Layer switching, Escape, special chars (|@#$/\&-_=), brackets
49- Bépo overrides: Shift+^=!, Shift+.=:, Shift+,=;, Shift+numbers, RAlt+B=|, RAlt+Space=_
50
51** French Accents (US International)
52é è ê à â ù û î ô ë ï ç € (uppercase variants supported)
53
54** QMK Features
55*Enabled*: Combos, key overrides, leader key, repeat key, tap dance, layer lock
56*Disabled*: Audio, caps word, auto shift, console, most RGB effects (size optimization)
57
58* Usage
59
60- *Layout switching*: Bépo (Nav+Shift), ErgoL (Num+Sym), QWERTY (Del+RAlt)
61- *Numword*: Hold Space on Bépo layer (auto-disable after 5s)
62- *Leader*: Combo D+F on QWERTY
63- *Mouse toggle*: Combo Q+R
64
65* Development
66
67Files: =config/{config.h, keymap.c, layermodes.{c,h}, rules.mk}=, =go.sh=
68
69* Inspirations and References
70
71- [[https://docs.qmk.fm/][QMK Documentation]]
72- [[https://configure.zsa.io/][ZSA Oryx Configurator]]
73- [[https://github.com/manna-harbour/miryoku][Miryoku layout]]
74- [[https://sunaku.github.io/home-row-mods.html][Home row mods guide]]
75- [[https://bepo.fr][Bépo keyboard layout]]
76- [[https://ergol.org][ErgoL keyboard layout]]