UnityEngine.Event.KeyboardEvent C# (CSharp) Method

KeyboardEvent() public static method

Create a keyboard event.

public static KeyboardEvent ( string key ) : Event
key string
return Event
        public static Event KeyboardEvent(string key)
        {
            Event event2 = new Event(0) {
                type = EventType.KeyDown
            };
            if (!string.IsNullOrEmpty(key))
            {
                int startIndex = 0;
                bool flag = false;
                do
                {
                    flag = true;
                    if (startIndex >= key.Length)
                    {
                        flag = false;
                        break;
                    }
                    char ch = key[startIndex];
                    switch (ch)
                    {
                        case '#':
                            event2.modifiers |= EventModifiers.Shift;
                            startIndex++;
                            break;

                        case '%':
                            event2.modifiers |= EventModifiers.Command;
                            startIndex++;
                            break;

                        case '&':
                            event2.modifiers |= EventModifiers.Alt;
                            startIndex++;
                            break;

                        default:
                            if (ch == '^')
                            {
                                event2.modifiers |= EventModifiers.Control;
                                startIndex++;
                            }
                            else
                            {
                                flag = false;
                            }
                            break;
                    }
                }
                while (flag);
                string str = key.Substring(startIndex, key.Length - startIndex).ToLower();
                if (str != null)
                {
                    int num2;
                    if (<>f__switch$map0 == null)
                    {
                        Dictionary<string, int> dictionary = new Dictionary<string, int>(0x31) {
                            { 
                                "[0]",
                                0
                            },
                            { 
                                "[1]",
                                1
                            },
                            { 
                                "[2]",
                                2
                            },
                            { 
                                "[3]",
                                3
                            },
                            { 
                                "[4]",
                                4
                            },
                            { 
                                "[5]",
                                5
                            },
                            { 
                                "[6]",
                                6
                            },
                            { 
                                "[7]",
                                7
                            },
                            { 
                                "[8]",
                                8
                            },
                            { 
                                "[9]",
                                9
                            },
                            { 
                                "[.]",
                                10
                            },
                            { 
                                "[/]",
                                11
                            },
                            { 
                                "[-]",
                                12
                            },
                            { 
                                "[+]",
                                13
                            },
                            { 
                                "[=]",
                                14
                            },
                            { 
                                "[equals]",
                                15
                            },
                            { 
                                "[enter]",
                                0x10
                            },
                            { 
                                "up",
                                0x11
                            },
                            { 
                                "down",
                                0x12
                            },
                            { 
                                "left",
                                0x13
                            },
                            { 
                                "right",
                                20
                            },
                            { 
                                "insert",
                                0x15
                            },
                            { 
                                "home",
                                0x16
                            },
                            { 
                                "end",
                                0x17
                            },
                            { 
                                "pgup",
                                0x18
                            },
                            { 
                                "page up",
                                0x19
                            },
                            { 
                                "pgdown",
                                0x1a
                            },
                            { 
                                "page down",
                                0x1b
                            },
                            { 
                                "backspace",
                                0x1c
                            },
                            { 
                                "delete",
                                0x1d
                            },
                            { 
                                "tab",
                                30
                            },
                            { 
                                "f1",
                                0x1f
                            },
                            { 
                                "f2",
                                0x20
                            },
                            { 
                                "f3",
                                0x21
                            },
                            { 
                                "f4",
                                0x22
                            },
                            { 
                                "f5",
                                0x23
                            },
                            { 
                                "f6",
                                0x24
                            },
                            { 
                                "f7",
                                0x25
                            },
                            { 
                                "f8",
                                0x26
                            },
                            { 
                                "f9",
                                0x27
                            },
                            { 
                                "f10",
                                40
                            },
                            { 
                                "f11",
                                0x29
                            },
                            { 
                                "f12",
                                0x2a
                            },
                            { 
                                "f13",
                                0x2b
                            },
                            { 
                                "f14",
                                0x2c
                            },
                            { 
                                "f15",
                                0x2d
                            },
                            { 
                                "[esc]",
                                0x2e
                            },
                            { 
                                "return",
                                0x2f
                            },
                            { 
                                "space",
                                0x30
                            }
                        };
                        <>f__switch$map0 = dictionary;
                    }
                    if (<>f__switch$map0.TryGetValue(str, out num2))
                    {
                        switch (num2)
                        {
                            case 0:
                                event2.character = '0';
                                event2.keyCode = KeyCode.Keypad0;
                                return event2;

                            case 1:
                                event2.character = '1';
                                event2.keyCode = KeyCode.Keypad1;
                                return event2;

                            case 2:
                                event2.character = '2';
                                event2.keyCode = KeyCode.Keypad2;
                                return event2;

                            case 3:
                                event2.character = '3';
                                event2.keyCode = KeyCode.Keypad3;
                                return event2;

                            case 4:
                                event2.character = '4';
                                event2.keyCode = KeyCode.Keypad4;
                                return event2;

                            case 5:
                                event2.character = '5';
                                event2.keyCode = KeyCode.Keypad5;
                                return event2;

                            case 6:
                                event2.character = '6';
                                event2.keyCode = KeyCode.Keypad6;
                                return event2;

                            case 7:
                                event2.character = '7';
                                event2.keyCode = KeyCode.Keypad7;
                                return event2;

                            case 8:
                                event2.character = '8';
                                event2.keyCode = KeyCode.Keypad8;
                                return event2;

                            case 9:
                                event2.character = '9';
                                event2.keyCode = KeyCode.Keypad9;
                                return event2;

                            case 10:
                                event2.character = '.';
                                event2.keyCode = KeyCode.KeypadPeriod;
                                return event2;

                            case 11:
                                event2.character = '/';
                                event2.keyCode = KeyCode.KeypadDivide;
                                return event2;

                            case 12:
                                event2.character = '-';
                                event2.keyCode = KeyCode.KeypadMinus;
                                return event2;

                            case 13:
                                event2.character = '+';
                                event2.keyCode = KeyCode.KeypadPlus;
                                return event2;

                            case 14:
                                event2.character = '=';
                                event2.keyCode = KeyCode.KeypadEquals;
                                return event2;

                            case 15:
                                event2.character = '=';
                                event2.keyCode = KeyCode.KeypadEquals;
                                return event2;

                            case 0x10:
                                event2.character = '\n';
                                event2.keyCode = KeyCode.KeypadEnter;
                                return event2;

                            case 0x11:
                                event2.keyCode = KeyCode.UpArrow;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x12:
                                event2.keyCode = KeyCode.DownArrow;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x13:
                                event2.keyCode = KeyCode.LeftArrow;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 20:
                                event2.keyCode = KeyCode.RightArrow;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x15:
                                event2.keyCode = KeyCode.Insert;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x16:
                                event2.keyCode = KeyCode.Home;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x17:
                                event2.keyCode = KeyCode.End;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x18:
                                event2.keyCode = KeyCode.PageDown;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x19:
                                event2.keyCode = KeyCode.PageUp;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x1a:
                                event2.keyCode = KeyCode.PageUp;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x1b:
                                event2.keyCode = KeyCode.PageDown;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x1c:
                                event2.keyCode = KeyCode.Backspace;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x1d:
                                event2.keyCode = KeyCode.Delete;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 30:
                                event2.keyCode = KeyCode.Tab;
                                return event2;

                            case 0x1f:
                                event2.keyCode = KeyCode.F1;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x20:
                                event2.keyCode = KeyCode.F2;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x21:
                                event2.keyCode = KeyCode.F3;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x22:
                                event2.keyCode = KeyCode.F4;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x23:
                                event2.keyCode = KeyCode.F5;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x24:
                                event2.keyCode = KeyCode.F6;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x25:
                                event2.keyCode = KeyCode.F7;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x26:
                                event2.keyCode = KeyCode.F8;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x27:
                                event2.keyCode = KeyCode.F9;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 40:
                                event2.keyCode = KeyCode.F10;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x29:
                                event2.keyCode = KeyCode.F11;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x2a:
                                event2.keyCode = KeyCode.F12;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x2b:
                                event2.keyCode = KeyCode.F13;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x2c:
                                event2.keyCode = KeyCode.F14;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x2d:
                                event2.keyCode = KeyCode.F15;
                                event2.modifiers |= EventModifiers.FunctionKey;
                                return event2;

                            case 0x2e:
                                event2.keyCode = KeyCode.Escape;
                                return event2;

                            case 0x2f:
                                event2.character = '\n';
                                event2.keyCode = KeyCode.Return;
                                event2.modifiers &= ~EventModifiers.FunctionKey;
                                return event2;

                            case 0x30:
                                event2.keyCode = KeyCode.Space;
                                event2.character = ' ';
                                event2.modifiers &= ~EventModifiers.FunctionKey;
                                return event2;
                        }
                    }
                }
                if (str.Length != 1)
                {
                    try
                    {
                        event2.keyCode = (KeyCode) Enum.Parse(typeof(KeyCode), str, true);
                    }
                    catch (ArgumentException)
                    {
                        object[] args = new object[] { str };
                        Debug.LogError(UnityString.Format("Unable to find key name that matches '{0}'", args));
                    }
                    return event2;
                }
                event2.character = str.ToLower()[0];
                event2.keyCode = (KeyCode) event2.character;
                if (event2.modifiers != EventModifiers.None)
                {
                    event2.character = '\0';
                }
            }
            return event2;
        }

Usage Example

        static bool TryParseUniquePrefKeyString(string prefString, out string name, out Event keyboardEvent, out string shortcut)
        {
            int i = prefString.IndexOf(";", StringComparison.Ordinal);

            if (i < 0)
            {
                name          = null;
                keyboardEvent = null;
                shortcut      = null;
                return(false);
            }
            name          = prefString.Substring(0, i);
            shortcut      = prefString.Substring(i + 1);
            keyboardEvent = Event.KeyboardEvent(shortcut);
            return(true);
        }