Controls, Button Prompts & Key Remapping

How XC2 Recomp merges SDL3 gamepads, keyboard, and mouse camera input into a single controller, redraws on-screen button glyphs for Xbox, PlayStation, and Keyboard, and remaps every button live.

  • Input engine: SDL3 + Win32 / X11 / Wayland
  • Button prompts: auto, xbox, playstation, switch, keyboard
  • Settings shortcut: F1, Esc, or Minus + Plus
  • Overlay shortcut: F10 or L3 + R3
Wireless Pro Controller showing twin analog thumbsticks, D-pad and ABXY face buttons
SDL3 gamepad input with automatic Nintendo, Xbox and PlayStation button prompts

Default gamepad, keyboard & mouse control table

Input in XC2 Recomp merges the first connected SDL3 gamepad, keyboard, and mouse into a single Switch controller (runtime/input_win.c). Buttons are ORed together, and each analog stick uses whichever input source currently has the largest deflection:

Switch InputGamepad (Nintendo Position)Keyboard & Mouse DefaultIn-Game Action
Left StickLeft analog stickW A S D (hold walk_key to walk)Character movement
Right StickRight analog stickMouse movement · Arrow keys as secondary sourceCamera rotation
AEast face button (South on xbox layout)EInteract, confirm, pick up, Blade Specials
BSouth face button (East on xbox layout)Left ShiftCancel, Driver Art
XNorth face button (West on xbox layout)SpaceJump, Driver Art
YWest face button (North on xbox layout)Left Mouse ButtonDriver Art, field action
L / RLeft / Right shoulder bumpersQ / RTarget cycle, menu tab left/right
ZL / ZRLeft / Right triggers (> 50% pull)Right Mouse Button or Z / F or XBlade switch / Party commands, menu page turn
L3 (Left Stick Click)Left stick pressLeft CtrlField action / stick press
R3 (Right Stick Click)Right stick pressCCenter camera behind player
D-Pad Left / Up / Right / DownD-Pad directions1 2 3 4Blade switch / quick-select
Plus (+) / Minus (-)Start / Back (Select)Tab / MMain menu / Map

Window shortcuts & in-game overlay hotkeys

Keyboard KeyController ComboFunction
F1 or EscMinus + Plus togetherOpens or closes the Dear ImGui settings menu (blocks game input and releases mouse cursor while open; Minus+Plus never leaks to the game).
F10L3 + R3 (both stick clicks)Cycles the top-right performance overlay: off → fps → full (frame rate, mean frame time, longest frame time).
F11—Toggles borderless fullscreen on or off and saves fullscreen = 1/0 to xc2.ini immediately.

Button layout (pad_layout) vs on-screen prompts (prompts)

Two separate settings in the F1 → Controls tab (or under [input] in xc2.ini) control how face buttons behave and what icons the game draws in tutorials and battle HUDs:

  • pad_layout = auto (or nintendo / xbox): Chooses which physical face button acts as Switch A. In nintendo mode, East is A and South is B (matching a Switch Pro Controller). In xbox mode, South is A, East is B, West is X, and North is Y (matching Xbox labels and PlayStation Cross/Circle). auto picks nintendo for Switch Pro / Nintendo-layout pads and xbox for Xbox and PlayStation controllers.
  • prompts = auto (or xbox / playstation / keyboard / switch): During installation, tools/xc2_prompts.py builds redrawn button glyph sheets (using CC0 Kenney Input Prompts artwork) into prompts/ next to xc2.exe and rewrites tutorial text so right-stick click prompts show C instead of the mouse. When no DLC is installed, the port mounts a virtual empty add-on pack (pack 98, fixed in v0.1.10) solely to deliver these button prompt files without altering save compatibility.

Remapping buttons, fixing swapped GuliKit pads & mouse camera tuning

Every Switch button and stick direction can be rebound in F1 → Controls or by adding bind_<BUTTON> lines to xc2.ini. The menu also supports back paddles on Xbox Elite, DualSense Edge, and Steam Controller (pad:lpaddle1, pad:rpaddle1, pad:lpaddle2, pad:rpaddle2):

# Fix controllers that report A/B and X/Y swapped (such as some GuliKit modes):
bind_A = pad:south, key:E
bind_B = pad:east, key:lshift
bind_X = pad:west, key:space
bind_Y = pad:north, key:mouse_l

# Rumble & Xbox impulse triggers
rumble = 1
rumble_strength = 130      # 0 to 300 percent (default 130)
rumble_curve = 0.6         # 0.2 to 1.5 amplitude exponent (lower boosts subtle vibrations)
rumble_triggers = 1        # Drives Xbox controller impulse triggers

# Dead zones, mouse camera & keyboard walk modifier
stick_deadzone = 8         # 0 to 50 percent circular dead zone (or lstick_deadzone / rstick_deadzone)
mouse_sens = 1             # 0 to 10 (0 disables mouse camera and cursor capture; fixed in v0.1.3 for fast turns)
walk_key = lalt            # Hold Left Alt so WASD walks instead of running
walk_scale = 0.51          # 0.51 ensures 32767 * 0.51 exceeds the 16384 threshold for stick direction bits

XC2 Recomp uses SDL3 controller input with automatic Nintendo, Xbox and PlayStation button prompt generation (plus custom rumble curve and Xbox impulse trigger options):

ControllerBest For in XC2 RecompHardware AdvantageLink
8BitDo Ultimate 2 WirelessNintendo layout & Windows/Deck dockZero-drift TMR sticks, charging dock, native Switch/XInput mode toggleView on Amazon
GameSir Cyclone 21000 Hz Blade combo cancelingTMR sticks, micro-switch ABXY buttons and 1000 Hz wireless dongleView on Amazon
Sony DualSensePlayStation button promptsAutomatic PlayStation icon rendering in XC2 tutorials and Driver Arts HUDView on Amazon
Xbox Wireless ControllerXbox prompts & impulse triggersSupports rumble_triggers = 1 in xc2.ini with redrawn Xbox button glyphsView on Amazon

As an Amazon Associate, this site earns from qualifying purchases.

Mountain peaks rising above a dense sea of clouds at sunrise
Karst peaks emerging above a morning sea of clouds, echoing the Cloud Sea Titans of Alrest
Natural green emerald crystal prism embedded in dark mineral matrix
Hexagonal emerald crystal prism in matrix, echoing the Aegis Core Crystal geometry
Desktop gaming PC workstation with dual monitors and tempered glass chassis
Windows 10/11 x64 desktop workstation for Vulkan 1.3, AMD FSR 3.1/4 and 3040x1710 internal rendering

Common questions

How do I release the mouse cursor when playing with keyboard and mouse?

Press Esc (or F1) at any time. Opening the settings menu releases the cursor and pauses mouse camera capture so you can move, resize, or close the window. Clicking back inside the game’s client area captures the cursor again without sending that click into the game.

How do I calibrate a controller with stick drift?

Open F1 → Controls with your gamepad connected. The Left stick dead zone and Right stick dead zone rows display a live stick now resting deflection percentage before the dead zone is applied. Let go of the stick and set that stick’s dead zone a few percent above its resting readout.