>if I define a press-and-hold sequence,
>it won't execute until I let go of the button

The way it works is, when you press the button, the translation waits to see if you are going to hold it for longer than one second. After one second, it says "aha! long press", and then sends the translation sequence of press/release codes, except for the final "release" code. When you let go of the button, the final "release" code is then sent. I figured that this might be more useful to people, but that was just my guess.

I can change this behaviour, and simplify the code in the process, if we all agree on it. It's actually more complex to implement the current behaviour than the alternative you seem to want.

Cheers

-ml