private static void OnKeyboardDown(int keyCode) { // игнорируем нажатие кнопок, которые нас не перемещают в пространстве // мы не можем выбрать только те кнопки, которые нас могут перемещать (UP, DOWN... CTRL + X/V/Z/Y, ENTER и тд), // потому что у игрока может быть выделенный фрагмент текста и любая кнопка его удалит switch ((UserInputHandler.KeyCode)keyCode) { case UserInputHandler.KeyCode.VK_CONTROL: case UserInputHandler.KeyCode.VK_LSHIFT: case UserInputHandler.KeyCode.VK_RSHIFT: case UserInputHandler.KeyCode.VK_MENU: case UserInputHandler.KeyCode.VK_PAUSE: case UserInputHandler.KeyCode.VK_CAPITAL: case UserInputHandler.KeyCode.VK_SNAPSHOT: case UserInputHandler.KeyCode.VK_ESCAPE: case UserInputHandler.KeyCode.VK_F1: case UserInputHandler.KeyCode.VK_F2: case UserInputHandler.KeyCode.VK_F3: case UserInputHandler.KeyCode.VK_F4: case UserInputHandler.KeyCode.VK_F5: case UserInputHandler.KeyCode.VK_F6: case UserInputHandler.KeyCode.VK_F7: case UserInputHandler.KeyCode.VK_F8: case UserInputHandler.KeyCode.VK_F9: case UserInputHandler.KeyCode.VK_F10: case UserInputHandler.KeyCode.VK_F11: case UserInputHandler.KeyCode.VK_F12: return; } var gateway = PluginBase.GetGatewayFactory().Invoke(); var currentLine = gateway.GetCurrentLine(); NavigationHandler.UpdateHistory(new JumpLocation(gateway.GetFullCurrentPath(), currentLine), NavigateActionType.KEYBOARD_DOWN); }