Ocarina Recomp Wiki / Controllers
Ocarina Recomp & Hookshot controller setup
Every button, menu key and remapping option for the three projects, with layouts for Xbox, DualSense, 8BitDo and Steam Deck players.
- SDL controllers
- Keyboard + mouse
- Rebinding
- Rumble
Which controllers work
All three projects read controllers through SDL, so wired and wireless Xbox, PlayStation, 8BitDo, GameSir and Switch Pro pads work out of the box, alongside keyboard and mouse. Hookshot moved to sdl2-compat on SDL 3.4.20 in no-visual-studio, which adds more controllers including the Steam Controller.
| Controller | Why it suits these ports |
|---|---|
| Xbox Wireless Controller | Standard XInput layout; Ocarina Recomp’s auto layout treats it as xbox (south A, east B); rumble and impulse triggers supported. |
| Sony DualSense | Rumble you can feel in Hookshot (since foliage-linux-updater); cross acts as A in the Xbox layout. |
| 8BitDo Ultimate 2 Bluetooth | Made for Switch and Windows. If A/B feel swapped, choose nintendo or xbox as Ocarina Recomp’s Button layout, or rebind on Hookshot’s Controls page. |
| GameSir Cyclone 2 | PC and Switch pad with an Xbox-style layout; works as a standard SDL controller. |
As an Amazon Associate, this site earns from qualifying purchases. Controller links go to Amazon; this site is not connected with the projects or the controller makers.
Ocarina Recomp controls
Input comes from the first SDL3 gamepad, the keyboard and the mouse, merged into one Switch controller. The controls page is inherited from TotK Recomp, so some setting names keep the TOTK_ prefix and live in totk.ini.
| Switch button | Gamepad (Nintendo layout, by position) | Keyboard and mouse |
|---|---|---|
| Left stick | Left stick | W A S D |
| Right stick (camera) | Right stick | Mouse; arrow keys |
| A | East button | E |
| B | South button | Left Shift |
| X | North button | Space |
| Y | West button | Left mouse button |
| L / R | Shoulders | Q / R |
| ZL / ZR | Triggers (over 50%) | Right mouse button, Z / F, X |
| Plus / Minus | Start / Back | Tab / M |
| D-pad | D-pad | 1 2 3 4 |
| Key | Gamepad | Action |
|---|---|---|
| F1 or Esc | Minus + Plus | Open or close the settings menu |
| F10 | L3 + R3 | Performance overlay: off, frame rate, full panel |
| F11 | — | Borderless fullscreen on or off |
Button layout (Controls tab, or pad_layout): nintendo by position; xbox by label (south A); auto (default) picks per pad; xbox_prompts keeps positions and swaps the on-screen letters to match an Xbox pad after a restart.
Remapping: the Controls tab lists every Switch button with two key cells and a controller cell. Select a cell, press A or Enter, then the new input. It writes lines such as bind_A = pad:south, key:E to totk.ini; back paddles (lpaddle1 …) of Elite, DualSense Edge or Steam controllers can be bound too.
Hookshot controls
On the keyboard, W A S D move and the arrow keys turn the camera. Insert opens the menu (Home, or Select + Start, on a pad); Alt+Enter toggles fullscreen. In the menu the D-pad chooses and changes, the bottom face button changes too, and the right one closes it.
The Controls page (since no-visual-studio) rebinds every Switch button on gamepad and keyboard: choose a button and a column, press Enter or the bottom face button, then the new input; Delete clears it. It saves to hookshot_options.ini, where you can also write pad_a=0 or key_a=69,13 by hand:
| pad_ value | Gamepad input (by position) |
|---|---|
| 0 | Bottom face button |
| 1 | Right face button |
| 2 | Left face button |
| 3 | Top face button |
| 4 | Select / Back |
| 5 | Home |
| 6 | Start |
| 7, 8 | Stick presses |
| 9, 10 | Shoulder buttons |
| 11–14 | D-pad up, down, left, right |
| 15, 16 | Triggers |
| -1 | None |
key_ values are one or two Windows virtual-key codes in decimal (69 = E, 13 = Enter). Button names are a b x y l r zl zr plus minus ls rs left up right down.
TriAevum controls
- Esc or R3 opens the in-game menu while the game keeps running: D-pad or sticks to move, A to select, B to go back, LB/RB for tabs.
- F1 shows every setting; F2 temporarily disables the added graphics effects.
- Keyboard/mouse and controller inputs are configurable, with a free camera and photo mode.
Steam Deck and Steam Input
TriAevum’s README recommends adding the AppImage as a non-Steam game and using Steam Input’s Gamepad layout without Proton. The same approach suits Hookshot’s AppImage (--play starts the built game directly). Neither project reports a test on a physical Deck yet; prepare and build in Desktop Mode.
Fixing common controller problems
| Problem | Fix |
|---|---|
| Controller not detected | Connect it before starting the game; on Windows close other programs that take exclusive control (some overlays do). Hookshot fixed a crash at boot with a controller connected (amd-shared-memory). |
| A/B or X/Y swapped | Ocarina Recomp: change Button layout. Hookshot: rebind on the Controls page. Some GuliKit pads report swapped buttons; Ocarina Recomp’s controls guide gives the bind_ lines. |
| Camera too slow with the mouse | Ocarina Recomp: Esc releases the cursor; mouse camera settings are in the menu. Hookshot: arrow keys or the right stick. |
| Steam overlay remaps buttons | Turn Steam Input on or off for that shortcut so only one layer translates the pad. |
Frequently asked questions
What is the best controller for Ocarina Recomp and Hookshot?
Any pad SDL recognises works. An Xbox Wireless Controller needs no setup on Windows; a DualSense adds rumble in Hookshot; an 8BitDo Ultimate 2 Bluetooth suits players who also use it on a Switch. Keyboard and mouse are supported too.
How do I open the menu with a controller?
Hookshot: Home, or Select and Start together. Ocarina Recomp: Minus and Plus together (F1 or Esc on the keyboard). TriAevum: R3 (Esc on the keyboard), F1 for every setting.
A and B are swapped on my controller. How do I fix it?
In Ocarina Recomp, set the Button layout row on the Controls tab: nintendo (by position), xbox (by label), auto, or xbox_prompts. In Hookshot, open the Insert menu’s Controls page and rebind, or edit pad_a / pad_b in hookshot_options.ini.
Does rumble work?
Hookshot added rumble for DualSense, Xbox and other SDL controllers in foliage-linux-updater. Ocarina Recomp supports rumble with adjustable strength (TOTK_RUMBLE_STRENGTH, 0–300%, default 130) and Xbox impulse triggers (TOTK_RUMBLE_TRIGGERS=1).
Can I play with the controller while another window has focus?
Hookshot: yes, since no-visual-studio the controller keeps working in the background (#359). Ocarina Recomp: keys and mouse count only while the game window is in front.