The (pre-release) demo now plays start to finish on a controller. Menus, the city map, all seven districts, the pause screen, the upgrade tree. No point where you have to reach for a keyboard or a mouse. That sounds like a small thing...but it wasn't, and the reason is worth writing down, because this game is not built the way most games are.
Harbor Gate is the exception, because it is the one district with no guns in it. Nothing to aim at means the right stick has no job, so the whole console is on the face buttons instead.
The labels never say a button name - they say RELOAD and SWAP WEAPON - so the only thing that changes between the two sheets is which glyph set draws them.
Every on-screen prompt resolves from a semantic action rather than a hard-coded key. The upgrade description does not say "Press 6", it says "Press {action:UPGRADE_STEADY_HAND}", and the prompt layer decides at draw time whether you see a 6 or an L3 glyph. Three things fall out of that, and all three matter more than they sound:
Rebinding does not break your prompts. Move reload off X and the prompt moves with it, because the prompt asks "what fires RELOAD right now" instead of carrying a printed key.
Nineteen languages did not need retranslating. The token sits inside the already-translated sentence, so every locale kept its own prose and only the key reference changed. A glyph is language-neutral.
Nothing shows you a key your device does not have. The pause screen used to say ESC to everyone, including on a Deck, which has no ESC key. Steam Deck sets an environment variable that the game reads through the desktop shell, so on a Deck the prompts are controller prompts from the first frame, before you have touched anything.
The button art is Valve's own Steam Input glyph set, so the buttons you see in game are the buttons Steam itself draws. There are two families in the build now, Xbox and PlayStation, and the game picks one by reading the pad's vendor ID on its first press. One caveat worth knowing: a PlayStation pad that has been opted into Steam Input is handed to the game as a virtual XInput device, so it reports as an Xbox pad and gets Xbox glyphs. That is Steam's doing, not a bug we can see from inside.
Every action in the game is in one list, grouped by where it applies, with its current binding beside it. Click a row, press the thing you want, done. A few details that took longer than the feature itself:
Actions live in contexts. Chapel Hill's reload and Harbor Gate's pull
were both R on a keyboard, and that is fine, because you are never in both
districts at once. The binding store knows which context an action belongs to,
so it only reports a conflict when two actions in the same context want
the same input.
Some actions cannot be left unbound. Anything the demo cannot be
finished without is marked required, and the screen will not let you strand it.
F11 and the dev keys are fixed. Fullscreen has to keep working even
if you have rebound everything else.
This is Valve's own guidance and it is worth being explicit about: there is noinput mode switch in this game and there will not be one. Nothing gets disabled when you pick up a controller. Play with a pad and reach over to click something with the mouse, and both work, in the same second. The only thing that changes when you pick up a pad is what the prompts say. A controller sitting idle on your desk will not do it. The game waits for an actual press or stick deflection before it decides the pad is driving, so a mouse player with a pad plugged in never sees glyphs they do not want.
Here is the part that is genuinely unusual about this game's insides. The whole interface is a document. Every HUD panel, shop row, upgrade node and pause row is a real element on a page, not a widget in an engine's UI system. That is great for building things fast and terrible for a controller, because a page has no concept of "the next thing down". So the game grew one. When an overlay opens, the input layer reads that overlay's actual laid-out geometry and works out what lies up, down, left and right of whatever is focused, scored so that straight ahead beats diagonal. It is not tab order, because tab order walks a grid in an order your eye does not. Two bugs from building it, for anyone who has done this before and winced:
cursor:pointer is inherited. Discovering clickable things by their
cursor style also finds every word inside them, and then "innermost wins" throws
away the row that actually carries the click. The focus ring hopped across the
two words in a button instead of outlining the button.
A row scrolled out of a pane is not hidden. Skipping anything outside
the viewport made everything below the fold permanently unreachable, because the
thing that scrolls a row into view only runs once that row has focus. Which it
could never get.
Type sizes are the real work, and they are not finished. Valve's rule of thumb is a 24px minimum at 1920x1080, and a lot of this game's UI was authored at 10 or 11px because it looked right on a monitor. That is unreadable at arm's length on a 7 inch panel. Menus, the pause screen and the upgrade tree are on the new scale; the district HUDs are going up next. Valve's glyph set has no stick-click art either, so L3 and R3 - SLOW-MO and OVERDRIVE - are drawn here on the same pixel grid as the rest of the set rather than shown as a labelled plain stick. There is also no text entry anywhere you need it. The feedback form in the pause menu has an optional comment box, and it hides itself when a controller is driving, because a rating on its own has always been a perfectly good report.
Being straight about it:
The PlayStation glyphs have not run on hardware. The art is in and
detection is wired, but no DualShock or DualSense has been near it. If you have
one, the feedback form in the pause menu is the fastest way to tell us.
Switch glyph art is not in. The system takes glyph families, so it is
art and a vendor ID, not a rebuild.
Type sizes are only part way up. Menus, the pause screen and the
upgrade tree are on the new scale. The seven district HUDs are still being
raised district by district, and none of it has been read on a Deck panel yet.
Steam Input's own configurator does not yet see this game's verbs.
That needs an in-game actions file, which is the next piece. When it lands, the
Steam config screen will list SLOW-MO and PULL THEM OUT instead of listing keys.
If something in here does not work the way this post says it does, the feedback form is in the pause menu, and it sends nothing until you press send.