Bind a Hyper/Meh key with Keychron Launcher
I've been using a Keychron Q1 HE this week instead of my trusty Ergodox EZ as I've been travelling.
One of the biggest issues I had is that none of my keyboard shortcuts were working as I didn't have a hyper
key bound. I could have used something like Karabiner to rebind keys, but I knew I could do it at the keyboard level.
It took me far too long to figure out, so I'm writing it down for future me.
Configuring Hyper/Meh keys
First of all, VIA App doesn't work for the Q1 HE. You have to use the Keychron configuration UI at https://www.launcher.keychron.com/.
I learned about the Any
key definition from this useful Reddit comment. On the keymap screen, select Custom
then Any
. It will show a text input where you should put the keys to send.
Be aware - the key that you're binding will change as you type on the keyboard. After entering the keys, click on the key that you want to bind before pressing Enter.
To create a Hyper
(Left Control + Shift + Alt + GUI) key, enter HYPR(KC_NO)
. To create a Meh
(Left Control + Shift + Alt) key, enter MEH(KC_NO)
.
The GUI
key is cmd
on MacOS, and the Windows key on Windows.
The KC_NO
parameter tells QMK not to send any additional keycodes with the modifiers. This allows you to press other keys on the keyboard.
Personally, I like to define a LCAG(KC_NO)
(Left Control + Alt + GUI) key. This means I can have a single key as my keyboard trigger, and double the number of available shortcuts by additionally pressing Shift
.
Learn more about QMK
The full list of modifier keys is available in the QMK docs.
I've used prebuilt modifiers such as HYPR
and LCAG
, but you can also nest them to build composite modifiers. e.g. Send ctrl+alt
with LCTL(LALT(KC_NO))
. You can change KC_NO
for a key to send a full key combination, e.g. ctrl+alt+delete
with LCTL(LALT(KC_DEL))