Custom layout for a 40% (4x12 ortholinear) Vial keyboard, designed for a bilingual developer (Spanish es-419 host layout, code-heavy work, Linux Arch/Qtile + Windows).
layout/keyzboard.vil— the generated layout. Load this into Vial.currentLayout.vil— untouched factory snapshot (your safety net).tools/generate_layout.py— source of truth. Layer maps and the macro catalog live here; the.viland docs are generated output.docs/layout.md— visual layer maps (characters shown = es-419 output).docs/macros.md— macro catalog, encoding rules, known limitations.
- Edit
tools/generate_layout.py(layers and/orMACROS). - Regenerate and validate:
python3 tools/generate_layout.py --check # validate only python3 tools/generate_layout.py # write layout/ + docs/ - Open Vial (desktop app or Chrome, on Windows — WSL2 cannot see HID devices).
File > Load saved layout→layout/keyzboard.vil. Changes apply live, no flashing.- Test, iterate. Keep the factory file untouched as recovery.
The layout loaded in the Vial editor.
The 4x12 ortholinear board running KeyzBoard.
Screenshots pending: drop
docs/img/vial-layers.png(Vial editor with the layers visible) anddocs/img/keyboard.jpg(a photo of the actual board) intodocs/img/to complete this section.
| Layer | Trigger | Purpose |
|---|---|---|
| 0 | — | QWERTY + home-row mods; ´/ñ on thumb columns |
| 1 | hold Space | Numpad digits + full code symbols (es-419 encoded) |
| 2 | hold bottom key / Enter tap-hold | git + AI macros, snippets, OS keys |
| 3 | hold bottom-left | F-keys, nav, clipboard, mouse |
| 4 | hold bottom key | media, brightness, RGB, TO(n), QK_BOOT corner |
Macros are encoded scancode-by-scancode for the es-419 host layout: Vial
macro text otherwise assumes US and would type wrong punctuation. See
docs/macros.md for the details and the </> ANSI limitation.

