{
    "headerComments": [
        "This is the default GamePad config generated by the game. Do not modify, it is for reference only and will get overwritten.",
        "",
        "You can create your own GamePadConfig_*.json config files, such as GamePadConfig_MyConfigs.json",
        "Multiple config files will be loaded in alphabetical order. (Not counting the Default and AddOns files, which come first/last respectively)",
        "",
        "Indexes for raw button and axis inputs are device dependent.",
        "Each device has a specific 'vendorID' and 'productID' associated with it.",
        "To make a device specific config, set both 'vendorID' and 'productID'.",
        "To make a config for all devices from a vendor (eg. all XBox controllers) only set 'vendorID'.",
        "To make a global config that applies to all devices, do not set either ID.",
        "",
        "Raw Stick Axis values should get mapped into +/-1 range.",
        "Raw Trigger Axis values should get mapped into 0-1 range.",
        "",
        "Config Layout: [] around field type means it's optional",
        "{",
        "    [string] comment",
        "    [string] name",
        "    [string] labelStyle",
        "    [array] rawButtonMappings {",
        "        [string] comment",
        "        int      rawIndex",
        "        [string] button",
        "        [string] axis (must be set along with axisValue)",
        "        [float]  axisValue",
        "    }",
        "    [array] rawAxisMappings {",
        "        [string] comment",
        "        int      rawIndex",
        "        string   axis",
        "    }",
        "    [array] axisConfigs {",
        "        [string] comment",
        "        string   axis",
        "        [float]  shift (Value shift when mapping from a raw axis)",
        "        [float]  scale (Value scale when mapping from a raw axis)",
        "        [float]  deadzone (deadzone applied when mapping from a raw axis)",
        "        [float]  buttonThreshold (Must be set if setting buttonPos or buttonNeg)",
        "        [string] buttonPos",
        "        [string] buttonNeg",
        "    }",
        "    [array] stickConfigs {",
        "        [string] comment",
        "        string   stick",
        "        [string] axisX",
        "        [string] axisY",
        "        [float]  deadzone (2D deadzone applied when normalizing the stick input length)",
        "        [float]  deadzoneX (X axis deadzone applied when mapping to stick)",
        "        [float]  deadzoneY (Y axis deadzone applied when mapping to stick)",
        "    }",
        "",
        "Valid values for each type of enumerated field:",
        "----------------------------------------",
        "'labelStyle' values:",
        "Generic",
        "Letters",
        "Reverse",
        "Shapes",
        "----------------------------------------",
        "'axis' values: (Also 'axisX' and 'axisY' in stickConfigs)",
        "LStickX",
        "LStickY",
        "RStickX",
        "RStickY",
        "GStickX",
        "GStickY",
        "PStickX",
        "PStickY",
        "LTrigger",
        "RTrigger",
        "----------------------------------------",
        "'button' values: (Also 'buttonPos' and 'buttonNeg' in axisConfigs)",
        "PADDUP           (or Up)",
        "PADDRIGHT        (or Right)",
        "PADDDOWN         (or Down)",
        "PADDLEFT         (or Left)",
        "PAD1             (or Face1)",
        "PAD2             (or Face2)",
        "PAD3             (or Face3)",
        "PAD4             (or Face4)",
        "PAD5             (or Face5)",
        "PAD6             (or Face6)",
        "PADLSTICK        (or LStickIn)",
        "PADRSTICK        (or RStickIn)",
        "PADLSHOULDER     (or LShoulder)",
        "PADRSHOULDER     (or RShoulder)",
        "PADLTRIGGER      (or LTrigger)",
        "PADRTRIGGER      (or RTrigger)",
        "PADLSTICKUP      (or LStickUp)",
        "PADLSTICKRIGHT   (or LStickRight)",
        "PADLSTICKDOWN    (or LStickDown)",
        "PADLSTICKLEFT    (or LStickLeft)",
        "PADRSTICKUP      (or RStickUp)",
        "PADRSTICKRIGHT   (or RStickRight)",
        "PADRSTICKDOWN    (or RStickDown)",
        "PADRSTICKLEFT    (or RStickLeft)",
        "PADPADDLE1       (or Paddle1)",
        "PADPADDLE2       (or Paddle2)",
        "PADPADDLE3       (or Paddle3)",
        "PADPADDLE4       (or Paddle4)",
        "PADFORWARD       (or Forward)",
        "PADBACK          (or Back)",
        "PADSYSTEM        (or System)",
        "PADSOCIAL        (or Social)",
        "----------------------------------------",
        "'stick' values:",
        "Left",
        "Right",
        "Gyro",
        "Pad",
        "Movement",
        "Camera",
        "Look",
        "Cursor"
    ],
    "configVersion": 3,
    "configs": [
        {
            "separator": "================================================================================",
            "name": "All Devices",
            "axisConfigs": [
                {
                    "axis": "LStickX",
                    "deadzone": 0.05
                },
                {
                    "axis": "LStickY",
                    "deadzone": 0.05
                },
                {
                    "axis": "RStickX",
                    "deadzone": 0.05
                },
                {
                    "axis": "RStickY",
                    "deadzone": 0.05
                },
                {
                    "axis": "GStickX",
                    "deadzone": 0.01
                },
                {
                    "axis": "GStickY",
                    "deadzone": 0.01
                },
                {
                    "axis": "LTrigger",
                    "deadzone": 0.12,
                    "buttonThreshold": 0.5,
                    "buttonPos": "PADLTRIGGER"
                },
                {
                    "axis": "RTrigger",
                    "deadzone": 0.12,
                    "buttonThreshold": 0.5,
                    "buttonPos": "PADRTRIGGER"
                }
            ],
            "stickConfigs": [
                {
                    "stick": "Left",
                    "axisX": "LStickX",
                    "axisY": "LStickY",
                    "deadzone": 0.25
                },
                {
                    "stick": "Right",
                    "axisX": "RStickX",
                    "axisY": "RStickY",
                    "deadzone": 0.25
                },
                {
                    "stick": "Gyro",
                    "axisX": "GStickX",
                    "axisY": "GStickY"
                },
                {
                    "stick": "Pad",
                    "axisX": "PStickX",
                    "axisY": "PStickY"
                },
                {
                    "stick": "Movement",
                    "axisX": "LStickX",
                    "axisY": "LStickY",
                    "deadzone": 0.25
                },
                {
                    "stick": "Camera",
                    "axisX": "RStickX",
                    "axisY": "RStickY",
                    "deadzoneX": 0.05,
                    "deadzoneY": 0.2,
                    "deadzone": 0.25
                },
                {
                    "stick": "Look",
                    "axisX": "GStickX",
                    "axisY": "GStickY"
                },
                {
                    "stick": "Cursor",
                    "axisX": "RStickX",
                    "axisY": "RStickY"
                }
            ]
        }
    ]
}