My guess is that using GetKeyState is correct but somehow there is no call to `PeekMessage' or `GetMessage' that would remove the fact that Ctrl is not pressed anymore.