No, there is no minimum amount of time. The modifier action triggers as soon as any other key is pressed while the Dual-use one is held. In practice, this still means that you may get the symbol instead of the modifier, if you press it together with any other key in the same scan cycle. Chances for that are pretty slim, though. The timer is there so that it can act as a modifier even if nothing else is pressed, so you can have a
Shift/Z key, hold it, and use the mouse with the
The other way around is a more likely problem: when you want to act it as a symbol, and not a modifier. It may think that you are holding both keys.
Once we test the library in practice, these timing issues can be tweaked, to further reduce the impact of dual-use, but I didn’t want to over-complicate the code yet, before testing it in practice.
No-no, my thinking was the same! Using letter keys as modifiers if held.
Nope, shouldn’t be any issues.
Still no problem, because the other
LControl/symbol would still be held. The way
KeyboardioFirmware works, if you release a key, it does not remove it from the report: it doesn’t add it (the report is cleared each scan cycle). So if you hold two
LControls, it will update the report twice to include the scancode for that key, but since the report only has one slot for
LControl, it will appear there only once. If you release one of these keys, then that won’t try to add it, but the other will. So in the end,
LControl will still be held.
Even better, if you have two
LControl/ESC keys, where both the modifier and the alternate key are the same, the plugin still behaves correctly: if you hold both, and release one,
LControl will still be held. If you hold one, and tap the other, you’ll get
LControl + Esc.
Myeah, not the easiest code to read. But thanks for the questions, I will be updating the docs to make these things clearer! Hope my answers cleared things up a bit.