Getting the ARM toolchain to work on Ubuntu 19.04 and later (including for...
The short version is: Download the tar ball from arm.com, extract, add the /bin folder in the extracted to the path, and make GDB work by adding symbolic links in /usr/lib/x86_64-linux-gnu for the...
View ArticleBlues typing out fixed texts on both QMK and Arduino Leonardo-based macro...
The short version is that a 17 ms delay between each key action (press or release, normal key or modifier key) for an Arduino-based keyboard will solve most problems. At this point, there isn’t any...
View ArticlePS/2 support on modern USB keyboards
The short version: Two external pull-up resistors of 10 kΩ on the PS/2 DATA and CLK signal lines (corresponding to USB signal lines D- and D+, respectively) are sufficient to interface to a...
View ArticleGotcha using CAN 2 on ARM microcontrollers (e.g., STM32F415 on 1Bitsy)
The short version: The CAN bus 2 channel on ARM microcontrollers only works if CAN 1 is also set up… That is, CAN 2 can not be set up independently; for it to work at all, the other CAN channel, CAN 1,...
View ArticleFlash utility ‘dfu-util’ gotcha: Always use option ‘-a 0’
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...
View ArticleVia macros (on mechanical keyboards with QMK) are less crippled than...
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...
View ArticleThe basis for a way to cancel QMK macros in progress
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...
View ArticleSetting RGB colour for individual keys in QMK (per-key RGB colour)
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: rgb_matrix_set_color(7,...
View ArticleComprehensive search in QMK source in all branches, incl. forks and forks of...
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...
View ArticleCustomising the ZMK-based Keychron B6 Pro keyboard without the Via clone
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...
View ArticleOvercoming limitations for macros on Keychron keyboards
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,...
View ArticleThe basis for cancelling Via macros in progress and for making Via macros repeat
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...
View ArticleThe battery state of a wireless Keychron QMK-based keyboard can be displayed...
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....
View ArticleGet a list of one’s own comments on GitHub
Problem: Keeping track of your comments on GitHub, especially the most recent ones. A solution In the search bar at the top right, with “Type / to search”, paste the following in and press Enter:...
View ArticleHello, World! for ZMK, the latest version
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...
View ArticleCompiling and flashing firmware for the Keychron V6 Ultra 8K, incl. setting...
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: west build -p -b keychron --...
View ArticleFully automated setup of multiple QMK projects from scratch, incl. forks and...
The short version: … at scale: Multiple types (QMK, ZMK, ), different forks, different branches, different versions Convenient development … And yes, it takes up more disk space and initial bandwidth...
View ArticleThe ZMK-based Keychron keyboards, for example, V6 Ultra 8K, work with Via!
The short version: By changing the USB product ID in a JSON file for a similar keyboard, to that, for example, of a Keychron V6 Ultra 8K ‘ISO‘, it is possible to change keymappings, record macros, and...
View Article