Why don't you just use VIA to remap caps lock to Hyper?
Keychron mechanical keyboards unofficial support
Facebook : https://www.facebook.com/groups/Keychronlinux
I use the same laptop with both an external keyboard and the built-in one - Karabiner takes care of both simultaneously.
I fail to see the relevance. VIA was specifically made to remap QMK firmware based keyboards. The configuration is stored on the keyboard itself, not in your OS. Doesn't matter what device you plug the keyboard into, the keys will always perform the same mapped function.
You can configure it either through https://usevia.app (you need a WebHID capable browser for this), or through their app.
command key = windows key = operating system key = super key
option = alt
function = momentary layer (M0)
PS: The Keychron Q series, the Q stands for QMK, and they are all VIA compatible as well.
Now tell me how VIA will reconfigure the built-in keyboard of my MacBook? 😀
Here, I'll quote your post:
Q3 firmware update broke Karabiner Elements Keyboard: Keychron Q3 ISO KNOB I had a working system with Karabiner Elements, I had mapped caps lock to be a hyper-key on macOS. Everything worked perfectly. Then I was stupid and updated to the latest firmware on the keyboard to 1.0.5 because it's the new shiny.
My solution to use VIA to remap pertains to your Keychron Q3 ISO.
To add: every QMK/VIA capable keyboard has its own on board memory that you can configure INDIVIDUALLY and INDEPENDENTLY of the device it is connected to. If you have a Q3, doesn't matter what device you connect it to, if you had mapped the key that has a keycap with caps lock printed on it to Hyper, it will always act as hyper/Ctrl depending on the OS of the device you are connecting it to.
Solved it myself:
The new firmware reports the keyboard as TWO different devices, both with the exact same Vendor ID and Product ID
One just looks like a mouse+keyboard to the OS and one is a keyboard. The mouse+kb one was the only one enabled in Karabiner.
Karabiner Settings -> Devices -> tick "Modify events" on both and now it works.