Jump to content
  • Advertisement
Sign in to follow this  

Quick question: GetAsyncKeyState

This topic is 4337 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
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?

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
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!