Find your guide
Download

Independent port guide.
No Nintendo affiliation.

INDEPENDENT PORT GUIDE

Keyboard, controller and GameCube controls

Updated · Covers WindowSmash v0.2.0-alpha.1 and OpenSmash runtime-c2ca705

Choose your project before changing a binding or adapter driver. The keyboard shoulder buttons differ, and the Windows GameCube paths require different modes and drivers.

Keyboard defaults by project

WindowSmash

Switch input Default keyboard input
Left stick Arrow keys
A / B / X / Y Z / X / C / V
L / R A / S
ZL / ZR Q / W
Right stick I / J / K / L
+ / − Enter / Backspace
Switch input Default keyboard input
Switch inputLeft stick Default keyboard inputArrow keys
Switch inputA / B / X / Y Default keyboard inputZ / X / C / V
Switch inputL / R Default keyboard inputA / S
Switch inputZL / ZR Default keyboard inputQ / W
Switch inputRight stick Default keyboard inputI / J / K / L
Switch input+ / − Default keyboard inputEnter / Backspace

OpenSmash

Switch input Default keyboard input
Left stick Arrow keys
A / B / X / Y Z / X / C / V
L / R Q / E
ZL / ZR A / S
D-pad left / up / right / down J / I / L / K
Right stick and stick clicks Unbound
+ / − Enter / Backspace
Switch input Default keyboard input
Switch inputLeft stick Default keyboard inputArrow keys
Switch inputA / B / X / Y Default keyboard inputZ / X / C / V
Switch inputL / R Default keyboard inputQ / E
Switch inputZL / ZR Default keyboard inputA / S
Switch inputD-pad left / up / right / down Default keyboard inputJ / I / L / K
Switch inputRight stick and stick clicks Default keyboard inputUnbound
Switch input+ / − Default keyboard inputEnter / Backspace

OpenSmash keyboard input needs window focus. It normally uses the first empty player position after connected controllers. Check that player assignment before treating a keyboard as unresponsive.

Connect and assign a gamepad

WindowSmash

  1. Connect the pad before or during play.
  2. Open Esc → Controllers on Windows/Linux, or press F2 for the device list.
  3. Select the detected pad.
  4. Set its Player assignment if the next free slot is not the one you want.
  5. Choose positional or printed-label face buttons.
  6. Close the settings to test the pad in the game.

Pads normally take the next free player slot, and a reconnected pad gets its previous slot back. An Xbox pad's right-hand B acts as Switch A in positional mode. On Windows, PlayStation/Switch Pro and most non-XInput pads need SDL3.dll next to build/ssbu.exe; rerun the installer if it is missing. Without it, only XInput players 1–4 work. Linux uses its SDL2 path instead.

OpenSmash

On Windows:

  1. Connect the pad.
  2. Open F1 → Controls in the Vulkan menu.
  3. Assign the pad to the intended player slot.
  4. Set the keyboard's player separately if it should share a slot or be disabled.
  5. Return focus to the game to test the buttons.

The file's [players] section uses player1 through player8: auto selects a free slot, a device GUID reserves it, and none leaves it unused. In [keyboard], player = auto takes the first empty position after the pads found at startup; 1–8 merges with that player and none disables it. Linux pads use SDL3; GameCube adapters on Linux still need testing.

Assign an OpenSmash controller on Linux

A GUID is the controller's device identifier. Connect your pad, then use this example to give it player 2 and the keyboard player 1:

  1. Close OpenSmash.
  2. Open a terminal in the OpenSmash project folder.
  3. Run build-linux/work/ssbu_native --pad-test.
  4. Identify your pad by its device name and live button or stick inputs in the output.
  5. Copy the value after GUID for that device.
  6. Press Ctrl+C to stop the test.
  7. Open build-linux/config/controllers.ini.
  8. Under [players], set player2 = YOUR_GUID, replacing YOUR_GUID with the copied value.
  9. Under [keyboard], set player = 1 if you want the keyboard to control player 1.
  10. Save the file.
  11. Run ./play.sh to apply the assignments, including the keyboard's player choice.
  12. Test the pad and keyboard in the game to check that each controls its intended player.

Gamepads and GameCube adapters

Windows path Adapter mode Driver and ownership
Windows pathWindowSmash Adapter modeWii U mode for third-party adapters Driver and ownershipWindows-installed driver; a WinUSB replacement can stop recognition
Windows pathOpenSmash Adapter modeSwitch mode for WUP-028/Mayflash four-port path Driver and ownershipWinUSB; close other programs that hold the adapter

WindowSmash GameCube setup on Windows

  1. Put a third-party adapter in Wii U mode.
  2. Connect the adapter and controller.
  3. Let Windows install its normal adapter driver.
  4. Connect the second grey USB plug if you want wired-controller rumble.
  5. Open the game's Options → Controls to change its native GameCube bindings.

If an earlier WinUSB change prevents detection, open Device Manager, uninstall the WUP-028 device with its driver-removal box selected, then reconnect the adapter. Apply that recovery only to WindowSmash; OpenSmash needs WinUSB.

OpenSmash GameCube setup on Windows

  1. Put a switchable four-port adapter in Switch mode.
  2. Check that the WUP-028/Mayflash adapter has the WinUSB driver required by OpenSmash's direct adapter path.
  3. If WinUSB is absent, use Slippi's install GameCube adapter drivers option for that adapter.
  4. Close other software holding the adapter.
  5. Launch OpenSmash.
  6. Leave gamecube_style = native in the controller file for native GameCube controls.

If that style behaves incorrectly, change it to pro and test again. This WinUSB path is Windows-only; Linux instead needs SDL3 built with libusb support. Do not install a Windows driver on Linux.

WindowSmash uses the game’s native GameCube layout for the adapter. The second, grey USB plug supplies rumble; WaveBird has no rumble. Other pads can use style = gamecube in controllers.ini.

OpenSmash defaults to gamecube_style = native; try gamecube_style = pro if the controller behaves incorrectly. Its direct WinUSB implementation is Windows-only; Linux uses SDL3 with libusb support. WindowSmash Linux uses SDL2.

controllers.ini and remapping

Project/platform Controller file
Project/platformWindowSmash Controller fileRoot controllers.ini in the project, generated on first start
Project/platformOpenSmash Windows Controller file<install location>/config/controllers.ini
Project/platformOpenSmash Linux Controller filebuild-linux/config/controllers.ini

Remap WindowSmash

  1. Open Esc → Controllers on Windows/Linux.
  2. Select the pad to change.
  3. Open Buttons....
  4. Choose the Switch button and replacement pad control shown by the menu.
  5. Restart through Game → Restart the game if the setting is marked next start.

Changes save immediately. On Mac, or for file-only settings, close the game and edit the root file; restart to apply. For example, set layout = labels under [device default] to use printed face-button letters. Set keyboard_player = 0 under [general] to disable the keyboard, or 1–8 to assign it. Use keyboard_player to choose WindowSmash’s keyboard player; OpenSmash uses its own [keyboard] section. Game → the keys shows WindowSmash's keyboard controls.

Remap OpenSmash

For OpenSmash’s Windows Vulkan settings menu:

  1. Open the menu with F1 if it is available in your build.
  2. Select Controls.
  3. Select Change beside one input.
  4. Press the replacement key or controller input.

Use Default to restore that binding. If F1 does not open, close the game and set menu = on in config/graphics.ini. Linux has no F1 menu, so use its file path above.

To change an OpenSmash keyboard binding in either file:

  1. Open the generated controllers.ini for that installation.
  2. Find the [keyboard] section.
  3. Replace one key, for example change A = Z to A = F.
  4. Save the file.
  5. Return focus to the game to test the new key.

The file reloads within about a second. Per-device entries override controller-type entries; check both if a pad mapping does not change. To reset all mappings, close the game, rename the controller file to a backup name, then relaunch so defaults are generated.

Versions covered by this guide

Project Source version Release status and game versions
ProjectWindowSmash Source versiona9aac43 Release status and game versionsNo formal release; v0.2.0-alpha.1 is a prerelease. 11.0.0 and 13.0.5; 13.0.5 has limited match testing. Mac: opening/menus only.
ProjectOpenSmash-Ultimate Source versioneac10a1 Release status and game versionsNo formal release; runtime-c2ca705 is a prerelease. 13.0.4 and 13.0.5 recognised; Linux tested with 13.0.4.

Sources

Back to top