DeveloperConsole.DeveloperConsole.OnKeyDown C# (CSharp) Method

OnKeyDown() private method

Handles key presses
private OnKeyDown ( object sender, KeyEventArgs e ) : void
sender object The object sending the event
e System.Windows.Forms.KeyEventArgs The event arguments
return void
        private void OnKeyDown(object sender, KeyEventArgs e)
        {
            ObjectSelector.KeyPress(sender, e);

            if (Array.IndexOf(ConsoleSettings.HideKeys, e.KeyCode) >= 0) {
                ShowConsole(_isHidden);
                e.SuppressKeyPress = true;
                return;
            }

            if (e.KeyCode == Keys.Escape) {
                ShowConsole(false);
                e.SuppressKeyPress = true;
                return;
            }

            if (_isHidden) {
                return;
            }

            switch (e.KeyCode) {
                case ConsoleSettings.ScrollUpKey:
                    ScrollUp();
                    break;
                case ConsoleSettings.ScrollDownKey:
                    ScrollDown();
                    break;
                case ConsoleSettings.HistoryLastKey:
                    LastInput();
                    break;
                case ConsoleSettings.HistoryNextKey:
                    NextInput();
                    break;
                case Keys.C:
                    if ((e.Modifiers & Keys.Control) == Keys.Control) {
                        if (Input == null) break;
                        var t = new Thread(delegate() { Clipboard.SetText(Input); });
                        t.SetApartmentState(ApartmentState.STA);
                        t.Start();
                        t.Join();
                        break;
                    }
                    goto default;
                case Keys.V:
                    if ((e.Modifiers & Keys.Control) == Keys.Control) {
                        var t =
                            new Thread(
                                delegate() {
                                    Input = Input.Insert(Input.Length - _inputOffset,
                                        Clipboard.GetText(TextDataFormat.Text));
                                });
                        t.SetApartmentState(ApartmentState.STA);
                        t.Start();
                        t.Join();
                        break;
                    }
                    goto default;
                case ConsoleSettings.CursorLeftKey:
                    CursorLeft();
                    break;
                case ConsoleSettings.CursorRightKey:
                    CursorRight();
                    break;
                case ConsoleSettings.DelKey:
                    Del();
                    break;
                case ConsoleSettings.BackSpaceKey:
                    BackSpace();
                    break;
                case Keys.Enter:
                    RunCommand();
                    break;
                default:
                    _historyCursor = -1;
                    var s = NativeMethods.GetCharsFromKeys(e.KeyData, (e.Modifiers & Keys.Shift) == Keys.Shift,
                        (e.Modifiers & Keys.Alt) == Keys.Alt);
                    if (s != null) {
                        if (SetKeyDown(e.KeyCode)) return;
                        var c = s[0];
                        if ((NativeMethods.GetKeyState(VkCapital) & 0x8000) == 0x8000 ||
                            (NativeMethods.GetKeyState(VkCapital) & 1) == 1 && char.IsLetter(c))
                            c = char.IsUpper(c) ? char.ToLower(c) : char.ToUpper(c);
                        if (NativeMethods.ApplicationIsActivated() && !char.IsControl(c))
                            Input = Input.Insert(Input.Length - _inputOffset, char.ToString(c));
                    }
                    break;
            }

            e.SuppressKeyPress = true;
        }