I found out why this does this. However I don't know why I haven't noticed it earlier. The reason is that on Windows {EV_APPLICATION_IMP}.key_pressed is not correct. It uses the Win32 API GetKeyState but this does not tell you the actual key status, instead it is "the key status returned from this function changes as a thread reads key messages from its message queue". Meaning that it will return if the last key event we received had that key pressed or not. Which is the case when I do Ctrl+S. The proper way to do that is to capture the WM_KEYDOWN/WM_KEYUP events and if this is one of our Ctrl/Shift/Alt we need to update the flag in EV_APPLICATION_IMP.