=================
== Claus' Blog ==
=================
Made with Hugo and ❤️

Keychron K8 Pro with vial-qmk support

#keychron #keyboard #qmk #vial #github #bluetooth

A year ago I bought Keychron K8 Pro (RGB/ISO/DE). At that point I had zero experience with Keychron or with QMK [1]. QMK (Quantum Mechanical Keyboard) firmware is an open-source firmware for keyboards. It allows users to customize keymaps, macros, and various keyboard functionalities to suit their needs. QMK supports a wide range of keyboards and provides powerful features for advanced users. VIA [2] is a graphical interface for QMK firmware that allows users to easily configure and customize their keyboards without needing to recompile the firmware. It provides a user-friendly way to manage keymaps, macros, and other settings in real-time.

But in my oppinion the real power of QMK unleashes if you write your customizations directly with QMK and compile your firmware on your own, or you have a vial-qmk firmware. What, Vial? No typo. Vial [3] has even more possibilities compared to VIA and a good UI for making changes on the fly.

But here is the problem: All wireless models from Keychron are not supported by the recent qmk firmware and thus not supported by Vial either. I spent a lot of time trying to merge the Keychron K8 Pro source with the qmk code, but I had no luck. Same for the Vial source code.

Luckily a developer named adophoxia [4] made some changes to the vial-qmk source code which allows to use Bluetooth and Vial. Based on that code I added support for the K8 Pro (RGB/ISO/DE). I think you can easily add support for other K Pro models based on that branch.

One note at that point: The code of that branch is 8 months old. But qmk and vial were so stable at that time, i didn’t have any problems. But new features are not working of course. And I was not able to merge the bluetooth branch with the most recent qmk/vial code… again 😢

Steps to compile the firmare for the K8 Pro

I forked the code from adophoxia and only fetched the bluetooth branch [5]. You can find the original link in the Link section at the end.

I assume you are using an Ubuntu 24.x operating system. To compile the default vial firmware, follow these steps:

1sudo apt install -y python3-pip pipx
2pipx install qmk
3cd ~/git
4git clone https://github.com/cloonix/vial-qmk.git
5cd vial-qmk
6git checkout bluetooth
7export PATH=$PATH:/home/user/.local/bin # qmk binary
8qmk setup
9make keychron/k8_pro/iso/rgb:vial

If you want to start with my personal build, which is definitely a good blueprint, you can clone and compile my custom keymap:

1cd ~/git
2git clone https://github.com/cloonix/vial-qmk-keymap.git
3cd keyboards/keychron/k8_pro/iso/rgb/keymaps
4ln -s ~/git/vial-qmk-keymap cloonix
5cd ~/git/vial-qmk
6make keychron/k8_pro/iso/rgb:cloonix

The resulting firmware (e.g. keychron_k8_pro_iso_rgb_vial.bin) you usually flash with the QMK Toolbox [6]

Conclusion

If you are using a Keychron Pro or Max model, you may encounter difficulties when trying to use Vial as a configuration tool. This is because the QMK source code currently does not support Bluetooth for Keychron keyboards, which means there is no Vial support either. However, with my code fork (with bluetooth support) and added support for the K8 Pro ISO keymap, you can adapt it to your Pro model.

[1] https://qmk.fm/
[2] https://www.caniusevia.com/
[3] https://get.vial.today/
[4] https://github.com/adophoxia
[5] https://github.com/adophoxia/vial-qmk/tree/keychron-bluetooth-PR
[6] https://github.com/qmk/qmk_toolbox