public void OnGUI()
        {
            _scroll = BeginScrollView(_scroll);

            switch (_inspectionObject)
            {
            case InputGroup group:
                group.groupName = NameField(group.groupName);

                if (DeleteButton())
                {
                    OnDeleteGroup.Invoke(group);
                }

                break;

            case InspectorInputAction action:
                action.action.actionName = NameField(action.action.actionName);

                DisplayKeys(action.action);
                Space();

                if (DeleteButton())
                {
                    OnDeleteAction.Invoke(action);
                }
                break;

            case InspectorInputAxis axis:
                axis.axis.axisName = NameField(axis.axis.axisName);

                EditorChangeChecker.BeginChangeCheck(InputMapWindow.SetMapDirty);
                axis.axis.positiveAction = TextField("Positive", axis.axis.positiveAction);
                axis.axis.negativeAction = TextField("Negative", axis.axis.negativeAction);
                EditorChangeChecker.EndChangeCheckAndCleanup();

                if (DeleteButton())
                {
                    OnDeleteAxis.Invoke(axis);
                }
                break;

            case InputAction _:
                HelpBox(new GUIContent($"Use '{nameof(InspectorInputAction)}' instead of '{nameof(InputAction)}'!"));
                break;

            case InputAxis _:
                HelpBox(new GUIContent($"Use '{nameof(InspectorInputAxis)}' instead of '{nameof(InputAxis)}'!"));
                break;
            }

            EndScrollView();

            if (OnNextRepaint != null && Event.current.type == EventType.Repaint)
            {
                OnNextRepaint?.Invoke();
                OnNextRepaint = null;
                InputMapWindow.GetEditorWindow().Repaint();
            }
        }
        void DisplayKeys(InputAction action)
        {
            actionKeyFoldout = Foldout(actionKeyFoldout, "Keys", true, EditorStyles.foldoutHeader);
            if (!actionKeyFoldout)
            {
                return;
            }

            BeginVertical(new GUIStyle()
            {
                margin = new RectOffset((int)EditorGUIUtility.singleLineHeight, 0, 0, 0)
            });

            //Checking for changes
            EditorChangeChecker.BeginChangeCheck(InputMapWindow.SetMapDirty);

            for (int i = 0; i < action.keys.Count; i++)
            {
                //Listening for key
                if (_currentListeningKeyCode == i)
                {
                    if (Event.current.isKey)
                    {
                        action.keys[i]           = Event.current.keyCode;
                        _currentListeningKeyCode = -1;
                        InputMapWindow.GetEditorWindow().Repaint();
                    }

                    if (EditorChangeChecker.IgnorableButton("Cancel") || Event.current.isMouse)
                    {
                        _currentListeningKeyCode = -1;
                        InputMapWindow.GetEditorWindow().Repaint();
                    }
                    continue;
                }

                //Drawing normal line
                BeginHorizontal();
                action.keys[i] = KeyCodePopup(action.keys[i]);

                if (EditorChangeChecker.IgnorableButton("Change", GUILayout.Width(60f)))
                {
                    _currentListeningKeyCode = i;
                    GUI.FocusControl(null);
                }

                if (GUILayout.Button("-", GUILayout.Width(EditorGUIUtility.singleLineHeight)))
                {
                    action.keys.RemoveAt(i);
                }

                EndHorizontal();
            }

            if (GUILayout.Button("+"))
            {
                action.keys.Add(default);