"Input.config action on an editor-reserved key silently never fires in Play"
▸ SYMPTOM
You bind a game action to an F-key (e.g. F1 for help, F3 for telemetry) in your Input.config. In-editor Play, the action never fires: no error, no log, the key press is silently swallowed.
▸ CAUSE
The editor/host captures certain keys before they reach Input.config game actions. The confirmed reserved set (grows across builds):
F3/F7/F8areShortcutType.Windoweditor shortcuts (toggle-fullscreen, pause, eject).F1/F2/Escapeare also host-stolen in practice: they had zero[Shortcut]hits in a tools grep of engine 26.07.08e, so the capture map extends beyond the[Shortcut]-annotated set. Treat the[Shortcut]grep as a lower bound, not the full list.
The capture map also differs between the editor and the published/standalone client. Keys that work fine in-editor Play can be dead in the shipped build: the client appears to reserve additional F-keys for its own overlays. An in-editor Play test is therefore not sufficient proof for an F-key bind.
There is no error or warning when a game input binding collides with a reserved key: it simply never arrives.
▸ FIX
Bind game/UI hotkeys to plain letters instead of F-keys:
// Input.config example - safe bindings
Help I
WorldMap M
HideHud H
Telemetry LAvoid all F-keys for gameplay bindings. Even F4, which worked in-editor for some builds, has been observed dead in the published client.
For Escape (close menus, back navigation), use Input.EscapePressed, it's a real get/set property you can consume:
if (Input.EscapePressed)
{
Input.EscapePressed = false; // consume it
CloseMenu();
}Do not bind Escape as an Input.config action. Verify every new binding in both a real in-editor Play session and a published build: the reserved set can expand between engine builds and differs between the two environments.
▸ WHY IT WORKS
Plain letter keys have no editor shortcut registrations, so they pass through to the game input layer cleanly in both the editor and the published client. Input.EscapePressed is a dedicated engine API that survives the host capture because the engine explicitly exposes it for game-side consumption, unlike Input.config bindings that compete with the shortcut system. Testing in both environments catches keys that are captured by different overlay systems in each context.