github harrysof/LegoToypad v1.5
Version 1.5

3 hours ago

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.

Don't miss a new LegoToypad release

NewReleases is sending notifications on new releases.