예제 #1
0
        /// <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);
        }
예제 #2
0
 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;
     }
 }