LegoToypad app Version 1.5 (Nevercookfirst improvements)
What Changed?
- One-press pad actions
With a pad focused you no longer have to open the Load/Move/Clear bar: X picks that pad's figure up and goes straight to choosing where it lands, RB jumps straight into figure selection for that pad, and LB clears it.
- Keyboard equivalents for the same three: M, L and C.
These are suppressed while a Move destination is being picked, so they can't interrupt a move halfway through.
- Story mode
New Character selection setting: All series (the existing world grid) or Story (starter pack only).
In story mode, picking a figure skips the series grid entirely and shows just Batman, Gandalf The Grey, Wyldstyle and the Batmobile — the cast the campaign starts you with. Back from that roster returns straight to the pads.
- No Background
The background cycle in Settings gets one more choice after the bundled wallpapers: No Background, which makes the overlay's backdrop fully transparent (colour key + LWA_COLORKEY) so the game stays visible between the UI elements.
-
The web remote keeps a wallpaper, since a phone browser has nothing behind it to show through.
-
Rebindable buttons
-
Every button the picker uses — Confirm, Back, Settings, Move active pad, Quick load, Quick clear — now has its own row in Settings and can be reassigned to any button on the pad.
-
LT and RT can be bound too. The triggers are analog axes rather than buttons, so they were previously invisible to the app; they are now thresholded into the button mask (which widened from 16 to 32 bits to make room) and work anywhere a button does, including the overlay toggle combo.
-
The D-pad stays reserved for menu navigation, and a button already used by another action or by the overlay toggle is refused with the reason shown on screen instead of silently doing nothing.
-
The toggle-shortcut validation now derives its reserved set from the live bindings instead of a hardcoded A/B/Y/D-pad mask, so rebinding can't leave it checking the wrong buttons.
-
Controller icons and detection
-
Bindings are drawn as the pad's own button icons instead of spelled out in text, and so is the Settings hint in the bottom-right corner (which previously always showed a Y even after Settings had been rebound).
-
New Button labels setting: Auto (default), Xbox, DualShock 4 or Switch. Auto follows the connected pad via SDL_GameControllerGetType; with several pads connected Xbox wins, then DualShock 4, then Switch. A DualSense uses the DualShock 4 set.
-
Icons live in Assets/ControllerIcons/<Style>/.png and are embedded by generate_assets.py like every other asset — adding or replacing one is just dropping a PNG in with the right name. A button with no PNG falls back to its name in a pill, so an incomplete set degrades one button at a time. See Assets/ControllerIcons/SOURCES.md.
-
HIDAPI and button-label hints for PlayStation and Nintendo pads are set explicitly rather than left to SDL's defaults, loose Joy-Cons are combined into one pad, and Nintendo face buttons are reported by their printed label (the button marked A is the one the app calls A).
-
With no controller connected at all, the overlay says "Connect a controller!" in red across the middle instead of just ignoring you.
-
Settings screen
-
New Reset all settings to defaults row: toggle shortcut, confirm style, background, character selection (back to All series), button labels and every binding return to their out-of-the-box values. It reads them off a default-constructed state, so it can't drift away from the real defaults. The listener and web-remote ports are left alone, since those live only in the ini.
-
While a button is being captured, the line under the list says what to press and why a press was refused — the status text existed before but was only ever sent to the web remote's JSON, so a refused binding used to look identical to a dead input.
Notes
-
Everything new persists in LegoToypad.ini under [Input] (StoryMode, ButtonStyle, Button*); an existing ini keeps working, and a ButtonStyle=DualSense written by an earlier build maps onto the PlayStation set.
-
Tested on Windows 11 with an Xbox pad; builds clean with the repo's own build.yml workflow.
-
The controller icon sets are third-party art — Assets/ControllerIcons/SOURCES.md records where each came from, and the Switch pack's licence still needs confirming before you ship it.