Keyboard Firmware
Every Parix keyboard ships with open-source firmware, pre-flashed and ready to type — no setup required. Wired boards run QMK; wireless boards run ZMK. Both are fully customisable, and your config is yours to keep: remap any key, build layers, combos, and macros, with no vendor lock-in.
Which firmware does my board run?
| Keyboard | Firmware |
|---|---|
| Totem (wired) | QMK + Vial |
| Totem (wireless) | ZMK |
| Cheapino | QMK + Vial |
| Forager | ZMK |
| Corne MX | ZMK |
| Corne Choc | ZMK |
| Sofle MX | ZMK |
| Sofle Choc | ZMK |
Wired keyboards — QMK + Vial
All Parix wired keyboards run QMK with Vial enabled. Plug in, open the Vial app, and remap keys in real time. No flashing, no code.
Wireless keyboards — ZMK
All Parix wireless keyboards run ZMK with Bluetooth, mouse keys, and ZMK Studio enabled out of the box.
Totem
github.com/dieselsaurav/zmk-config-totem-studio
ZMK 4 (Zephyr 4.1). Miryoku-inspired 38-key layout with home row mods, vim-style navigation, 6 thumb-activated layers, full mouse emulation, 14 combos, and ZMK Studio support. Based on urob's tuning for home row mods and combos.
Corne (MX & Choc)
github.com/dieselsaurav/zmk-for-keyboards
ZMK config for the Corne wireless split, covering both the Corne MX and Corne Choc. Runs on nice!nano v2 with nice!view and OLED display support. ZMK Studio enabled on the left half.
Sofle (MX & Choc)
github.com/dieselsaurav/zmk-for-sofle
ZMK on nice!nano v2, covering both the Sofle MX and Sofle Choc. Miryoku-style layout adapted from the Corne config — QWERTY base with GACS home-row mods, vim navigation, a top number row, 7 layers, and 14 combos. Dual displays (OLED or nice!view) and both rotary encoders supported — left for volume, right for page up/down. ZMK Studio and mouse keys enabled.
Forager
github.com/dieselsaurav/zmk-config-forager
ZMK config for the 34-key Forager. QWERTY base with GACS home-row mods, vim-style navigation, and a urob-inspired setup — positional home-row mods, punctuation mod-morphs, and a smart number layer.
See each repo's README for the full keymap layout, layer maps, combo tables, and build configuration.
Customising your keymap
ZMK Studio (no flashing)
Plug the left half in via USB, open zmk.studio in Chrome, and connect. Remap keys, adjust layers, configure hold-taps — changes apply instantly and persist across reboots. Works over Bluetooth too.
Keymap Editor (visual, via GitHub)
Fork your keyboard's repo, then open Keymap Editor. It connects to your fork, gives you a visual drag-and-drop interface, and commits changes directly to GitHub. The build.yml Action compiles the firmware automatically.
Flashing a custom build
- Fork the repo on GitHub.
-
Edit the
.keymapfile inconfig/. - Push. GitHub Actions builds the firmware. No local toolchain needed.
-
Download the
.uf2files from the Actions tab. -
Flash. Double-press reset on the controller. It mounts as a USB drive. Drag the
.uf2onto it. -
Flash both halves — left and right have separate
.uf2files.
Resources
- ZMK Documentation — keymaps, behaviors, combos, macros
- ZMK Studio — real-time keymap editor for wireless keyboards
- Keymap Editor — visual ZMK keymap editor via GitHub
- Vial — real-time keymap editor for wired keyboards
FAQ
How do I connect my keyboard over Bluetooth?
Power on both halves. Your Parix keyboard runs ZMK and starts advertising over Bluetooth as soon as it's on and not already paired. Open the Bluetooth settings on your computer or phone and select the keyboard to pair. Only the left half connects to your device — the right half links to the left automatically. ZMK keeps multiple device profiles, so you can stay paired to several devices and switch between them using the Bluetooth profile keys in your keymap; check your board's keymap diagram above to see which keys those are. To pair a new device, switch to an empty profile and the keyboard will start advertising again.
How do I turn the keyboard on?
Each half has a power switch located directly below the USB-C port. Flip both halves to the ON position.
How do I charge it?
Turn the keyboard on first, then plug it in via USB-C — it needs to be powered on to charge. Each half has its own battery, so charge both halves when they run low.
Need help? DM us on Instagram (@parix_in).