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; } }
private void LoadScreen(int iScreenNum) { // set keydown to no action currentKeyDownReceiver = new KeyDownPressed(OnKeyDownPressedNoAction); Cursor.Current = Cursors.WaitCursor; switch (iScreenNum) { case 1: ((Screen1Opening)Screens[0]).LoadScreen(); break; case 2: ((Screen2KtivaAlArachim)Screens[1]).LoadScreen(); break; case 3: Screen3HatramaIntro oScreen3HatramaIntro = (Screen3HatramaIntro)Screens[2]; if (iHatramaNumber == 1) { oScreen3HatramaIntro.TheText = Texts.GetScreenText(2, 0); } else { oScreen3HatramaIntro.TheText = Texts.GetScreenText(2, 1); } oScreen3HatramaIntro.LoadScreen(); break; case 4: // Guy: general: the veriable HatramaWord is used as a sign for Screen4Hatrama, whether to use the Person veriable or an array of words/ ((Screen4Hatrama)Screens[3]).Person = oCurrentTester.familiar_name; ((Screen4Hatrama)Screens[3]).HatramaWord = "noWord"; // Guy: group 4 gets unfamiliar_name for hatrama if (oCurrentTester.Group == 4) { ((Screen4Hatrama)Screens[3]).Person = oCurrentTester.unfamiliar_name; } //Guy: set the number of tests according to group if (oCurrentTester.Group == 1) { ((Screen4Hatrama)Screens[3]).numOfTests = int.Parse(Preferences.GetPreference("hatramaNumberOfTestsGroup1and2")); ((Screen4Hatrama)Screens[3]).HatramaWord = "group1array"; // array of words for group1 } else if (oCurrentTester.Group == 2) { ((Screen4Hatrama)Screens[3]).numOfTests = int.Parse(Preferences.GetPreference("hatramaNumberOfTestsGroup1and2")); ((Screen4Hatrama)Screens[3]).HatramaWord = "group2array"; // array of words for group2 } else if (oCurrentTester.Group == 3 || oCurrentTester.Group == 4)// groups 3 & 4 only 20 hatrama steps { ((Screen4Hatrama)Screens[3]).numOfTests = int.Parse(Preferences.GetPreference("hatramaNumberOfTestsGroup3and4")); } //else if (oCurrentTester.Group == 3) // gets only unfamiliar_name, the hatrama will choose between Person and HatramaWord but it will always be unfamiliar_name //{ // ((Screen4Hatrama)Screens[3]).Person = oCurrentTester.unfamiliar_name; // ((Screen4Hatrama)Screens[3]).HatramaWord = oCurrentTester.unfamiliar_name; //} //else if (oCurrentTester.Group == 4) // gets only familiar_name, the hatrama will choose between Person and HatramaWord but it will always be familiar_name //{ // ((Screen4Hatrama)Screens[3]).Person = oCurrentTester.familiar_name; // ((Screen4Hatrama)Screens[3]).HatramaWord = oCurrentTester.familiar_name; //} //else //{ // ((Screen4Hatrama)Screens[3]).Person = oCurrentTester.familiar_name; // ((Screen4Hatrama)Screens[3]).HatramaWord = TextsGlobal.GetText("HatramaSafeBase"); //} currentKeyDownReceiver = new KeyDownPressed(((Screen4Hatrama)Screens[3]).OnKeyDownPressed); ((Screen4Hatrama)Screens[3]).LoadScreen(); break; case 5: ((Screen5MathIntro)Screens[4]).IsHard = false; if (oCurrentTester.Group == 1 || oCurrentTester.Group == 5) { ((Screen5MathIntro)Screens[4]).IsHard = true; } ((Screen5MathIntro)Screens[4]).LoadScreen(); break; case 6: ((Screen6Math)Screens[5]).LoadScreen(); if (iCurrentMathTestNum == 1) { ((Screen6Math)Screens[5]).LoadTest(sMath1XmlPath, mathTestMinutes[0]); } else if (iCurrentMathTestNum == 2) { ((Screen6Math)Screens[5]).LoadTest(sMath2XmlPath, mathTestMinutes[1]); } break; case 7: ((Screen7Arachim2)Screens[6]).Logger = oResultsLogger; ((Screen7Arachim2)Screens[6]).LoadScreen(); break; case 8: ((Screen8SheelonZminut)Screens[7]).LoadScreen(); break; case 9: currentKeyDownReceiver = new KeyDownPressed(((Screen9LexicalDecision)Screens[8]).OnKeyDownPressed); ((Screen9LexicalDecision)Screens[8]).LoadScreen(); break; case 10: ((ScreenLastQuestion)Screens[9]).LoadScreen(); break; case 11: ((Screen10End)Screens[10]).LoadScreen(); break; case 12: ((ScreenHatramaEnd)Screens[11]).LoadScreen(); break; case 13: ((Screen11Thunot)Screens[12]).LoadScreen(); break; } ShowScreen(iScreenNum); Cursor.Current = Cursors.Default; }