Пример #1
0
        public override void KeyDown(NSEvent theEvent)
        {
            if ((int)theEvent.ModifierFlags == (int)KeyModifierFlag.None && (theEvent.KeyCode == (int)KeyCodes.Enter || theEvent.KeyCode == (int)KeyCodes.Space))
            {
                PerformClick(this);
            }

            var args = new NSEventArgs(theEvent);

            KeyDownPressed?.Invoke(this, args);

            if (!args.Handled)
            {
                base.KeyDown(theEvent);
            }
        }
Пример #2
0
        async void KeyboardListenerService_KeyDown(CoreWindow sender, KeyEventArgs args)
        {
            if (!CanListen)
            {
                return;
            }

            KeyDownPressed?.Invoke(sender, args);
            // Guidelines:
            // If first VirtualKey is Ctrl, Alt, or Shift, then we're waiting for another key
            var i = 0;

            while (i < MaxVirtualKeys && virtualKeys[i] != VirtualKey.None)
            {
                i++;
            }

            if (i == MaxVirtualKeys)
            {
                virtualKeys = new VirtualKey[3];
            }
            else
            {
                virtualKeys[i] = args.VirtualKey;
            }

            switch (args.VirtualKey)
            {
            case VirtualKey.Control:
                Debug.WriteLine("Ctrl key was pressed, waiting another key ...");
                break;

            case VirtualKey.Shift:
                Debug.WriteLine("Shift key was pressed, waiting another key ...");
                break;

            default:
                Debug.WriteLine($"{args.VirtualKey} key was pressed");
                // look in the db for a match
                var action = await _keyboardActionDatabase.GetKeyboardAction(virtualKeys[0], virtualKeys[1]);

                if (action != null)
                {
                    // if there's a match, get the ActionId
                    DoKeyboardAction(action);
                }
                else
                {
                    if (Locator.NavigationService.CurrentPage == VLCPage.VideoPlayerPage)
                    {
                        switch (args.VirtualKey)
                        {
                        case VirtualKey.GamepadA:
                        case VirtualKey.GamepadLeftThumbstickButton:
                        case VirtualKey.GamepadDPadDown:
                        case VirtualKey.GamepadDPadLeft:
                        case VirtualKey.GamepadDPadUp:
                        case VirtualKey.GamepadDPadRight:
                        case VirtualKey.GamepadLeftThumbstickUp:
                        case VirtualKey.GamepadLeftThumbstickDown:
                        case VirtualKey.GamepadLeftThumbstickRight:
                        case VirtualKey.GamepadLeftThumbstickLeft:
                            Locator.VideoPlayerVm.RequestChangeControlBarVisibility(true);
                            break;

                        case VirtualKey.GamepadY:
                            Locator.MediaPlaybackViewModel.PlayOrPauseCommand.Execute(null);
                            break;

                        case VirtualKey.GamepadLeftShoulder:
                            Locator.VideoPlayerVm.RequestChangeControlBarVisibility(true);
                            Locator.MediaPlaybackViewModel.FastSeekCommand.Execute(-5000);
                            break;

                        case VirtualKey.GamepadLeftTrigger:
                            Locator.VideoPlayerVm.RequestChangeControlBarVisibility(true);
                            Locator.MediaPlaybackViewModel.FastSeekCommand.Execute(-30000);
                            break;

                        case VirtualKey.GamepadRightShoulder:
                            Locator.VideoPlayerVm.RequestChangeControlBarVisibility(true);
                            Locator.MediaPlaybackViewModel.FastSeekCommand.Execute(5000);
                            break;

                        case VirtualKey.GamepadRightTrigger:
                            Locator.VideoPlayerVm.RequestChangeControlBarVisibility(true);
                            Locator.MediaPlaybackViewModel.FastSeekCommand.Execute(30000);
                            break;

                        default:
                            break;
                        }
                    }
                }
                break;
            }
        }
        void KeyboardListenerService_KeyDown(CoreWindow sender, KeyEventArgs args)
        {
            if (!CanListen)
            {
                return;
            }

            KeyDownPressed?.Invoke(sender, args);
            // Guidelines:
            // If first VirtualKey is Ctrl, Alt, or Shift, then we're waiting for another key
            var i = 0;

            while (i < MaxVirtualKeys && _virtualKeys[i] != VirtualKey.None)
            {
                i++;
            }

            if (i == MaxVirtualKeys)
            {
                _virtualKeys = new VirtualKey[3];
            }
            else
            {
                _virtualKeys[i] = args.VirtualKey;
            }

            switch (args.VirtualKey)
            {
            case VirtualKey.Control:
                Debug.WriteLine("Ctrl key was pressed, waiting another key ...");
                break;

            case VirtualKey.Shift:
                Debug.WriteLine("Shift key was pressed, waiting another key ...");
                break;

            default:
                Debug.WriteLine($"{args.VirtualKey} key was pressed");

                var action = Shortcuts.FirstOrDefault(x =>
                                                      (x.MainKey == _virtualKeys[0] || x.KeyCode == (int)_virtualKeys[0]) &&
                                                      (x.SecondKey == _virtualKeys[1] || x.KeyCode == (int)_virtualKeys[1]));

                if (action != null)
                {
                    // if there's a match, get the ActionId
                    DoKeyboardAction(action);
                }
                else
                {
                    if (Locator.NavigationService.CurrentPage == VLCPage.VideoPlayerPage)
                    {
                        switch (args.VirtualKey)
                        {
                        case VirtualKey.GamepadLeftThumbstickButton:
                        case VirtualKey.GamepadRightThumbstickButton:
                            if (!Locator.VideoPlayerVm.Is3DVideo)
                            {
                                break;
                            }
                            var vp = new VideoViewpoint(0f, 0f, 0f,
                                                        args.VirtualKey == VirtualKey.GamepadRightThumbstickButton ? -0.5f : 0.5f);
                            Locator.PlaybackService.UpdateViewpoint(vp, false);
                            break;

                        case VirtualKey.GamepadA:
                        case VirtualKey.GamepadDPadDown:
                        case VirtualKey.GamepadDPadLeft:
                        case VirtualKey.GamepadDPadUp:
                        case VirtualKey.GamepadDPadRight:
                        case VirtualKey.GamepadLeftThumbstickUp:
                        case VirtualKey.GamepadLeftThumbstickDown:
                        case VirtualKey.GamepadLeftThumbstickRight:
                        case VirtualKey.GamepadLeftThumbstickLeft:
                            Locator.VideoPlayerVm.RequestChangeControlBarVisibility(true);
                            break;

                        case VirtualKey.GamepadY:
                            Locator.MediaPlaybackViewModel.PlayOrPauseCommand.Execute(null);
                            break;

                        case VirtualKey.GamepadLeftShoulder:
                            Locator.VideoPlayerVm.RequestChangeControlBarVisibility(true);
                            Locator.MediaPlaybackViewModel.FastSeekCommand.Execute(-5000);
                            break;

                        case VirtualKey.GamepadLeftTrigger:
                            Locator.VideoPlayerVm.RequestChangeControlBarVisibility(true);
                            Locator.MediaPlaybackViewModel.FastSeekCommand.Execute(-30000);
                            break;

                        case VirtualKey.GamepadRightShoulder:
                            Locator.VideoPlayerVm.RequestChangeControlBarVisibility(true);
                            Locator.MediaPlaybackViewModel.FastSeekCommand.Execute(5000);
                            break;

                        case VirtualKey.GamepadRightTrigger:
                            Locator.VideoPlayerVm.RequestChangeControlBarVisibility(true);
                            Locator.MediaPlaybackViewModel.FastSeekCommand.Execute(30000);
                            break;

                        case VirtualKey.GamepadRightThumbstickDown:
                            if (!Locator.VideoPlayerVm.Is3DVideo)
                            {
                                break;
                            }
                            Locator.PlaybackService.UpdateViewpoint(new VideoViewpoint(0f, 5f, 0f, 0f), false);
                            break;

                        case VirtualKey.GamepadRightThumbstickUp:
                            if (!Locator.VideoPlayerVm.Is3DVideo)
                            {
                                break;
                            }
                            Locator.PlaybackService.UpdateViewpoint(new VideoViewpoint(0f, -5f, 0f, 0f), false);
                            break;

                        case VirtualKey.GamepadRightThumbstickLeft:
                            if (!Locator.VideoPlayerVm.Is3DVideo)
                            {
                                break;
                            }
                            Locator.PlaybackService.UpdateViewpoint(new VideoViewpoint(-5f, 0f, 0f, 0f), false);
                            break;

                        case VirtualKey.GamepadRightThumbstickRight:
                            if (!Locator.VideoPlayerVm.Is3DVideo)
                            {
                                break;
                            }
                            Locator.PlaybackService.UpdateViewpoint(new VideoViewpoint(5f, 0f, 0f, 0f), false);
                            break;

                        default:
                            break;
                        }
                    }
                }
                break;
            }
        }