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 Shift
active.
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.