I run into the rollover problem with Qukeys pretty constantly. I use the thumb clusters for SpaceCadet-like behavior. I can’t use SpaceCadet itself, because it doesn’t allow me to use the modifiers and the tap behavior in a single chord (e.g., I have “Ctrl-]” set to my tmux prefix key, which requires holding left-control and tapping right-control at the same time).
The behavior is consistent: I always get the tapped version of the key, followed by the modified version of the subsequent character.
[PRIMARY] = KEYMAP_STACKED
(Key_Escape, Key_1, Key_2, Key_3, Key_4, Key_5, Key_LEDEffectNext,
Key_Backtick, Key_Quote, Key_Comma, Key_Period, Key_P, Key_Y, Key_Tab,
Key_PageUp, Key_A, Key_O, Key_E, Key_U, Key_I,
Key_PageDown, Key_Semicolon, Key_Q, Key_J, Key_K, Key_X, Key_LeftGui,
Key_LeftBracket, Key_Backspace, LSHIFT(Key_LeftBracket), LSHIFT(Key_9),
LockLayer(EMOTES), Key_6, Key_7, Key_8, Key_9, Key_0, LockLayer(NUMPAD),
Key_Enter, Key_F, Key_G, Key_C, Key_R, Key_L, Key_Slash,
Key_D, Key_H, Key_T, Key_N, Key_S, Key_Minus,
SYSTER, Key_B, Key_M, Key_W, Key_V, Key_Z, Key_Equals,
LSHIFT(Key_0), LSHIFT(Key_RightBracket), Key_Spacebar, Key_RightBracket,
QUKEYS(kaleidoscope::plugin::Qukey(0, 3, 7, Key_LeftShift),
kaleidoscope::plugin::Qukey(0, 3, 8, Key_RightShift),
kaleidoscope::plugin::Qukey(0, 0, 7, Key_LeftControl),
kaleidoscope::plugin::Qukey(0, 0, 8, Key_RightControl),
kaleidoscope::plugin::Qukey(0, 2, 7, Key_LeftAlt),
kaleidoscope::plugin::Qukey(0, 2, 8, Key_RightAlt),
kaleidoscope::plugin::Qukey(0, 2, 9, Key_RightGui));
Given the above, it is frequently the case that when I type a capital letter I, I’ll get the key sequence “)I”. IOW, the tapped right shift, plus the shifted letter I.
It seems like the easiest course of events would be that, for certain keys, if a modifier is being held and any key is pressed down while that key is held, Qukeys will always act like the key is held rather than tapped. I can see this being a problem for people who use Qukeys on the home row, and primarily roll over when typing quickly, but I’d rather not have to deal with heuristic timings which you seem to be working towards in your other recent post; I know how I want these keys to act, so I’d rather just set a flag on the Qukey definition that says “rollover is/isn’t wanted here”.