{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://ryujinx.org/_schema/config.json",
  "type": "object",
  "title": "Ryujinx Configuration Schema",
  "required": [
    "graphics_shaders_dump_path",
    "logging_enable_debug",
    "logging_enable_stub",
    "logging_enable_info",
    "logging_enable_warn",
    "logging_enable_error",
    "logging_enable_guest",
    "logging_enable_fs_access_log",
    "logging_filtered_classes",
    "enable_file_log",
    "system_language",
    "system_region",
    "docked_mode",
    "enable_vsync",
    "enable_ptc",
    "enable_fs_integrity_checks",
    "fs_global_access_log_mode",
    "enable_keyboard",
    "keyboard_config",
    "controller_config"
  ],
  "definitions": {
    "key": {
      "type": "string",
      "enum": [
        "ShiftLeft",
        "LShift",
        "ShiftRight",
        "RShift",
        "ControlLeft",
        "LControl",
        "ControlRight",
        "RControl",
        "AltLeft",
        "LAlt",
        "AltRight",
        "RAlt",
        "WinLeft",
        "LWin",
        "WinRight",
        "RWin",
        "Menu",
        "F1",
        "F2",
        "F3",
        "F4",
        "F5",
        "F6",
        "F7",
        "F8",
        "F9",
        "F10",
        "F11",
        "F12",
        "F13",
        "F14",
        "F15",
        "F16",
        "F17",
        "F18",
        "F19",
        "F20",
        "F21",
        "F22",
        "F23",
        "F24",
        "F25",
        "F26",
        "F27",
        "F28",
        "F29",
        "F30",
        "F31",
        "F32",
        "F33",
        "F34",
        "F35",
        "Up",
        "Down",
        "Left",
        "Right",
        "Enter",
        "Escape",
        "Space",
        "Tab",
        "BackSpace",
        "Back",
        "Insert",
        "Delete",
        "PageUp",
        "PageDown",
        "Home",
        "End",
        "CapsLock",
        "ScrollLock",
        "PrintScreen",
        "Pause",
        "NumLock",
        "Clear",
        "Sleep",
        "Keypad0",
        "Keypad1",
        "Keypad2",
        "Keypad3",
        "Keypad4",
        "Keypad5",
        "Keypad6",
        "Keypad7",
        "Keypad8",
        "Keypad9",
        "KeypadDivide",
        "KeypadMultiply",
        "KeypadSubtract",
        "KeypadMinus",
        "KeypadAdd",
        "KeypadPlus",
        "KeypadDecimal",
        "KeypadPeriod",
        "KeypadEnter",
        "A",
        "B",
        "C",
        "D",
        "E",
        "F",
        "G",
        "H",
        "I",
        "J",
        "K",
        "L",
        "M",
        "N",
        "O",
        "P",
        "Q",
        "R",
        "S",
        "T",
        "U",
        "V",
        "W",
        "X",
        "Y",
        "Z",
        "Number0",
        "Number1",
        "Number2",
        "Number3",
        "Number4",
        "Number5",
        "Number6",
        "Number7",
        "Number8",
        "Number9",
        "Tilde",
        "Grave",
        "Minus",
        "Plus",
        "BracketLeft",
        "LBracket",
        "BracketRight",
        "RBracket",
        "Semicolon",
        "Quote",
        "Comma",
        "Period",
        "Slash",
        "BackSlash",
        "NonUSBackSlash",
        "LastKey"
      ]
    },
    "input": {
      "type": "string",
      "enum": [
        "Button0",
        "Button1",
        "Button2",
        "Button3",
        "Button4",
        "Button5",
        "Button6",
        "Button7",
        "Button8",
        "Button9",
        "Button10",
        "Button11",
        "Button12",
        "Button13",
        "Button14",
        "Button15",
        "Button16",
        "Button17",
        "Button18",
        "Button19",
        "Button20",
        "Axis0",
        "Axis1",
        "Axis2",
        "Axis3",
        "Axis4",
        "Axis5",
        "Hat0Up",
        "Hat0Down",
        "Hat0Left",
        "Hat0Right",
        "Hat1Up",
        "Hat1Down",
        "Hat1Left",
        "Hat1Right",
        "Hat2Up",
        "Hat2Down",
        "Hat2Left",
        "Hat2Right"
      ]
    },
    "keyboard_config": {
      "type": "object",
      "properties": {
        "index": {
          "$id": "#/definitions/keyboard_config/properties/index",
          "type": "integer",
          "title": "Keyboard Index",
          "description": "Keyboard Device Index",
          "default": 0,
          "minimum": 0,
          "examples": [
            0,
            1,
            2
          ]
        },
        "controller_type": {
          "$id": "#/properties/keyboard_config/properties/controller_type",
          "type": "string",
          "title": "Controller Type",
          "default": "Handheld",
          "enum": [
            "Handheld",
            "ProController",
            "JoyconPair",
            "JoyconLeft",
            "JoyconRight"
          ],
          "examples": [
            "Handheld",
            "ProController",
            "JoyconPair",
            "JoyconLeft",
            "JoyconRight"
          ]
        },
        "player_index": {
          "$id": "#/properties/keyboard_config/properties/player_index",
          "type": "string",
          "title": "Player Index",
          "default": "Player1",
          "enum": [
            "Player1",
            "Player2",
            "Player3",
            "Player4",
            "Player5",
            "Player6",
            "Player7",
            "Player8",
            "Handheld"
          ]
        },
        "left_joycon": {
          "$id": "#/definitions/keyboard_config/properties/left_joycon",
          "type": "object",
          "title": "Left JoyCon Controls",
          "required": [
            "stick_up",
            "stick_down",
            "stick_left",
            "stick_right",
            "stick_button",
            "dpad_up",
            "dpad_down",
            "dpad_left",
            "dpad_right",
            "button_minus",
            "button_l",
            "button_zl"
          ],
          "properties": {
            "stick_up": {
              "$id": "#/definitions/keyboard_config/properties/left_joycon/properties/stick_up",
              "$ref": "#/definitions/key",
              "title": "Stick Up",
              "default": "w"
            },
            "stick_down": {
              "$id": "#/definitions/keyboard_config/properties/left_joycon/properties/stick_down",
              "$ref": "#/definitions/key",
              "title": "Stick Down",
              "default": "S"
            },
            "stick_left": {
              "$id": "#/definitions/keyboard_config/properties/left_joycon/properties/stick_left",
              "$ref": "#/definitions/key",
              "title": "Stick Left",
              "default": "A"
            },
            "stick_right": {
              "$id": "#/definitions/keyboard_config/properties/left_joycon/properties/stick_right",
              "$ref": "#/definitions/key",
              "title": "Stick Right",
              "default": "D"
            },
            "stick_button": {
              "$id": "#/definitions/keyboard_config/properties/left_joycon/properties/stick_button",
              "$ref": "#/definitions/key",
              "title": "Stick Button",
              "default": "F"
            },
            "dpad_up": {
              "$id": "#/definitions/keyboard_config/properties/left_joycon/properties/dpad_up",
              "$ref": "#/definitions/key",
              "title": "Dpad Up",
              "default": "Up"
            },
            "dpad_down": {
              "$id": "#/definitions/keyboard_config/properties/left_joycon/properties/dpad_down",
              "$ref": "#/definitions/key",
              "title": "Dpad Down",
              "default": "Down"
            },
            "dpad_left": {
              "$id": "#/definitions/keyboard_config/properties/left_joycon/properties/dpad_left",
              "$ref": "#/definitions/key",
              "title": "Dpad Left",
              "default": "Left"
            },
            "dpad_right": {
              "$id": "#/definitions/keyboard_config/properties/left_joycon/properties/dpad_right",
              "$ref": "#/definitions/key",
              "title": "Dpad Right",
              "default": "Right"
            },
            "button_minus": {
              "$id": "#/definitions/keyboard_config/properties/left_joycon/properties/button_minus",
              "$ref": "#/definitions/key",
              "title": "Button Minus",
              "default": "Minus"
            },
            "button_l": {
              "$id": "#/definitions/keyboard_config/properties/left_joycon/properties/button_l",
              "$ref": "#/definitions/key",
              "title": "Button L",
              "default": "E"
            },
            "button_zl": {
              "$id": "#/definitions/keyboard_config/properties/left_joycon/properties/button_zl",
              "$ref": "#/definitions/key",
              "title": "Button ZL",
              "default": "Q"
            }
          }
        },
        "right_joycon": {
          "$id": "#/definitions/keyboard_config/properties/right_joycon",
          "type": "object",
          "title": "Right JoyCon Controls",
          "required": [
            "stick_up",
            "stick_down",
            "stick_left",
            "stick_right",
            "stick_button",
            "button_a",
            "button_b",
            "button_x",
            "button_y",
            "button_plus",
            "button_r",
            "button_zr"
          ],
          "properties": {
            "stick_up": {
              "$id": "#/definitions/keyboard_config/properties/right_joycon/properties/stick_up",
              "$ref": "#/definitions/key",
              "title": "Stick Up",
              "default": "I"
            },
            "stick_down": {
              "$id": "#/definitions/keyboard_config/properties/right_joycon/properties/stick_down",
              "$ref": "#/definitions/key",
              "title": "Stick Down",
              "default": "K"
            },
            "stick_left": {
              "$id": "#/definitions/keyboard_config/properties/right_joycon/properties/stick_left",
              "$ref": "#/definitions/key",
              "title": "Stick Left",
              "default": "J"
            },
            "stick_right": {
              "$id": "#/definitions/keyboard_config/properties/right_joycon/properties/stick_right",
              "$ref": "#/definitions/key",
              "title": "Stick Right",
              "default": "L"
            },
            "stick_button": {
              "$id": "#/definitions/keyboard_config/properties/right_joycon/properties/stick_button",
              "$ref": "#/definitions/key",
              "title": "Stick Button",
              "default": "H"
            },
            "button_a": {
              "$id": "#/definitions/keyboard_config/properties/right_joycon/properties/button_a",
              "$ref": "#/definitions/key",
              "title": "Button A",
              "default": "Z"
            },
            "button_b": {
              "$id": "#/definitions/keyboard_config/properties/right_joycon/properties/button_b",
              "$ref": "#/definitions/key",
              "title": "Button B",
              "default": "X"
            },
            "button_x": {
              "$id": "#/definitions/keyboard_config/properties/right_joycon/properties/button_x",
              "$ref": "#/definitions/key",
              "title": "Button X",
              "default": "C"
            },
            "button_y": {
              "$id": "#/definitions/keyboard_config/properties/right_joycon/properties/button_y",
              "$ref": "#/definitions/key",
              "title": "Button Y",
              "default": "V"
            },
            "button_plus": {
              "$id": "#/definitions/keyboard_config/properties/right_joycon/properties/button_plus",
              "$ref": "#/definitions/key",
              "title": "Button Plus",
              "default": "Plus"
            },
            "button_r": {
              "$id": "#/definitions/keyboard_config/properties/right_joycon/properties/button_r",
              "$ref": "#/definitions/key",
              "title": "Button R",
              "default": "U"
            },
            "button_zr": {
              "$id": "#/definitions/keyboard_config/properties/right_joycon/properties/button_zr",
              "$ref": "#/definitions/key",
              "title": "Button Zr",
              "default": "O"
            }
          }
        },
        "enable_motion": {
          "$id": "#/definitions/keyboard_config/properties/enable_motion",
          "type": "boolean",
          "title": "Enable Motion Controls",
          "description": "Enables Motion Controls",
          "default": false,
          "examples": [
            true,
            false
          ]
        },
        "sensitivity": {
          "$id": "#/definitions/keyboard_config/properties/sensitivity",
          "type": "integer",
          "title": "Sensitivity",
          "description": "Gyro sensitivity",
          "default": 100,
          "minimum": 0,
          "maximum": 1000,
          "examples": [
            90,
            100,
            150
          ]
        },
        "gyro_deadzone": {
          "$id": "#/definitions/keyboard_config/properties/gyro_deadzone",
          "type": "number",
          "title": "Gyro Deadzone",
          "description": "Controller Left Analog Stick Deadzone",
          "default": 1,
          "minimum": 0.00,
          "maximum": 100.00,
          "examples": [
            0.01
          ]
        },
        "slot": {
          "$id": "#/definitions/keyboard_config/properties/slot",
          "type": "integer",
          "title": "Slot",
          "description": "DSU motion client slot for main controller",
          "default": 0,
          "minimum": 0,
          "maximum": 4,
          "examples": [
            0,
            1,
            2,
            3
          ]
        },
        "alt_slot": {
          "$id": "#/definitions/keyboard_config/properties/alt_slot",
          "type": "integer",
          "title": "Alternate Slot",
          "description": "DSU motion client slot for secondary controller, eg Right Joycon in Paired mode",
          "default": 0,
          "minimum": 0,
          "maximum": 4,
          "examples": [
            0,
            1,
            2,
            3
          ]
        },
        "mirror_input": {
          "$id": "#/definitions/keyboard_config/properties/mirror_input",
          "type": "boolean",
          "title": "Mirror Motion Input",
          "description": "Mirrors main motion input in Paired mode",
          "default": true,
          "examples": [
            true,
            false
          ]
        },
        "dsu_server_port": {
          "$id": "#/definitions/keyboard_config/properties/dsu_server_port",
          "type": "integer",
          "title": "DSU Server Port",
          "description": "DSU motion server port",
          "default": 26760,
          "minimum": 0,
          "maximum": 36654,
          "examples": [
            0,
            1,
            2,
            3
          ]
        },
        "dsu_server_host": {
          "$id": "#/definitions/keyboard_config/properties/dsu_server_host",
          "type": "string",
          "title": "DSU Server Host Address",
          "description": "DSU motion server host address",
          "default": "127.0.0.1",
          "examples": [
            "127.0.0.1",
            "example.host.com"
          ]
        }
      }
    },
    "controller_config": {
      "type": "object",
      "properties": {
        "index": {
          "$id": "#/definitions/controller_config/properties/index",
          "type": "integer",
          "title": "Controller Index",
          "description": "Controller Device Index",
          "default": 0,
          "minimum": 0,
          "examples": [
            0,
            1,
            2
          ]
        },
        "controller_type": {
          "$id": "#/properties/controller_config/properties/controller_type",
          "type": "string",
          "title": "Controller Type",
          "default": "Handheld",
          "enum": [
            "Handheld",
            "ProController",
            "JoyconPair",
            "JoyconLeft",
            "JoyconRight"
          ],
          "examples": [
            "Handheld",
            "ProController",
            "JoyconPair",
            "JoyconLeft",
            "JoyconRight"
          ]
        },
        "player_index": {
          "$id": "#/properties/controller_config/properties/player_index",
          "type": "string",
          "title": "Player Index",
          "default": "Player1",
          "enum": [
            "Player1",
            "Player2",
            "Player3",
            "Player4",
            "Player5",
            "Player6",
            "Player7",
            "Player8",
            "Handheld"
          ]
        },
        "deadzone_left": {
          "$id": "#/definitions/controller_config/properties/deadzone_left",
          "type": "number",
          "title": "Left Joystick Deadzone",
          "description": "Controller Left Analog Stick Deadzone",
          "default": 0.05,
          "minimum": 0.00,
          "maximum": 1.00,
          "examples": [
            0.05
          ]
        },
        "deadzone_right": {
          "$id": "#/definitions/controller_config/properties/deadzone_right",
          "type": "number",
          "title": "Right Joystick Deadzone",
          "description": "Controller Right Analog Stick Deadzone",
          "default": 0.05,
          "minimum": 0.00,
          "maximum": 1.00,
          "examples": [
            0.05
          ]
        },
        "trigger_threshold": {
          "$id": "#/definitions/controller_config/properties/trigger_threshold",
          "type": "number",
          "title": "Controller Trigger Threshold",
          "description": "The value of how pressed down each trigger has to be in order to register a button press",
          "default": 0.5,
          "minimum": 0.0,
          "maximum": 1.0,
          "examples": [
            0.5
          ]
        },
        "left_joycon": {
          "$id": "#/definitions/controller_config/properties/left_joycon",
          "type": "object",
          "title": "Left JoyCon Controls",
          "required": [
            "stick",
            "stick_button",
            "dpad_up",
            "dpad_down",
            "dpad_left",
            "dpad_right",
            "button_minus",
            "button_l",
            "button_zl"
          ],
          "properties": {
            "stick": {
              "$id": "#/definitions/controller_config/properties/left_joycon/properties/stick",
              "$ref": "#/definitions/input",
              "title": "Stick",
              "default": "Axis0"
            },
            "stick_button": {
              "$id": "#/definitions/controller_config/properties/left_joycon/properties/stick_button",
              "$ref": "#/definitions/input",
              "title": "Stick Button",
              "default": "Button13"
            },
            "dpad_up": {
              "$id": "#/definitions/controller_config/properties/left_joycon/properties/dpad_up",
              "$ref": "#/definitions/input",
              "title": "Dpad Up",
              "default": "Hat0Up"
            },
            "dpad_down": {
              "$id": "#/definitions/controller_config/properties/left_joycon/properties/dpad_down",
              "$ref": "#/definitions/input",
              "title": "Dpad Down",
              "default": "Hat0Down"
            },
            "dpad_left": {
              "$id": "#/definitions/controller_config/properties/left_joycon/properties/dpad_left",
              "$ref": "#/definitions/input",
              "title": "Dpad Left",
              "default": "Hat0Left"
            },
            "dpad_right": {
              "$id": "#/definitions/controller_config/properties/left_joycon/properties/dpad_right",
              "$ref": "#/definitions/input",
              "title": "Dpad Right",
              "default": "Hat0Right"
            },
            "button_minus": {
              "$id": "#/definitions/controller_config/properties/left_joycon/properties/button_minus",
              "$ref": "#/definitions/input",
              "title": "Button Minus",
              "default": "Button10"
            },
            "button_l": {
              "$id": "#/definitions/controller_config/properties/left_joycon/properties/button_l",
              "$ref": "#/definitions/input",
              "title": "Button L",
              "default": "Button6"
            },
            "button_zl": {
              "$id": "#/definitions/controller_config/properties/left_joycon/properties/button_zl",
              "$ref": "#/definitions/input",
              "title": "Button ZL",
              "default": "Button8"
            }
          }
        },
        "right_joycon": {
          "$id": "#/definitions/controller_config/properties/right_joycon",
          "type": "object",
          "title": "Right JoyCon Controls",
          "required": [
            "stick",
            "stick_button",
            "button_a",
            "button_b",
            "button_x",
            "button_y",
            "button_plus",
            "button_r",
            "button_zr"
          ],
          "properties": {
            "stick": {
              "$id": "#/definitions/controller_config/properties/right_joycon/properties/stick",
              "$ref": "#/definitions/input",
              "title": "Stick",
              "default": "Axis2"
            },
            "stick_button": {
              "$id": "#/definitions/controller_config/properties/right_joycon/properties/stick_button",
              "$ref": "#/definitions/input",
              "title": "Stick Button",
              "default": "Button14"
            },
            "button_a": {
              "$id": "#/definitions/controller_config/properties/right_joycon/properties/button_a",
              "$ref": "#/definitions/input",
              "title": "Button A",
              "default": "Button0"
            },
            "button_b": {
              "$id": "#/definitions/controller_config/properties/right_joycon/properties/button_b",
              "$ref": "#/definitions/input",
              "title": "Button B",
              "default": "Button1"
            },
            "button_x": {
              "$id": "#/definitions/controller_config/properties/right_joycon/properties/button_x",
              "$ref": "#/definitions/input",
              "title": "Button X",
              "default": "Button3"
            },
            "button_y": {
              "$id": "#/definitions/controller_config/properties/right_joycon/properties/button_y",
              "$ref": "#/definitions/input",
              "title": "Button Y",
              "default": "Button4"
            },
            "button_plus": {
              "$id": "#/definitions/controller_config/properties/right_joycon/properties/button_plus",
              "$ref": "#/definitions/input",
              "title": "Button Plus",
              "default": "Button11"
            },
            "button_r": {
              "$id": "#/definitions/controller_config/properties/right_joycon/properties/button_r",
              "$ref": "#/definitions/input",
              "title": "Button R",
              "default": "Button7"
            },
            "button_zr": {
              "$id": "#/definitions/controller_config/properties/right_joycon/properties/button_zr",
              "$ref": "#/definitions/input",
              "title": "Button ZR",
              "default": "Button9"
            }
          }
        },
        "enable_motion": {
          "$id": "#/definitions/controller_config/properties/enable_motion",
          "type": "boolean",
          "title": "Enable Motion Controls",
          "description": "Enables Motion Controls",
          "default": false,
          "examples": [
            true,
            false
          ]
        },
        "sensitivity": {
          "$id": "#/definitions/controller_config/properties/sensitivity",
          "type": "integer",
          "title": "Sensitivity",
          "description": "Gyro sensitivity",
          "default": 100,
          "minimum": 0,
          "maximum": 1000,
          "examples": [
            90,
            100,
            150
          ]
        },
        "gyro_deadzone": {
          "$id": "#/definitions/controller_config/properties/gyro_deadzone",
          "type": "number",
          "title": "Gyro Deadzone",
          "description": "Controller Left Analog Stick Deadzone",
          "default": 1,
          "minimum": 0.00,
          "maximum": 100.00,
          "examples": [
            0.01
          ]
        },
        "slot": {
          "$id": "#/definitions/controller_config/properties/slot",
          "type": "integer",
          "title": "Slot",
          "description": "DSU motion client slot for main controller",
          "default": 0,
          "minimum": 0,
          "maximum": 4,
          "examples": [
            0,
            1,
            2,
            3
          ]
        },
        "alt_slot": {
          "$id": "#/definitions/controller_config/properties/alt_slot",
          "type": "integer",
          "title": "Alternate Slot",
          "description": "DSU motion client slot for secondary controller, eg Right Joycon in Paired mode",
          "default": 0,
          "minimum": 0,
          "maximum": 4,
          "examples": [
            0,
            1,
            2,
            3
          ]
        },
        "mirror_input": {
          "$id": "#/definitions/controller_config/properties/mirror_input",
          "type": "boolean",
          "title": "Mirror Motion Input",
          "description": "Mirrors main motion input in Paired mode",
          "default": true,
          "examples": [
            true,
            false
          ]
        },
        "dsu_server_port": {
          "$id": "#/definitions/controller_config/properties/dsu_server_port",
          "type": "integer",
          "title": "DSU Server Port",
          "description": "DSU motion server port",
          "default": 26760,
          "minimum": 0,
          "maximum": 36654,
          "examples": [
            0,
            1,
            2,
            3
          ]
        },
        "dsu_server_host": {
          "$id": "#/definitions/controller_config/properties/dsu_server_host",
          "type": "string",
          "title": "DSU Server Host Address",
          "description": "DSU motion server host address",
          "default": "127.0.0.1",
          "examples": [
            "127.0.0.1",
            "example.host.com"
          ]
        }
      }
    }
  },
  "properties": {
    "res_scale": {
      "$id": "#/properties/res_scale",
      "type": "integer",
      "title": "Resolution Scale",
      "description": "An integer scale applied to applicable render targets. Values 1-4, or -1 to use a custom floating point scale instead.",
      "default": -1,
      "examples": [
        -1,
        1,
        2,
        3,
        4
      ]
    },
    "res_scale_custom": {
      "$id": "#/properties/res_scale_custom",
      "type": "number",
      "title": "Custom Resolution Scale",
      "description": "A custom floating point scale applied to applicable render targets. Only active when Resolution Scale is -1.",
      "default": 1.0
    },
    "max_anisotropy": {
      "$id": "#/properties/max_anisotropy",
      "type": "integer",
      "title": "Max Anisotropy. Values range from 0 - 16. Set to -1 to let the game decide.",
      "description": "Max Anisotropy. Values range from 0 - 16. Set to -1 to let the game decide.",
      "default": -1,
      "examples": [
        -1,
        4,
        8,
        16
      ]
    },
    "aspect_ratio": {
      "$id": "#/properties/aspect_ratio",
      "type": "string",
      "title": "Aspect Ratio applied to the renderer window.",
      "description": "Aspect Ratio applied to the renderer window.",
      "default": "Fixed16x9",
      "examples": [
        "Fixed4x3",
        "Fixed16x9",
        "Fixed16x10",
        "Fixed21x9",
        "Fixed32x9",
        "Stretched"
      ]
    },
    "graphics_shaders_dump_path": {
      "$id": "#/properties/graphics_shaders_dump_path",
      "type": "string",
      "title": "Graphics Shaders Dump Path",
      "description": "Dumps shaders in this local directory",
      "default": "",
      "examples": [
        "C:\\ShaderDumps"
      ]
    },
    "logging_enable_debug": {
      "$id": "#/properties/logging_enable_debug",
      "type": "boolean",
      "title": "Logging Enable Debug",
      "description": "Enables printing debug log messages",
      "default": false,
      "examples": [
        true,
        false
      ]
    },
    "logging_enable_stub": {
      "$id": "#/properties/logging_enable_stub",
      "type": "boolean",
      "title": "Logging Enable Stub",
      "description": "Enables printing stub log messages",
      "default": true,
      "examples": [
        true,
        false
      ]
    },
    "logging_enable_info": {
      "$id": "#/properties/logging_enable_info",
      "type": "boolean",
      "title": "Logging Enable Info",
      "description": "Enables printing info log messages",
      "default": true,
      "examples": [
        true,
        false
      ]
    },
    "logging_enable_warn": {
      "$id": "#/properties/logging_enable_warn",
      "type": "boolean",
      "title": "Logging Enable Warn",
      "description": "Enables printing warning log messages",
      "default": true,
      "examples": [
        true,
        false
      ]
    },
    "logging_enable_error": {
      "$id": "#/properties/logging_enable_error",
      "type": "boolean",
      "title": "Logging Enable Error",
      "description": "Enables printing error log messages",
      "default": true,
      "examples": [
        true,
        false
      ]
    },
    "logging_enable_guest": {
      "$id": "#/properties/logging_enable_guest",
      "type": "boolean",
      "title": "Logging Enable Guest",
      "description": "Enables printing guest log messages",
      "default": true,
      "examples": [
        true,
        false
      ]
    },
    "logging_enable_fs_access": {
      "$id": "#/properties/logging_enable_fs_access_log",
      "type": "boolean",
      "title": "Logging Enable FS Access Log",
      "description": "Enables printing FS access log messages",
      "default": true,
      "examples": [
        true,
        false
      ]
    },
    "logging_filtered_classes": {
      "$id": "#/properties/logging_filtered_classes",
      "type": "array",
      "title": "Logging Filtered Classes",
      "description": "Controls which log messages are written to the log targets",
      "items": {
        "type": "string",
        "enum": [
          "Application",
          "Audio",
          "Cpu",
          "Font",
          "Emulation",
          "Gpu",
          "Hid",
          "Kernel",
          "KernelIpc",
          "KernelScheduler",
          "KernelSvc",
          "Loader",
          "Service",
          "ServiceAcc",
          "ServiceAm",
          "ServiceApm",
          "ServiceAudio",
          "ServiceBsd",
          "ServiceCaps",
          "ServiceFriend",
          "ServiceFs",
          "ServiceHid",
          "ServiceIrs",
          "ServiceLdr",
          "ServiceLm",
          "ServiceMm",
          "ServiceNfp",
          "ServiceNifm",
          "ServiceNs",
          "ServiceNv",
          "ServicePctl",
          "ServicePl",
          "ServicePrepo",
          "ServicePsm",
          "ServiceSet",
          "ServiceSfdnsres",
          "ServiceSm",
          "ServiceSsl",
          "ServiceSss",
          "ServiceTime",
          "ServiceVi"
        ]
      }
    },
    "enable_file_log": {
      "$id": "#/properties/enable_file_log",
      "type": "boolean",
      "title": "Enable File Log",
      "description": "Enables logging to a file on disk",
      "default": true,
      "examples": [
        true,
        false
      ]
    },
    "system_language": {
      "$id": "#/properties/system_language",
      "type": "string",
      "title": "System Language",
      "description": "Change System Language",
      "default": "AmericanEnglish",
      "enum": [
        "Japanese",
        "AmericanEnglish",
        "French",
        "German",
        "Italian",
        "Spanish",
        "Chinese",
        "Korean",
        "Dutch",
        "Portuguese",
        "Russian",
        "Taiwanese",
        "BritishEnglish",
        "CanadianFrench",
        "LatinAmericanSpanish",
        "SimplifiedChinese",
        "TraditionalChinese"
      ],
      "examples": [
        "AmericanEnglish"
      ]
    },
    "system_region": {
      "$id": "#/properties/system_region",
      "type": "string",
      "title": "System Region",
      "description": "Change System Region",
      "default": "USA",
      "enum": [
        "Japan",
        "USA",
        "Europe",
        "Australia",
        "China",
        "Korea",
        "Taiwan"
      ],
      "examples": [
        "USA"
      ]
    },
    "system_time_offset": {
      "$id": "#/properties/system_time_offset",
      "type": "integer",
      "title": "System Time Offset",
      "description": "System time offset in seconds.",
      "default": 0,
      "examples": [
        -3600,
        0,
        3600
      ]
    },
    "docked_mode": {
      "$id": "#/properties/docked_mode",
      "type": "boolean",
      "title": "Enable Docked Mode",
      "description": "Enables or disables Docked Mode",
      "default": true,
      "examples": [
        true,
        false
      ]
    },
    "enable_discord_integration": {
      "$id": "#/properties/enable_discord_integration",
      "type": "boolean",
      "title": "Enable Discord Rich Presence",
      "description": "Enable or disable Discord Rich Presence",
      "default": true,
      "examples": [
        true,
        false
      ]
    },
    "check_updates_on_start": {
      "$id": "#/properties/check_updates_on_start",
      "type": "boolean",
      "title": "Checks for updates when ryujinx starts when enabled",
      "description": "Checks for updates when ryujinx starts when enabled",
      "default": true,
      "examples": [
        true,
        false
      ]
    },
    "show_confirm_exit": {
      "$id": "#/properties/show_confirm_exit",
      "type": "boolean",
      "title": "Show \"Confirm Exit\" Dialog",
      "description": "Check to shows the \"Confirm Exit\" dialog when closing Ryujinx.",
      "default": true,
      "examples": [
        true,
        false
      ]
    },
      "hide_cursor_on_idle": {
      "$id": "#/properties/hide_cursor_on_idle",
      "type": "boolean",
      "title": "Hide Cursor On Idle",
      "description": "Hides the cursor after being idle for 5 seconds",
      "default": false,
      "examples": [
        true,
        false
      ]
    },
    "enable_vsync": {
      "$id": "#/properties/enable_vsync",
      "type": "boolean",
      "title": "Enable Vertical Sync",
      "description": "Enables or disables Vertical Sync",
      "default": true,
      "examples": [
        true,
        false
      ]
    },
    "enable_ptc": {
      "$id": "#/properties/enable_ptc",
      "type": "boolean",
      "title": "Enable PPTC (Profiled Persistent Translation Cache)",
      "description": "Enables or disables profiled translation cache persistency",
      "default": true,
      "examples": [
        true,
        false
      ]
    },
    "enable_fs_integrity_checks": {
      "$id": "#/properties/enable_fs_integrity_checks",
      "type": "boolean",
      "title": "Enable Filesystem Integrity Checks",
      "description": "Enables integrity checks on Game content files. Only applies to ROMs loaded as XCI files",
      "default": true,
      "examples": [
        true,
        false
      ]
    },
    "fs_global_access_log_mode": {
      "$id": "#/properties/fs_global_access_log_mode",
      "type": "integer",
      "title": "Enable FS access log",
      "description": "Enables FS access log output. Possible modes are 0-3. Modes 2 and 3 output to the console",
      "default": 0,
      "minimum": 0,
      "examples": [
        0,
        1,
        2,
        3
      ]
    },
    "audio_backend": {
      "$id": "#/properties/audio_backend",
      "type": "string",
      "title": "The selected audio backend",
      "description": "The selected audio backend",
      "default": "OpenAl",
      "enum": [
        "Dummy",
        "SoundIo",
        "OpenAl"
      ]
    },
    "ignore_missing_services": {
      "$id": "#/properties/ignore_missing_services",
      "type": "boolean",
      "title": "Ignore Missing Services",
      "description": "Enable or disable ignoring missing services, this may cause instability",
      "default": false,
      "examples": [
        true,
        false
      ]
    },
    "gui_columns": {
      "$id": "#/properties/gui_columns",
      "type": "object",
      "title": "Used to toggle columns in the GUI",
      "description": "Used to toggle columns in the GUI",
      "properties": {
        "fav_column": {
          "$id": "#/properties/gui_columns/properties/fav_column",
          "type": "boolean",
          "title": "",
          "default": true
        },
        "icon_column": {
          "$id": "#/properties/gui_columns/properties/icon_column",
          "type": "boolean",
          "title": "",
          "default": true
        },
        "app_column": {
          "$id": "#/properties/gui_columns/properties/app_column",
          "type": "boolean",
          "title": "",
          "default": true
        },
        "dev_column": {
          "$id": "#/properties/gui_columns/properties/dev_column",
          "type": "boolean",
          "title": "",
          "default": true
        },
        "version_column": {
          "$id": "#/properties/gui_columns/properties/version_column",
          "type": "boolean",
          "title": "",
          "default": true
        },
        "time_played_column": {
          "$id": "#/properties/gui_columns/properties/time_played_column",
          "type": "boolean",
          "title": "",
          "default": true
        },
        "last_played_column": {
          "$id": "#/properties/gui_columns/properties/last_played_column",
          "type": "boolean",
          "title": "",
          "default": true
        },
        "file_ext_column": {
          "$id": "#/properties/gui_columns/properties/file_ext_column",
          "type": "boolean",
          "title": "",
          "default": true
        },
        "file_size_column": {
          "$id": "#/properties/gui_columns/properties/file_size_column",
          "type": "boolean",
          "title": "",
          "default": true
        },
        "path_column": {
          "$id": "#/properties/gui_columns/properties/path_column",
          "type": "boolean",
          "title": "",
          "default": true
        }
      }
    },
    "column_sort": {
      "$id": "#/properties/column_sort",
      "type": "object",
      "title": "Used to configure column sort settings in the GUI",
      "description": "Used to configure column sort settings in the GUI",
      "properties": {
        "sort_column_id": {
          "$id": "#/properties/column_sort/properties/sort_column_id",
          "type": "integer",
          "title": "",
          "default": 0
        },
        "sort_ascending": {
          "$id": "#/properties/column_sort/properties/sort_ascending",
          "type": "boolean",
          "title": "",
          "default": false
        }
      }
    },
    "game_dirs": {
      "$id": "#/properties/game_dirs",
      "type": "array",
      "title": "List of Game Directories",
      "description": "A list of directories containing games to be used to load games into the games list",
      "default": []
    },
    "enable_custom_theme": {
      "$id": "#/properties/enable_custom_theme",
      "type": "boolean",
      "title": "Enable custom themes in the GUI",
      "description": "Enable or disable custom themes in the GUI",
      "default": false,
      "examples": [
        true,
        false
      ]
    },
    "custom_theme_path": {
      "$id": "#/properties/custom_theme_path",
      "type": "string",
      "title": "Path to custom GUI theme",
      "description": "Path to custom GUI theme",
      "default": ""
    },
    "start_fullscreen": {
      "$id": "#/properties/start_fullscreen",
      "type": "boolean",
      "title": "Start games in fullscreen mode",
      "description": "Start games in fullscreen mode",
      "default": false,
      "examples": [
        true,
        false
      ]
    },
    "enable_keyboard": {
      "$id": "#/properties/enable_keyboard",
      "type": "boolean",
      "title": "(HID) Keyboard Enable",
      "description": "Enable or disable direct keyboard access (HID) support (Provides games access to your keyboard as a text entry device)",
      "default": true,
      "examples": [
        true,
        false
      ]
    },
    "hotkeys": {
      "$id": "#/properties/hotkeys",
      "type": "object",
      "title": "Hotkey Controls",
      "required": [
        "toggle_vsync"
      ],
      "properties": {
        "toggle_vsync": {
          "$id": "#/properties/hotkeys/properties/toggle_vsync",
          "$ref": "#/definitions/key",
          "title": "Toggle VSync",
          "default": "Tab"
        }
      }
    },
    "keyboard_config": {
      "$id": "#/properties/keyboard_config",
      "type": "array",
      "title": "Keyboard Config",
      "items": {
        "$ref": "#/definitions/keyboard_config"
      },
      "default": [
        {
          "index": 0,
          "controller_type": "JoyconPair",
          "player_index": "Player1",
          "left_joycon": {
            "stick_up": "W",
            "stick_down": "S",
            "stick_left": "A",
            "stick_right": "D",
            "stick_button": "F",
            "dpad_up": "Up",
            "dpad_down": "Down",
            "dpad_left": "Left",
            "dpad_right": "Right",
            "button_minus": "Minus",
            "button_l": "E",
            "button_zl": "Q",
            "button_sl": "Unbound",
            "button_sr": "Unbound"
          },
          "right_joycon": {
            "stick_up": "I",
            "stick_down": "K",
            "stick_left": "J",
            "stick_right": "L",
            "stick_button": "H",
            "button_a": "Z",
            "button_b": "X",
            "button_x": "C",
            "button_y": "V",
            "button_plus": "Plus",
            "button_r": "U",
            "button_zr": "O",
            "button_sl": "Unbound",
            "button_sr": "Unbound"
          },
          "slot": 0,
          "alt_slot": 0,
          "mirror_input": false,
          "dsu_server_host": "127.0.0.1",
          "dsu_server_port": 26760,
          "sensitivity": 100,
          "gyro_deadzone": 1,
          "enable_motion": false
        }
      ]
    },
    "controller_config": {
      "$id": "#/properties/controller_config",
      "type": "array",
      "title": "Controller Config",
      "items": {
        "$ref": "#/definitions/controller_config"
      },
      "default": []
    }
  }
}