Quick answer: Enable Steam Input in Steamworks and upload a default .vdf configuration. Steam translates Switch/PS/Xbox controllers to a unified action set your game reads.

Steam player on a Switch Pro controller plays your game. A button does the wrong action. Stick directions are swapped. Steam Input was supposed to fix this but isn’t engaged for your game.

Enable Steam Input in Steamworks

  1. Steamworks → Application → Steam Input.
  2. Set Steam Input Configuration to On (mandatory for Switch Pro support).
  3. Upload a default config .vdf describing your action sets.

Without this, Steam doesn’t translate Switch Pro buttons; players see raw mappings.

Action Set vs Raw Input

Steam Input groups actions into action sets (Gameplay, UI, Vehicle). Each action has a default binding per controller type. The Steam Input API gives your game “Jump pressed” regardless of which button on which controller the player used.

Switching from raw XInput to Steam Input actions means rewriting input handling once but supporting every controller automatically.

Default Configuration VDF

// my_game_config.vdf (excerpt)
"actions"
{
    "InGameControls"
    {
        "Button_Jump" "button_a"
        "Button_Attack" "button_x"
        "Move" "leftStick"
    }
}

Steam uses this as the starting point for all controllers. Players can edit via the in-Steam Configurator.

API Calls

SteamInput()->Init();
InputHandle_t handles[STEAM_INPUT_MAX_COUNT];
int count = SteamInput()->GetConnectedControllers(handles);

for (int i = 0; i < count; ++i) {
    SteamInput()->ActivateActionSet(handles[i], GameplayActionSet);
    InputDigitalActionData_t jumpData = SteamInput()->GetDigitalActionData(handles[i], JumpAction);
    if (jumpData.bState) DoJump();
}

Standard Steam Input lifecycle. ActionHandles obtained from string names at startup.

Verifying

Test with Switch Pro, Xbox, and PS5 controllers. All should produce the same gameplay actions. Steam Configurator visible in the overlay shows live binding state — verify each controller maps correctly to default actions.

“Steam Input is the cross-controller compatibility layer. Enable it in Steamworks; rewrite input to actions; Switch Pro just works.”

For Steam Deck releases especially, Steam Input is not optional — the Deck’s gyro, trackpads, and back paddles need it for full support.