A Detailed Overview of QMK, VIA, and Vial Visual Configurators for Mechanical Keyboards
An overview of the visual tools available for mapping key configurations on custom made mechanical keyboards.
QMK is one of the most common default firmware that come preinstalled with custom keyboards like the 40% ortholinear Planck.
The high-level workflow for updating the QMK firmware is:
- Modify your keymap code within a QMK build environment
- Generate the firmware in .hex/.bin file
- compile it with QMK, or
- use something like QMK Configurator
- Flash/reflash the generated
.binfile to the keyboard with the QMK Toolbox
Since setting up the QMK build environment is non-trivial, the QMK Configurator can make the process of generating the firmware easier.
The QMK Configurator doesn’t support all the QMK features (eg. Tap Dance). Per the documentatio: “Features that require adding functions to the keymap.c file, such as Tap Dance or Unicode, can not be compiled in Configurator at all”.
QMK Setup Steps
- Go to https://config.qmk.fm/
- Select your keyboard
- In my case
- In my case
- Select the physical layout of the keyboard
- In my case the default
- In my case the default
- Give the keymap a name
- Create the keymap
- or configure manually by drag-and-drop, clicking or tapping keys directly.
- Compile from within the configurator.
- This takes some time (1-2 minutes), and for that reason, local compilation is preferred to speed things up when doing multiple tests.
- Generated firmware to flash the keyboard
- Source code to do more edits on your local QMK environment
- Keymap as a
.jsonfile so you can reimport it on the QMK configurator at a later time and do more edits. (This is not the file you flash on the keyboard)
The nice thing about VIA is that it doesn’t require to repeatedly flash your keyboard to update the layout. This means changing the keymap of the keyboard can be done without needing to reflash firmware.
And via comes with a nice VIA Configurator to visually program the keyboard and load the configuration on-the-fly.
VIA looks awesome but according to QMK’s collaborator Keebio, VIA comes with certain limitations: “Do note that not all features of QMK are supported by the VIA Configurator, so if you want to use more advanced features of QMK like Tap Dance, then you’ll need to set up a QMK build environment. By default on most VIA-supported keyboards, there is a limit of 4 layers. The ability to change rotary encoder keycodes is also not currently present in VIA.”
Another downside of VIA is that it is not opensource. For that last reason, some people look into other options (like Vial).
On the other hand, VIA has a keyboard testing tool with visual and sound indicators. Helps make sure your keyboard and all switches are working as expected.
Via Setup Steps
- Confirm your keyboard is in the supported list
- Download VIA firmware for your keyboard
- Reset and flash your keyboard (you only need to do this one time) (?using QMK Toolbox to flash it to the keyboard ?)
- Use the VIA desktop app to make changes to the keymap. Changes in the app instantly update the keyboard without the need for compiling or flashing.
Vial is another visual configurator that doesn’t require to flash the keyboard. It is open source, which is great, and allows the configuration to be stored in the keyboard without merging to the repo. Again this is great to speed things up, especially when (getting started with programmable keyboards and) testing new configurations.
Per Vial site “Vial is decentralized: with Vial you do not have to submit your keyboard as a pull-request to any third-party repositories before it can be used in the GUI; instead, the keymap JSON definition is stored within the keyboard firmware and is retrieved at runtime.”
According to their site “Vial is an open-source cross-platform […] GUI and a QMK fork for configuring your keyboard in real time.” Unlike VIA, Vial is open source.
Vial also seems to suffer from the same size limitation as VIA and [limit the number of layers to 4 or less](https://get.vial.today/docs/firmware-size.html#reducing-number-of-dynamic-keymap-layers.
Vial (and VIA) seems like a good option for quickly testing layouts, but complex setups (eg. adding support for multiple alternative layouts like QWERTY+Dvorak+Coleman) might require going back to QMK directly.
Vial Setup Steps
- Get the firmware
- Use QMK Toolbox to flash it to the keyboard
- Vial application will auto-detect the board when it’s plugged in?
Comparison & Final thoughts
|Works without repeated flashing||❌||✅||✅|
|Works without compilation||❌||✅||✅|
|Supports advanced features (eg. Tap Dance)||❌||❌||✅|
I’d advice to use VIA and Vial whenever possible and only use QMC if you need more than 4 layers.