/// <summary> /// HookCallback procedure that calls accordingly the KeyDown or KeyUp events. /// </summary> /// <param name="keyEvent">Keyboard event</param> /// <param name="vkCode">VKCode</param> /// <param name="character">Character as string.</param> /// <returns>Was the event handled</returns> bool KeyboardListener_KeyboardCallback(User32.KeyEvent keyEvent, int vkCode) { RawKeyEventArgs args = null; switch (keyEvent) { // KeyDown events case User32.KeyEvent.WM_KEYDOWN: if (KeyDown != null) { args = new RawKeyEventArgs(vkCode, false); dispatcher.Invoke(new RawKeyEventHandler(KeyDown), this, args); } break; case User32.KeyEvent.WM_SYSKEYDOWN: if (KeyDown != null) { args = new RawKeyEventArgs(vkCode, true); dispatcher.Invoke(new RawKeyEventHandler(KeyDown), this, args); } break; // KeyUp events case User32.KeyEvent.WM_KEYUP: if (KeyUp != null) { args = new RawKeyEventArgs(vkCode, false); dispatcher.Invoke(new RawKeyEventHandler(KeyUp), this, args); } break; case User32.KeyEvent.WM_SYSKEYUP: if (KeyUp != null) { args = new RawKeyEventArgs(vkCode, true); dispatcher.Invoke(new RawKeyEventHandler(KeyUp), this, args); } break; default: break; } return(args != null && args.IsHandled); }
private void OnKeyDown(object sender, RawKeyEventArgs args) { switch (args.Key) { case Key.MediaNextTrack: plexApi.PlayBack.SkipNext(this.device); break; case Key.MediaPreviousTrack: plexApi.PlayBack.SkipPrevious(this.device); break; //case Key.MediaStop: // plexApi.PlayBack.SkipNext(this.device); break; case Key.MediaPlayPause: plexApi.PlayBack.Pause(this.device); break; } }