The short version: ZMK must be set up for v0.3, not the latest version (as of 2026-06-22), otherwise the result is a compile error. The command line for compiling is: Introduction Keychron released the source code for V6 Ultra 8K on 2026-05-23 …

Compiling and flashing firmware for the Keychron V6 Ultra 8K, incl. setting up a local ZMK environment from scratch Read more »

The short version: A few lines of Python code using the Matplotlib library will convert between HSV and RGB colour values. An online tool is not required. For example, the open source keyboard firmware QMK tends to use HSV values …

Converting to and from RGB and HSV colour values Read more »

The short version: After setting up ZMK, for example, with the completely linear pastable command lines provided below, use “west build -b planck//zmk” instead of “west build -b planck_rev6” to build the sample keyboard firmware (to test that building actually …

Hello, World! for ZMK, the latest version Read more »

Today, I discovered that mouse actions in Via macros are actually supported! But a bug in Via’s GUI makes it impossible to enter them… So how is it possible? By using the Via clone (but only if using a Keychron …

Mouse actions are actually supported in Via macros, just not in Via’s GUI Read more »

The short version: It is possible to change the number of Via and Vial macros and change the space for them to be essentially unlimited. Unfortunately, there are many different ways of achieving it, depending on the particular keyboard, the …

Overcoming limitations for macros on Keychron keyboards Read more »

This was written as it happened (though not necessarily in the same order) when I was new to ZMK, on day 1 of getting the Keychron B6 Pro. Some pros: Independence of a web service. More permanent configuration of the …

Customising the ZMK-based Keychron B6 Pro keyboard without the Via clone Read more »

The short version: A wireless QMK-based Keychron keyboard can provide the information about the battery state, e.g. “81%”, to the operating system, just like, for example, a wireless computer mouse. Though the operating system may have to be configured for …

The battery state of a wireless Keychron QMK-based keyboard can be displayed in the operating system Read more »

The idea is to capture the Via macro execution in function dynamic_keymap_macro_send() (in file quantum/dynamic_keymap.c) and instead feed the information into an existing QMK macro engine that has cancelling macros and repeating macros as features. Introduction It is relatively straightforward …

The basis for cancelling Via macros in progress and for making Via macros repeat Read more »

This is mostly to have a page where the Keychron keyboard model numbers can be very quickly found with a straight text search, no matter the notation, for example, “V6C3” vs. “V6-C3”. Encoding The model number’s second-last position (only K8 …

Product numbers for Keychron keyboards, e.g., V6C3 for V6 with tactile (brown) switches Read more »