7.3 How do I check the state of the virtual keys, Caps lock for example?


If the Control.ModifierKeys doesn't address your issue, then use Platform Invoke and call GetKeyState directly.

Declare this class first:


[
ComVisibleAttribute(false),
SuppressUnmanagedCodeSecurityAttribute()
]
internal class NativeMethods
{
     [DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true, CallingConvention=CallingConvention.Winapi)]
     public static extern short GetKeyState(int keyCode);

     public static int HIWORD(int n)
     {
          return ((n >> 16) & 0xffff/*=~0x0000*/);
     }

     public static int LOWORD(int n)
     {
          return (n & 0xffff/*=~0x0000*/);
     }
}


Then when you want to check if Caps is down or ON, call:


short state = NativeMethods.GetKeyState(0x14 /*VK_CAPTIAL*/);

bool capsKeyDown = NativeMethods.HIWORD(state);
bool capsKeyON = NativeMethods.LOWORD(state);


© 2001-2010 Copyright Syncfusion Inc. All rights reserved.  |  Privacy Policy  |  Contact  |  Sitemap