Show me your favorite QMK hacks!


I’ve just finished fixing a few issues with my Atreus firmware and realized (again) how wonderful QMK really is! (that and how tricky it can be to relearn a layout…)

What are your favorite hacks/features in your layouts, anything you’d like to share?


QMK is the only thing that has made it possible for me to use 40-45% layouts like the Pearl.

With QMK, I have my keymaps set up so that the key to the left of the ‘A’ key is always a combination: if I tap it, I get Esc, but if I hold it, it becomes Ctrl (well, technically, LCtrl).

Similarly, if I tap the right spacebar, it gives me a normal space character, but if I hold it, the entire keyboard switches to layer 1 (where my numbers and my most-commonly-used symbols are).

Tapping Enter gets me enter, like you’d expect, but holding it switches to layer 2 (pretty much just a shifted layer 1 - for example, on layer 1, q becomes 1, but on layer 2, q is !). This makes it a lot easier to type—instead of having to hold down space, then shift, then the key I want, it’s just hold Enter + key.

I’m of two minds about this; I love being able to actually type with surprisingly little slowdown on the Pearl, but it also means that I’m training myself to use a layout that is pretty much completely unique, and it makes switching back and forth between non-QMK keyboards (like my Models M) and my QMK keyboards a pain in the ass. However, getting used to this layout on the Pearl, and then translating it as closely as I could over to the Iris, is what made it possible for me to actually start using the Iris.

If you’re curious, you can see my Pearl keymap on GitHub.


Oh thanks! I’ll have a look. It is always interesting to see how others use the constraints of a small keyboard to make awesome layouts. :slightly_smiling_face:


This sounds familiar :eyes:


I have a cute trick I love on my Atreus.

Single tap: (
Double tap: [
Triple tap: {

I don’t code much except keymaps so I rarely use these symbols, but having them on shift+RAlt+0 is way awkward.

Also doubletapping PageDn is End, doubletapping PageUp is Home. Those are pretty great too.


Ha! I couldn’t remember exactly where I stole that from at first, but I’m pretty sure I copied it from your Pearl keymap :slight_smile:


I use a similar layer scheme on my minivans and amj40s as well. Plus enough other people have forked off of those now that it is totally possible you pulled it from someone else who pulled it from me. But yeah, my pearl layout is probably the most likely :grin:


I … have a lot.

  • RGB Underglow as layer indication
  • RGB lights on thumb clusters as modifier indicators (eg, shift/ctr/alt/gui)
  • The RGB underglow “twinkles” as I type
  • Diablo 3 hack/cheat (uses tap dance to set, but will spam 1/2/3/4 at an interval determined by the tap dance, but only on the D3 layer)
  • My salt macros for Overwatch :smiley:
  • Audio clicks! Somebody on reddit wrote the code, but I added it to the core code as a subfeature
  • EEPROM settings for my userspace code
  • “Secrets” macros
  • My KC_MAKE command, which is a universal make command that sends the proper string to make the firmware, based on the keyboard that sent the command.
  • The “Layout Wrappers” so I can use predefined blocks of keycodes, so I can use the same layout on every board, and keep it in sync by editing a single file

Basically, if it’s in my userspace, it’s pretty awesome!

But the best hack I use?
I use QK DFU (a fork of LUFA DFU) on my Pro Micros. No more 8 second window. No more risk of bricking my board. And it has audio and visual feedback for the flashing.


I’ve got one I’m working on but haven’t perfected yet.

I still play Quake II pretty regularly, but the game came out before alternate layouts were really a thing, and I switched to Dvorak two years ago. Playing is fine, but using the in-game chat and console, which are hard-locked to US QWERTY (regardless of OS settings) is super awkward.

I’m trying to solve this by adding a pair of “overlay layers” used in conjunction with my base layers (Layer 0 QWERTY and Layer 1 Dvorak). I change the keyboard’s “mode” by going to my System layer, and tapping the 3 key. This sets my base layer to QWERTY (movement keys are ESDF) and enables an overlay layer that changes the operation of my Fn key, Esc and Enter.

In the game, I have Enter bound to in-game text chat. When my overlay layer is enabled, tapping Enter runs a macro that sends an Enter keycode (bringing up in-game chat), and enables my Dvorak layer and the overlay that goes with it. Hitting Enter again sends the message with KC_ENTER and disables both the Dvorak layer and its overlay, so I can jump right back to playing. Escape cancels the message send and disables the layers.

I still haven’t perfected handling the in-game console. I can bring it up fine, but every time I hit Enter with the console open, my keyboard switches from QWERTY to Dvorak and back.

I haven’t pushed my most-recent changes, but my keymap lives here:


My favorite QMK Hack is “Space FN” (tapping = space, holding fn layer) with hjkl arrow keys on the fn layer. Staying on the home row and able to use the arrow keys is so convenient.


Toxic. No endorsement for you


lol, that’s fine. I’m a support main, so lots of endorsements usually anyways, :smiley:


Where do I find more information about this DFU?


And if you have Pro Micros that you want to flash:


This is awesome! I had no idea. Thanks, @drashna


You’re very welcome!

I actually really dug into this, because I run … super close to capacity on a Pro Micro. And Caterina (the default bootloader) is SUPER EASY to brick. Unlike DFU or Halfkay (Teensy’s), it lets you flash a firmware that is too large … bricking the controller.

Additionally, the 8 second wait time is … I’ve had issues with it due to some odd firmware issues (that I caused).

DFU is just more graceful, and works better, in general.

Also, I’ve been considering picking up a bunch of PMs, flashing them, and then reselling them. Because not everyone has an ISP flasher, or is up to ISP flashing the controllers.


I have less than a kilobyte free on mine, which I know in MCU terms is SO MUCH SPACE but every time I see that number getting closer to the capacity I start to sweat a little.


KB? I’m jealous!

This is from my last iris compile:

Checking file size of iris_rev2_drashna.hex                                                         [OK]
 * File size is fine - 28538/28672

And thats only because I have a bunch of stuff turned off, and some compiler optimization flags enabled!

So if I enable the wrong thing, and don’t pay attention closely, it’s very easy to brick my board!


So my favorite feature of QMK is the support for tap/hold functionality.

When I am working (on Windows) I typically use multiple desktops feature, and will have one for Email and IM’s, one for whatever environment I am remoting into, and one for Visual Studio + references. Under windows moving between the desktops is CTRL+WIN+LEFT/RIGHT.

With QMK I am able to setup my ALT keys to function as desktop switching short cuts when tapped, and ALT when held. LALT does the CTRL+WIN+LEFT combo and RALT does the CTRL+WIN+RIGHT combo.

This makes flipping between my desktops super easy, and is the main reason I now try to avoid any board that doesn’t have QMK support (I swapped out the Leeku PCB’s in two of my LZ customs for QMK compatible boards to get around this problem).

Unfortunately this particular hack is not supported by MOD TAP, so I have some old school macro code to support it all (that honestly I don’t understand), but it all works so I have it on all of my boards - WhiteFox, Clueboard, LZ St (with clueboard pcb), LZ CLSm (with KBD75 pcb) and CA66.