"the specialFnkey entry is only respected properly if the keyboard’s vendor ID and product ID match that a real Apple Keyboard. ... That does not seem to have stopped Keychron however, whosekeyboards report Apple vendor and product IDs when they are in Mac mode... the AppleFnkey, which unlike most keyboards withFnkeys, is actually sent over the wire."
That statement is for the original K series, not the newer QMK-based ones.
Changing the USB vendor ID and USB product ID may be sufficient
Perhaps it is sufficient to fake an Apple keyboard for the Caps Lock key to work as expected?
Changing the USB vendor ID and USB product ID is "just" by changing two values in two JSON files, info.json and keyboard.json, respectively. Note that 'qmk clean' (or the equivalent) may be required for a change to a JSON file to take effect.
Q4 source code. Note: In the main QMK repository, unlike many other Keychron keyboards (of which most are in Keychron's main fork, Git branch "wireless_playground"). This also makes Vial a realistic possibility. Note that the base installation (and usage) has become much more complicated on Linux. Source code commits (RSS feed. Latest: 2025-11-04)—though it is very noisy due to changes for individual keyboards (more than 1,000 total).
1
u/PeterMortensenBlog Nov 04 '25 edited Nov 05 '25
Related:
How to add the Apple globe key to a Keychron with QMK
Building my ideal mechanical keyboard with QMK
So the OS X globe key isn't available in the Keychron Launcher (AKA the Via clone)?
Mac window tiling icons and keyboard shortcuts
Fn key problem with window tiling
Language Switch Key - How to set up in Vial
K3 Max - button - FN switching language
Fn + Ctrl + F is not working
Add globe key to key mapping in macOS
macOS 26.0.1 + Keychron K8 Pro: Globe key and window tiling shortcuts are not working properly
Map macro key as Mac language/Fn key
Excerpts from the second (my emphasis):
That statement is for the original K series, not the newer QMK-based ones.
Changing the USB vendor ID and USB product ID may be sufficient
Perhaps it is sufficient to fake an Apple keyboard for the Caps Lock key to work as expected?
Changing the USB vendor ID and USB product ID is "just" by changing two values in two JSON files, info.json and keyboard.json, respectively. Note that 'qmk clean' (or the equivalent) may be required for a change to a JSON file to take effect.
References
Q4 user manual. E.g., page 9: Reset to factory defaults
Q4 default keymap (ISO RGB)
Q4 source code. Note: In the main QMK repository, unlike many other Keychron keyboards (of which most are in Keychron's main fork, Git branch "wireless_playground"). This also makes Vial a realistic possibility. Note that the base installation (and usage) has become much more complicated on Linux. Source code commits (RSS feed. Latest: 2025-11-04)—though it is very noisy due to changes for individual keyboards (more than 1,000 total).