public override void OnInspectorGUI()
    {
        m_KeyboardUI = (KeyboardUI)target;

        var labelWidth = EditorGUIUtility.labelWidth;

        EditorGUIUtility.labelWidth = 100f;
        serializedObject.Update();
        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("Button");
        EditorGUILayout.LabelField("Vertical Slots");
        EditorGUILayout.LabelField("Horizontal Slots");
        EditorGUILayout.EndHorizontal();
        for (int i = 0; i < m_ButtonsProperty.arraySize; i++)
        {
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.PropertyField(m_ButtonsProperty.GetArrayElementAtIndex(i));
            EditorGUILayout.PropertyField(m_VerticalLayoutTransformsProperty.GetArrayElementAtIndex(i), GUIContent.none);
            EditorGUILayout.PropertyField(m_HorizontalLayoutTransformsProperty.GetArrayElementAtIndex(i), GUIContent.none);
            EditorGUILayout.EndHorizontal();
        }
        EditorGUILayout.PropertyField(m_DirectManipulatorProperty);
        EditorGUILayout.PropertyField(m_SmoothMotionProperty);

        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("Vertical layout"))
        {
            m_KeyboardUI.ForceMoveButtonsToVerticalLayout();
        }
        if (GUILayout.Button("Horizontal layout"))
        {
            m_KeyboardUI.ForceMoveButtonsToHorizontalLayout();
        }
        EditorGUILayout.EndHorizontal();

        serializedObject.ApplyModifiedProperties();
        EditorGUIUtility.labelWidth = labelWidth;
    }