Mapping Config Reference

An optional --mapping TOML file overrides the default button/axis pass-through with remapping, gyro mouse, stick modes, layers, and macros.

Top-level Fields

name = "fps"
FieldTypeDescription
namestringMapping profile name

[remap]

Top-level button remapping (active when no layer overrides). Keys are ButtonId names, values are target button names, KEY_* codes, mouse_left/mouse_right/mouse_middle/mouse_side, disabled, or macro:<name>.

[remap]
M1 = "KEY_F13"
M2 = "mouse_side"
M3 = "disabled"
A = "B"
M4 = "macro:dodge_roll"

[gyro]

Global gyro-to-mouse configuration.

[gyro]
mode = "mouse"
activate = "L3"
sensitivity = 2.0
deadzone = 300
smoothing = 0.4
curve = 1.0
invert_y = true
FieldTypeDefaultDescription
modestring"off""off" or "mouse"
activatestringButton name to hold for activation (e.g. "L3", "hold_RB")
sensitivityfloatOverall sensitivity multiplier
sensitivity_xfloatX-axis sensitivity override
sensitivity_yfloatY-axis sensitivity override
deadzoneintegerRaw gyro deadzone threshold
smoothingfloatSmoothing factor (0–1)
curvefloatAcceleration curve exponent
max_valfloatMaximum output value cap
invert_xboolInvert X axis
invert_yboolInvert Y axis

[stick.left] / [stick.right]

Per-stick mode configuration.

[stick.left]
mode = "gamepad"
deadzone = 128
sensitivity = 1.0

[stick.right]
mode = "mouse"
sensitivity = 2.5
deadzone = 100
suppress_gamepad = true
FieldTypeDefaultDescription
modestring"gamepad""gamepad", "mouse", or "scroll"
deadzoneintegerStick deadzone threshold
sensitivityfloatSensitivity multiplier
suppress_gamepadboolSuppress gamepad axis output when in mouse/scroll mode

[dpad]

D-pad mode configuration.

[dpad]
mode = "gamepad"
FieldTypeDefaultDescription
modestring"gamepad""gamepad" or "arrows" (emits arrow keys)
suppress_gamepadboolSuppress gamepad d-pad output when in arrows mode

[[layer]]

Each layer defines an activation condition and overrides for remap, gyro, sticks, and d-pad. Layers are evaluated in declaration order.

[[layer]]
name = "fps"
trigger = "LM"
activation = "hold"
tap = "mouse_side"
hold_timeout = 200
FieldTypeRequiredDescription
namestringyesUnique layer identifier
triggerstringyesButton name that activates this layer
activationstringno"hold" (default) or "toggle"
tapstringnoButton/key emitted on short press (when using hold activation)
hold_timeoutintegernoHold detection threshold in ms (1–5000)

[layer.remap]

Per-layer button remapping. Same syntax as top-level [remap].

[layer.remap]
RT = "mouse_left"
A = "KEY_R"

[layer.gyro]

Per-layer gyro override. Same fields as [gyro].

[layer.gyro]
mode = "mouse"
sensitivity = 8.0
deadzone = 40
smoothing = 0.4
invert_y = true

[layer.stick_left] / [layer.stick_right]

Per-layer stick overrides. Same fields as [stick.left]/[stick.right].

[layer.stick_right]
mode = "mouse"
sensitivity = 2.5
deadzone = 100
suppress_gamepad = true

[layer.dpad]

Per-layer d-pad override. Same fields as [dpad].

[layer.dpad]
mode = "arrows"
suppress_gamepad = true

[layer.adaptive_trigger]

Per-layer adaptive trigger override. Same fields as top-level [adaptive_trigger].

[adaptive_trigger]

DualSense adaptive trigger configuration.

[adaptive_trigger]
mode = "feedback"

[adaptive_trigger.left]
position = 70
strength = 200

[adaptive_trigger.right]
position = 40
strength = 180
FieldTypeDefaultDescription
modestring"off""off", "feedback", "weapon", or "vibration"
command_prefixstring"adaptive_trigger_"Command template prefix in device config

[adaptive_trigger.left] / [adaptive_trigger.right]

FieldTypeDescription
positionintegerTrigger position threshold
strengthintegerResistance strength
startintegerStart position (weapon mode)
endintegerEnd position (weapon mode)
amplitudeintegerVibration amplitude
frequencyintegerVibration frequency

[[macro]]

Named sequences of input steps bound via macro:<name> in remap values.

[[macro]]
name = "dodge_roll"
steps = [
    { tap = "B" },
    { delay = 50 },
    { tap = "LEFT" },
]

[[macro]]
name = "shift_hold"
steps = [
    { down = "KEY_LEFTSHIFT" },
    "pause_for_release",
    { up = "KEY_LEFTSHIFT" },
]

Step types:

StepDescription
{ tap = "KEY" }Press and release a key
{ down = "KEY" }Press and hold a key
{ up = "KEY" }Release a key
{ delay = N }Wait N milliseconds
"pause_for_release"Wait until the trigger button is released

Bind a macro in remap: M1 = "macro:dodge_roll"