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); } }
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; } }