Search code examples
c++winapikeypress

Using GetKeyState()


I would like to have a boolean event toggle when a key is pressed. Specifically, the 's' key. I have been pointed to the function GetKeyState(), which supposedly works under the Win32 API. I understand the ASCII code for the letter 's' is 115, and so my code is as follows:

if (GetKeyState(115) == 1)
{
<EVENT>
}

However, this does not work. Why? Here is the MSDN reference: http://msdn.microsoft.com/en-us/library/ms646301%28v=vs.85%29.aspx ... "If the low-order bit is 1, the key is toggled"


Solution

  • From what I understand you need to do:

    if( GetKeyState(115) & 0x8000 )
    {
        <EVENT>
    }
    

    The highest bit tells if key is pressed. The lowest tells if key is toggled (like, if caps lock is turned on).