public static VirtualKeyFromKey ( Key key ) : int | ||
key | Key | |
return | int |
public static int VirtualKeyFromKey(Key key)
{
int virtualKey = 0;
switch(key)
{
case Key.Cancel:
virtualKey = VK_CANCEL;
break;
case Key.Back:
virtualKey = VK_BACK;
break;
case Key.Tab:
virtualKey = VK_TAB;
break;
case Key.Clear:
virtualKey = VK_CLEAR;
break;
case Key.Return:
virtualKey = VK_RETURN;
break;
case Key.Pause:
virtualKey = VK_PAUSE;
break;
case Key.Capital:
virtualKey = VK_CAPITAL;
break;
case Key.KanaMode:
virtualKey = VK_KANA;
break;
case Key.JunjaMode:
virtualKey = VK_JUNJA;
break;
case Key.FinalMode:
virtualKey = VK_FINAL;
break;
case Key.KanjiMode:
virtualKey = VK_KANJI;
break;
case Key.Escape:
virtualKey = VK_ESCAPE;
break;
case Key.ImeConvert:
virtualKey = VK_CONVERT;
break;
case Key.ImeNonConvert:
virtualKey = VK_NONCONVERT;
break;
case Key.ImeAccept:
virtualKey = VK_ACCEPT;
break;
case Key.ImeModeChange:
virtualKey = VK_MODECHANGE;
break;
case Key.Space:
virtualKey = VK_SPACE;
break;
case Key.Prior:
virtualKey = VK_PRIOR;
break;
case Key.Next:
virtualKey = VK_NEXT;
break;
case Key.End:
virtualKey = VK_END;
break;
case Key.Home:
virtualKey = VK_HOME;
break;
case Key.Left:
virtualKey = VK_LEFT;
break;
case Key.Up:
virtualKey = VK_UP;
break;
case Key.Right:
virtualKey = VK_RIGHT;
break;
case Key.Down:
virtualKey = VK_DOWN;
break;
case Key.Select:
virtualKey = VK_SELECT;
break;
case Key.Print:
virtualKey = VK_PRINT;
break;
case Key.Execute:
virtualKey = VK_EXECUTE;
break;
case Key.Snapshot:
virtualKey = VK_SNAPSHOT;
break;
case Key.Insert:
virtualKey = VK_INSERT;
break;
case Key.Delete:
virtualKey = VK_DELETE;
break;
case Key.Help:
virtualKey = VK_HELP;
break;
case Key.D0:
virtualKey = VK_0;
break;
case Key.D1:
virtualKey = VK_1;
break;
case Key.D2:
virtualKey = VK_2;
break;
case Key.D3:
virtualKey = VK_3;
break;
case Key.D4:
virtualKey = VK_4;
break;
case Key.D5:
virtualKey = VK_5;
break;
case Key.D6:
virtualKey = VK_6;
break;
case Key.D7:
virtualKey = VK_7;
break;
case Key.D8:
virtualKey = VK_8;
break;
case Key.D9:
virtualKey = VK_9;
break;
case Key.A:
virtualKey = VK_A;
break;
case Key.B:
virtualKey = VK_B;
break;
case Key.C:
virtualKey = VK_C;
break;
case Key.D:
virtualKey = VK_D;
break;
case Key.E:
virtualKey = VK_E;
break;
case Key.F:
virtualKey = VK_F;
break;
case Key.G:
virtualKey = VK_G;
break;
case Key.H:
virtualKey = VK_H;
break;
case Key.I:
virtualKey = VK_I;
break;
case Key.J:
virtualKey = VK_J;
break;
case Key.K:
virtualKey = VK_K;
break;
case Key.L:
virtualKey = VK_L;
break;
case Key.M:
virtualKey = VK_M;
break;
case Key.N:
virtualKey = VK_N;
break;
case Key.O:
virtualKey = VK_O;
break;
case Key.P:
virtualKey = VK_P;
break;
case Key.Q:
virtualKey = VK_Q;
break;
case Key.R:
virtualKey = VK_R;
break;
case Key.S:
virtualKey = VK_S;
break;
case Key.T:
virtualKey = VK_T;
break;
case Key.U:
virtualKey = VK_U;
break;
case Key.V:
virtualKey = VK_V;
break;
case Key.W:
virtualKey = VK_W;
break;
case Key.X:
virtualKey = VK_X;
break;
case Key.Y:
virtualKey = VK_Y;
break;
case Key.Z:
virtualKey = VK_Z;
break;
case Key.LWin:
virtualKey = VK_LWIN;
break;
case Key.RWin:
virtualKey = VK_RWIN;
break;
case Key.Apps:
virtualKey = VK_APPS;
break;
case Key.Sleep:
virtualKey = VK_SLEEP;
break;
case Key.NumPad0:
virtualKey = VK_NUMPAD0;
break;
case Key.NumPad1:
virtualKey = VK_NUMPAD1;
break;
case Key.NumPad2:
virtualKey = VK_NUMPAD2;
break;
case Key.NumPad3:
virtualKey = VK_NUMPAD3;
break;
case Key.NumPad4:
virtualKey = VK_NUMPAD4;
break;
case Key.NumPad5:
virtualKey = VK_NUMPAD5;
break;
case Key.NumPad6:
virtualKey = VK_NUMPAD6;
break;
case Key.NumPad7:
virtualKey = VK_NUMPAD7;
break;
case Key.NumPad8:
virtualKey = VK_NUMPAD8;
break;
case Key.NumPad9:
virtualKey = VK_NUMPAD9;
break;
case Key.Multiply:
virtualKey = VK_MULTIPLY;
break;
case Key.Add:
virtualKey = VK_ADD;
break;
case Key.Separator:
virtualKey = VK_SEPARATOR;
break;
case Key.Subtract:
virtualKey = VK_SUBTRACT;
break;
case Key.Decimal:
virtualKey = VK_DECIMAL;
break;
case Key.Divide:
virtualKey = VK_DIVIDE;
break;
case Key.F1:
virtualKey = VK_F1;
break;
case Key.F2:
virtualKey = VK_F2;
break;
case Key.F3:
virtualKey = VK_F3;
break;
case Key.F4:
virtualKey = VK_F4;
break;
case Key.F5:
virtualKey = VK_F5;
break;
case Key.F6:
virtualKey = VK_F6;
break;
case Key.F7:
virtualKey = VK_F7;
break;
case Key.F8:
virtualKey = VK_F8;
break;
case Key.F9:
virtualKey = VK_F9;
break;
case Key.F10:
virtualKey = VK_F10;
break;
case Key.F11:
virtualKey = VK_F11;
break;
case Key.F12:
virtualKey = VK_F12;
break;
case Key.F13:
virtualKey = VK_F13;
break;
case Key.F14:
virtualKey = VK_F14;
break;
case Key.F15:
virtualKey = VK_F15;
break;
case Key.F16:
virtualKey = VK_F16;
break;
case Key.F17:
virtualKey = VK_F17;
break;
case Key.F18:
virtualKey = VK_F18;
break;
case Key.F19:
virtualKey = VK_F19;
break;
case Key.F20:
virtualKey = VK_F20;
break;
case Key.F21:
virtualKey = VK_F21;
break;
case Key.F22:
virtualKey = VK_F22;
break;
case Key.F23:
virtualKey = VK_F23;
break;
case Key.F24:
virtualKey = VK_F24;
break;
case Key.NumLock:
virtualKey = VK_NUMLOCK;
break;
case Key.Scroll:
virtualKey = VK_SCROLL;
break;
case Key.LeftShift:
virtualKey = VK_LSHIFT;
break;
case Key.RightShift:
virtualKey = VK_RSHIFT;
break;
case Key.LeftCtrl:
virtualKey = VK_LCONTROL;
break;
case Key.RightCtrl:
virtualKey = VK_RCONTROL;
break;
case Key.LeftAlt:
virtualKey = VK_LMENU;
break;
case Key.RightAlt:
virtualKey = VK_RMENU;
break;
case Key.BrowserBack:
virtualKey = VK_BROWSER_BACK;
break;
case Key.BrowserForward:
virtualKey = VK_BROWSER_FORWARD;
break;
case Key.BrowserRefresh:
virtualKey = VK_BROWSER_REFRESH;
break;
case Key.BrowserStop:
virtualKey = VK_BROWSER_STOP;
break;
case Key.BrowserSearch:
virtualKey = VK_BROWSER_SEARCH;
break;
case Key.BrowserFavorites:
virtualKey = VK_BROWSER_FAVORITES;
break;
case Key.BrowserHome:
virtualKey = VK_BROWSER_HOME;
break;
case Key.VolumeMute:
virtualKey = VK_VOLUME_MUTE;
break;
case Key.VolumeDown:
virtualKey = VK_VOLUME_DOWN;
break;
case Key.VolumeUp:
virtualKey = VK_VOLUME_UP;
break;
case Key.MediaNextTrack:
virtualKey = VK_MEDIA_NEXT_TRACK;
break;
case Key.MediaPreviousTrack:
virtualKey = VK_MEDIA_PREV_TRACK;
break;
case Key.MediaStop:
virtualKey = VK_MEDIA_STOP;
break;
case Key.MediaPlayPause:
virtualKey = VK_MEDIA_PLAY_PAUSE;
break;
case Key.LaunchMail:
virtualKey = VK_LAUNCH_MAIL;
break;
case Key.SelectMedia:
virtualKey = VK_LAUNCH_MEDIA_SELECT;
break;
case Key.LaunchApplication1:
virtualKey = VK_LAUNCH_APP1;
break;
case Key.LaunchApplication2:
virtualKey = VK_LAUNCH_APP2;
break;
case Key.OemSemicolon:
virtualKey = VK_OEM_1;
break;
case Key.OemPlus:
virtualKey = VK_OEM_PLUS;
break;
case Key.OemComma:
virtualKey = VK_OEM_COMMA;
break;
case Key.OemMinus:
virtualKey = VK_OEM_MINUS;
break;
case Key.OemPeriod:
virtualKey = VK_OEM_PERIOD;
break;
case Key.OemQuestion:
virtualKey = VK_OEM_2;
break;
case Key.OemTilde:
virtualKey = VK_OEM_3;
break;
case Key.AbntC1:
virtualKey = VK_C1;
break;
case Key.AbntC2:
virtualKey = VK_C2;
break;
case Key.OemOpenBrackets:
virtualKey = VK_OEM_4;
break;
case Key.OemPipe:
virtualKey = VK_OEM_5;
break;
case Key.OemCloseBrackets:
virtualKey = VK_OEM_6;
break;
case Key.OemQuotes:
virtualKey = VK_OEM_7;
break;
case Key.Oem8:
virtualKey = VK_OEM_8;
break;
case Key.OemBackslash:
virtualKey = VK_OEM_102;
break;
case Key.ImeProcessed:
virtualKey = VK_PROCESSKEY;
break;
case Key.OemAttn: // DbeAlphanumeric
virtualKey = VK_OEM_ATTN; // VK_DBE_ALPHANUMERIC
break;
case Key.OemFinish: // DbeKatakana
virtualKey = VK_OEM_FINISH; // VK_DBE_KATAKANA
break;
case Key.OemCopy: // DbeHiragana
virtualKey = VK_OEM_COPY; // VK_DBE_HIRAGANA
break;
case Key.OemAuto: // DbeSbcsChar
virtualKey = VK_OEM_AUTO; // VK_DBE_SBCSCHAR
break;
case Key.OemEnlw: // DbeDbcsChar
virtualKey = VK_OEM_ENLW; // VK_DBE_DBCSCHAR
break;
case Key.OemBackTab: // DbeRoman
virtualKey = VK_OEM_BACKTAB; // VK_DBE_ROMAN
break;
case Key.Attn: // DbeNoRoman
virtualKey = VK_ATTN; // VK_DBE_NOROMAN
break;
case Key.CrSel: // DbeEnterWordRegisterMode
virtualKey = VK_CRSEL; // VK_DBE_ENTERWORDREGISTERMODE
break;
case Key.ExSel: // EnterImeConfigureMode
virtualKey = VK_EXSEL; // VK_DBE_ENTERIMECONFIGMODE
break;
case Key.EraseEof: // DbeFlushString
virtualKey = VK_EREOF; // VK_DBE_FLUSHSTRING
break;
case Key.Play: // DbeCodeInput
virtualKey = VK_PLAY; // VK_DBE_CODEINPUT
break;
case Key.Zoom: // DbeNoCodeInput
virtualKey = VK_ZOOM; // VK_DBE_NOCODEINPUT
break;
case Key.NoName: // DbeDetermineString
virtualKey = VK_NONAME; // VK_DBE_DETERMINESTRING
break;
case Key.Pa1: // DbeEnterDlgConversionMode
virtualKey = VK_PA1; // VK_ENTERDLGCONVERSIONMODE
break;
case Key.OemClear:
virtualKey = VK_OEM_CLEAR;
break;
default:
virtualKey = 0;
break;
}
return virtualKey;
}
}
private bool TextServicesKeystroke(TextServicesContext context, KeyEventArgs keyArgs, bool test) { TextServicesContext.KeyOp keyop; int wParam; int lParam; int scancode; // Cicero's Keystroke Manager and TIP does not recognize VK_RSHIFT or VK_LSHIFT. // We need to pass VK_SHIFT and the proper scancode. // switch (keyArgs.RealKey) { case Key.RightShift: wParam = NativeMethods.VK_SHIFT; scancode = 0x36; break; case Key.LeftShift: wParam = NativeMethods.VK_SHIFT; scancode = 0x2A; break; default: wParam = KeyInterop.VirtualKeyFromKey(keyArgs.RealKey); scancode = 0; break; } lParam = (int)(((uint)scancode << 16) | 1); if (keyArgs.RoutedEvent == Keyboard.PreviewKeyDownEvent /*keyArgs.IsDown*/) { keyop = test ? TextServicesContext.KeyOp.TestDown : TextServicesContext.KeyOp.Down; } else { // Previous key state and transition state always 1 for WM_KEYUP. lParam |= (1 << 31) | (1 << 30); keyop = test ? TextServicesContext.KeyOp.TestUp : TextServicesContext.KeyOp.Up; } return(context.Keystroke(wParam, lParam, keyop)); }