If Keyboard.press() is called with a key that implies a modifier, when _keyReport.keys[] is full, the modifier bit will still be set on _keyReport.modifiers, but sendReport() never gets called for that key, leaving the modifier pressed but not reported until the next possible ::press(), which may or may not be after a ::release() that clears the modifier.
Also, if you ::press() two capital letters and ::release() one, the modifier will be cleared even though the second key is still pressed. Maybe there should be some documentation discouraging the use of ::press() with shifted keys? You shouldn't need them outside of string printing, which you should be using ::write() for anyway.
I was hoping I would have a chance to fix it so it doesn't set the modifier unless the key can be pressed, but I may not have time for a little while.
If
Keyboard.press()is called with akeythat implies a modifier, when_keyReport.keys[]is full, the modifier bit will still be set on_keyReport.modifiers, butsendReport()never gets called for that key, leaving the modifier pressed but not reported until the next possible::press(), which may or may not be after a::release()that clears the modifier.Also, if you
::press()two capital letters and::release()one, the modifier will be cleared even though the second key is still pressed. Maybe there should be some documentation discouraging the use of::press()with shifted keys? You shouldn't need them outside of string printing, which you should be using::write()for anyway.I was hoping I would have a chance to fix it so it doesn't set the modifier unless the key can be pressed, but I may not have time for a little while.