• Advertisement
Sign in to follow this  

Quick question: GetAsyncKeyState

This topic is 4248 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

When using the VK_ type of GetAsyncKeyState, why is there a ID for VK_LSHIFT, VK_RSHIFT, and VK_SHIFT? What does VK_SHIFT do? Is it for reading whether either of them are down, or does it serve a different purpose? Same thing with VK_CONTROL.

Share this post


Link to post
Share on other sites
Advertisement
Quote:
From MSDN
You can use the virtual-key code constants VK_SHIFT, VK_CONTROL, and VK_MENU as values for the vKey parameter. This gives the state of the SHIFT, CTRL, or ALT keys without distinguishing between left and right.

Windows NT/2000/XP: You can use the following virtual-key code constants as values for vKey to distinguish between the left and right instances of those keys.

Code Meaning
VK_LSHIFT Left-shift key.
VK_RSHIFT Right-shift key.
VK_LCONTROL Left-control key.
VK_RCONTROL Right-control key.
VK_LMENU Left-menu key.
VK_RMENU Right-menu key.


These left- and right-distinguishing constants are only available when you call the GetKeyboardState, SetKeyboardState, GetAsyncKeyState, GetKeyState, and MapVirtualKey functions.


Share this post


Link to post
Share on other sites
Quote:
Original post by Servant of the Lord
What does VK_SHIFT do? Is it for reading whether either of them are down, or does it serve a different purpose? Same thing with VK_CONTROL.


Upon inspections of the virtual key code table on MSDN, it would appear the answer is yes. It says VK_LSHIFT = left shift key, VK_RSHIFT = right shift key and VK_SHIFT = shift key. The same pattern applies to the control keys. Hope that helps.

-AJ

EDIT: Blast! Beaten to it.

Share this post


Link to post
Share on other sites
Quote:
Original post by Servant of the Lord
Thanks guys, I was looking through MSDN, but I have trouble navigating it.

Many thanks!

Oh, and another thing. 0-9 and A-Z doesn't have any VK_ names, as far as I can tell, so I have to use it's hexidecimal IDs?


As far as I know, yes. Or you can be evil, and copy this to your project:


const WORD VK_A = 0x41;
const WORD VK_B = 0x42;
const WORD VK_C = 0x43;
const WORD VK_D = 0x44;
const WORD VK_E = 0x45;
const WORD VK_F = 0x46;
const WORD VK_G = 0x47;
const WORD VK_H = 0x48;
const WORD VK_I = 0x49;
const WORD VK_J = 0x4A;
const WORD VK_K = 0x4B;
const WORD VK_L = 0x4C;
const WORD VK_M = 0x4D;
const WORD VK_N = 0x4E;
const WORD VK_O = 0x4F;
const WORD VK_P = 0x50;
const WORD VK_Q = 0x51;
const WORD VK_R = 0x52;
const WORD VK_S = 0x53;
const WORD VK_T = 0x54;
const WORD VK_U = 0x55;
const WORD VK_V = 0x56;
const WORD VK_W = 0x57;
const WORD VK_X = 0x58;
const WORD VK_Y = 0x59;
const WORD VK_Z = 0x5A;

//=====================

const WORD VK_ALT = VK_MENU;
const WORD VK_ENTER = VK_RETURN;
const WORD VK_CTRL = VK_CONTROL;
const WORD VK_BACKSPACE = VK_BACK;



(The last 4 are just my own personal preference.)

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement