Ejemplo n.º 1
0
        public void KeyPressed(KeyCode keyCode, KeyModifiers keyModifiers)
        {
            if (ModeLine.IsTakingInput)
            {
                ModeLine.KeyPressed(keyCode, keyModifiers);
                return;
            }

            foreach (var hotkey in Hotkeys.OrderByDescending(x => x.Precedence))
            {
                if (hotkey.IsDown())
                {
                    hotkey.Action();
                    return;
                }
            }

            if (keyCode == KeyCode.Backspace)
            {
                Backspace();
            }
            else if (keyCode == KeyCode.Delete)
            {
                Delete();
            }
            else if (keyCode == KeyCode.Return)
            {
                NewLine();
            }

            if (Options.TypingMode != TypingMode.Regular)
            {
                var dict = PetsciiControlCodes.PetsciiSymbolMappings;

                if (Options.TypingMode == TypingMode.PetsciiShifted)
                {
                    dict = PetsciiControlCodes.PetsciiSymbolMappingShifted;
                }

                if (dict.ContainsKey(keyCode))
                {
                    var petscii = dict[keyCode];

                    if (Font.CanRenderGlyph(petscii))
                    {
                        PrintableCharacter(petscii);
                    }
                }
            }

            ModeLine.PauseDynamicUpdates = false;
        }