LSHIFT(Key_CapsLock) or LSHIFT(Key_NonUsPound)

question

#1

I am using my Model01 with the german Neo2 layout. Specifically, I configured my Linux to have the Neo2 layout os side and did some minor adaptions to my firmware.

The Neo2 layout has 6 layers to be reached by combinations of various modifiers. Layer 5 holds many greek characters and is reached either by pressing Shift+CapsLock or Shift+Pound. I would like to have one physical key for that so I do not have to twist my fingers for that. (OneShot does not accept either Key_CapsLock nor Key_NonUsPound.)

It seems as if LSHIFT(…) would be the way to go. Unfortunately, this does not work in my setup. If I put LSHIFT(…) on some physical key (left FN, in my case) I get the function of CapsLock or NonUsPound.

Does anyone know how to achieve a Layer 5 key?


#2

I played around with macros, but to no avail.

My macro function looks as follows:

static const macro_t *layer5Macro(const uint8_t keyState) {
   if (keyIsPressed(keyState))
    return MACRO(D(RightShift), D(CapsLock));
    /* return MACRO(T(H),T(A),T(L),T(L),T(O)); */

  return MACRO_NONE;
}

If I use the commented out line, the macro works as expected and types a string. Unfortunately, trying to map RightShift and CapsLock on one key results in a delayed SHIFT behaviour.

Could anyone suggested what I am doing wrong?