Can you map Shift keys?

I’ve had my keyboard for a couple of days now and have moved and remapped the thumb keys to how I like them.

Forgive me if this is a dumb question,but how do I map shift key values?


1 Like

By “shift key values”, do you mean what a key sends when pressed with shift? If so, there unfortunately isn’t a simple way, as the interpretation of what shift + key means is up to the operating system (that as, shift+a doesn’t send “A”, it sends “shift + a” the OS interprets that as “A”). There is a plugin that can let you do some customization of what key to send along with shifted keys (so you could, e.g. have shift + 1 send “$” instead of “!”, but I don’t think it could make, e.g. shift +1 send 4 (it would need to be a shifted character)). For things more advanced than that, you’d have to write a macro & check if shift is pressed or not (I have an example in my layout here).

1 Like

LSHIFT (e.g. LSHIFT(Key_9) for typing a ( character) might work well enough. You can put it directly in your key map.

I am pretty sure you can also do Key_LeftParen or Key_RightParen, too, assuming you are on a US QWERTY layout.

Thanks for the answers. I see that the shifted values are indeed tied to the os keyboard settings. I solved most of my problems by setting my keyboard to US. I’d completely forgotten to do this, I’m in the U.K. and its not an unusual thing to have to do…doh.

Thanks again!

Would it make sense then, to … instead of using shift, make that same key a layer switch, and have a kind of manually set layer, mimicking shift?
It is more work/repetition, but sounds the cleanest way, after reading this thread.

That’s a fairly popular approach, often referred to as a “shift layer”. Another option is the CharShift plugin, which lets you freely assign shifted or non-shifted symbols to the “shifted position” on any key.


thanks @merlin !
Is there any advantage to the CharShift approach (vs the shift layer)?
The README of CharShift does not mention anything,
and as I see it, the shift layer approach is more straight forward and verbose (no need for indirection through an integer/index number), in addition to not needing a plugin/additional code. I am sure there is a benefit, as it exists.

There are a few:

  1. If you only have a few modifications, it requires less space than a full layer to store the information.
  2. With the “shift layer” approach, holding the “shift” key doesn’t get you the actual shift modifier for a separate pointing device (i.e. you can’t use it for shift + click with your mouse.
  3. If you use some other shift modifier key (perhaps a combo modifier like Key_Meh) in combination with a non-shifted symbol on your “shift layer”, you’ll get the shifted symbol that corresponds to that key’s QWERTY counterpart.