Keys ConvertKeys(System.Windows.Forms.Keys key) { // NOTE: this will not work when both Left & Right control keys are pressed. if (key == System.Windows.Forms.Keys.ControlKey) { if (GetAsyncKeyState(System.Windows.Forms.Keys.LControlKey) < 0) { return(Keys.LeftControl); } return(Keys.RightControl); } if (key == System.Windows.Forms.Keys.ShiftKey) { if (GetAsyncKeyState(System.Windows.Forms.Keys.LShiftKey) < 0) { return(Keys.LeftShift); } return(Keys.RightShift); } if (key == System.Windows.Forms.Keys.Menu) { if (GetAsyncKeyState(System.Windows.Forms.Keys.LMenu) < 0) { return(Keys.LeftAlt); } return(Keys.RightAlt); } return((Keys)key); }
static extern short GetAsyncKeyState(System.Windows.Forms.Keys vKey);