This repository contains tools to convert ZSA Oryx source code to firmware compatible with the OLKB Planck Rev 6 (and 6.1) keyboard, with full Vial support.
The OLKB Planck Rev 6 uses a "folded" electrical matrix (8 rows x 6 columns) which is fundamentally different from the visual 4x12 grid layout. ZSA Oryx exports code assuming a linear 4x12 layout, which causes keys to be scrambled when flashed directly to an OLKB board. Additionally, standard ZSA exports lack the necessary configuration for Vial (dynamic remapping).
The script scripts/oryx_to_olkb.py automatically:
- Transposes the Matrix: Splits the 4x12 visual grid into two 4x6 halves and maps them to the correct Planck Rev 6 matrix rows.
- Preserves Logic: Retains your macros, tap dances, and custom keycodes from the Oryx export.
- Enables Vial: Generates
rules.mkandconfig.hwith the required settings (VIAL_ENABLE,VIAL_KEYBOARD_UID, unlock combos). - Fixes Conflicts:
- Disables ZSA's
matrix_scan_userusing#if 0 ... #endifto avoid muse/audio conflicts. - Disables conflicting features (
LTO,COMBO,KEY_OVERRIDE) for stable compilation.
- Disables ZSA's
- Generates Vial Definition: Creates a
vial.jsonfile for manual sideloading if auto-detection fails.
-
Export from Oryx: Download the source code for your layout from ZSA Oryx.
-
Place Source: Copy the
keymap.cfile from the download into thezsa_oryx_source/folder. -
Run Script:
python3 scripts/oryx_to_olkb.py
-
Deploy: The script generates 4 files in
olkb_firmware/:keymap.crules.mkconfig.hvial.json
Copy the build files to your QMK keymap folder:
cp olkb_firmware/keymap.c olkb_firmware/rules.mk olkb_firmware/config.h qmk_firmware/keyboards/planck/keymaps/vial/
-
Compile:
qmk compile -kb planck/rev6 -km vial
Because this uses a custom VIAL_KEYBOARD_UID, the Vial app might not automatically download the layout definition.
- Open the Vial desktop app.
- Go to File > Sideload Keyboard JSON....
- Select the
vial.jsongenerated by the script.
If behavior is inconsistent after flashing:
- Unplug the keyboard.
- Hold Space + Backspace.
- Plug the keyboard in while holding.
- Wait ~5 seconds, then release.
This project uses QMK tap dance from your converted keymap (TAP_DANCE_ENABLE = yes).
If you later decide to use Vial's dynamic tap dances, you'll need a different approach because QMK introspection expects tap_dance_actions to be defined.