It might have to do with the fact that the saving is done in response to the key message which only exits after the save has been performed meaning that no other key events will be processed until windows retains control from the original event. Performing the save on an idle have fix the problem as this will let the message exit so polling for new messages will retrieve the key up instead of it being potentially blocked. We could also try firing the event on release if done on press.