How modifier layers work

I’m having trouble understanding how the modifier layers work.

How is it any different than pressing ctrl+w as a normal modifier for example? Given that most keyboard shortcuts with modifiers are already mapped (hence the reason for something like “super”) why would I use any of the modifier layers?

I’m clearly missing something here. Can anyone help me understand?

Modifier layers can be used to remap things you otherwise could not remap. For example I use the Shift layer for a few keys, which allows me to have a US international layout, but define a few keys different than the standard shift function of the key on the base layer.

For example I want to have the comma-key on the g-position of a qwerty board. But on the shift layer I want the semicolon on that position.

Another use is to get a degree symbol on a shifted key (the degree symbol is missing the English layout on Windows). That needs a macro for a numpad code (you can use on Windows).

In the same way you could use the Ctrl-layer to remap a symbol to a key, when held with Ctrl. I do not have the need for that, but it is there in case you would want to use the Ctrl-key as a layer key (for some keys) .

Thanks for the detailed and fast response!

But what I still don’t get is how using the shift layer, as in holding the shift key and typing a “<” rather than the comma. It seems like it’s just a regular use of shift?

But you show that using the shift layer you can actually completely remap a key, as in from “,” to “;”.

Maybe I’m not understanding how to activate the shift layer? Is it just holding shift?


When you hold Shift and press another key, the firmware checks if you have defined that key on the Shift layer. If yes, then it does whatever you have assigned to that key on the Shift layer. If there is no assignment on the Shift layer, then it falls back to normal shift handling.

1 Like

So if I want to type a “!” on a US QWERTY keymap and I hold shift+1, how does the firmware distinguish between a regular shift and the shift layer? Sorry if I’m being dense here lol

If there is nothing configured on the shift layer for that key, it does the normal shift. If something is configured for that key on the shift layer, it will do whatever the configuration says.

To give you a detailed example:

Let’s say you did not configure anything on the shift layer for the 1! key, but you configured the 2@ key on the shift layer to send the non-shifted key ;:. When you type shift+1, you’ll get an exclamation mark ! and when you type shift+2, you’ll get a semicolon ;

Hope that example makes it clearer.

1 Like

In addition to Max example. There are no two distinct Shift layers. The UHK Shift layer (when introduced in Agent) will override the shifted function for only the keys which have a definition on the UHK shift layer, see me example above where I have only 4 keys redefined (the 5th key is just a an empty macro doing nothing, as a reminder I do not want to use that key in any mapping).

The UHK Ctrl layer will in similar way allow you to assign any key, macro, mouse-action and so on to a Ctrl-held key. That is something which would no be possible otherwise.