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 »

The divergence of QMK software development can be confusing, but there is a systematic way to find which branch a particular feature or folder is in (instead of manually switch to each branch and manually look for the information). Example: …

Comprehensive search in QMK source in all branches, incl. forks and forks of forks Read more »

The short version: in function rgb_matrix_indicators_kb() in file keymap.c, use function rgb_matrix_set_color(). For example, to set a blue colour on key F7 on a Keychron V5: That is for a V series Keychron keyboard (and presumably for all keyboards in …

Setting RGB colour for individual keys in QMK (per-key RGB colour) Read more »

The short version: Use QMK‘s send_string_with_delay() with binary content (as it is not a real string) encoded in a particular manner to piecemeal execute a macro, housekeeping_task_user() to run a state machine for executing the macro (which can check for …

The basis for a way to cancel QMK macros in progress Read more »

For example, the total number of key actions available to macros defined in Via can be increased from about 150 to use most of the free flash memory, using emulated EEPROM memory (or possibly be limited by the RAM (used …

Via macros (on mechanical keyboards with QMK) are less crippled than expected, e.g., unlimited number of key actions in macros Read more »

dfu-util can be used to both read off and to flash (update) firmware on embedded devices, say for the firmware on a QMK-based keyboard like the Keychron V5 (about 50 KB). But it is very poorly documented. In most cases, the …

Flash utility ‘dfu-util’ gotcha: Always use option ‘-a 0’ Read more »