Bind a Hyper/Meh key with Keychron Launcher

05 Sep 2024 in Odds and Ends

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))