Skip to content

Controls

Adrià edited this page Nov 14, 2026 · 1 revision

Keyboard and mouse

Key Switch button In a race
W A S D left stick steer
Arrow keys, mouse right stick camera (MOUSE_SENS)
Space, Enter, E A accelerate; confirm in menus
Left Shift, Backspace B brake, reverse; back in menus
V X rear view
Left click Y world map (free roam)
F, X, R ZR / R hop, drift, charge jump, trick
Q, Z, right click L / ZL use an item
1 2 3 4 D-pad left, up, right, down down rewinds; all move in menus
Tab + pause; the LAN host starts the race with it
M − photo mode
Left Ctrl, C stick clicks

The keyboard is always player 1.

Hotkeys

Key
F1 (or − and + held together on a controller) open or close the settings menu; L/R or Q/E switch tabs
Esc open or close the menu, release the mouse (click the window to capture it again)
F10 (or both stick clicks) performance overlay: off, fps, full
F11 fullscreen on or off
F2 turbo, if TURBO is on
F3 / F4 freeze / one frame, if FREEZE_KEYS = 1

Remapping

F1 → Controls → Buttons: a row per action with Key 1, Key 2 and Controller. Select a cell, press A or Enter, then the new key, mouse button or controller button (Esc cancels, it also gives up after 5 s). Delete or X clears a cell. A key already in use moves to the new action; a controller button swaps with the one it replaces. Reset all buttons restores the defaults. F1, F8, F10, F11 and Esc cannot be bound.

By hand in mkw.ini: BIND_<ACTION> = key:<name>, pad:<name>, for example BIND_ZR = key:f, pad:zr. key:default, pad:default and none also work; stick directions take keys only.

  • Actions: A B X Y L R ZL ZR PLUS MINUS LEFT UP RIGHT DOWN LCLICK RCLICK, LSTICK_LEFT/UP/RIGHT/DOWN, RSTICK_LEFT/UP/RIGHT/DOWN.
  • Pad names: south east west north l r zl zr lstick rstick start back dpad_left dpad_up dpad_right dpad_down.
  • Key names: a–z, 0–9, space tab enter backspace lshift rshift lctrl rctrl lalt capslock up down left right insert delete home end pageup pagedown f2–f7 f9 f12 num0–num9 minus equals comma period slash …, mouse mouse_l mouse_r mouse_m mouse_x1 mouse_x2.

Controllers

Any controller SDL 3 knows works (Xbox, PlayStation, Switch Pro, 8BitDo, Steam Deck …). Buttons go by position: PAD_LAYOUT = nintendo puts A on the right face button, xbox on the bottom one; auto picks by the controller's labels. Gyro steering, rumble strength and curve, trigger rumble and the stick dead zone are in F1 → Controls.

If an Xbox Elite controller sends every stick move twice, turn Steam Input off for it, or set SDL_JOYSTICK_HIDAPI_XBOX_ONE=0.

Switch 2 controllers (Pro Controller 2, Joy-Con 2, GameCube)

  • Bluetooth: turn on F1 → Controls → Switch 2 controllers (Bluetooth) (SWITCH2 = 1), restart, then hold the controller's Sync button with the game open. Gyro and rumble work. If nothing happens, set SWITCH2 = 2: the log lists every Bluetooth device it sees. Windows' Bluetooth stack tops out at about 60–70 reports a second.
  • USB-C on Linux: needs the system's libusb-1.0 and udev permissions (Steam's rules give them).
  • USB-C on Windows: install the WinUSB driver once with Zadig on Interface 1 of USB ID 057E 2069 (Pro Controller 2; Joy-Con 2066/2067, GameCube 2073), not Interface 0. See the README's "Switch 2 controllers over USB on Windows".

Rumble is two standard motors, not HD Rumble 2's waveforms.

Local multiplayer (split screen)

Each player needs a controller of their own, connected before you choose 2, 3 or 4 players. The keyboard only counts for player 1, so one controller plus the keyboard is one player: the game asks for more controllers and goes back to the title (the log says hid: controller applet asks for 2-2 players, 1 with a controller). From v0.1.9 the screen says how many controllers are missing.

Two players run at 60 fps; three and four players run at 30, like the console.

Clone this wiki locally