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;
            }
        }
Exemple #4
0
        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;
        }