Quick answer: Define schemes with explicit Device Requirements. Enable Auto-Switch on PlayerInput, or call SwitchCurrentControlScheme(name, devices) on connect.
Player plugs in a controller mid-game. Sticks do nothing. Scheme dropdown still shows Keyboard&Mouse.
The Symptom
Bindings exist for both schemes; only one fires. Disconnecting K&M and reconnecting gamepad finally activates Gamepad scheme.
The Fix
InputActions asset → Control Schemes:
Keyboard&Mouse
Requirements: Required Keyboard, Required Mouse
Gamepad
Requirements: Required Gamepad
PlayerInput component:
Behavior: Send Messages
Auto-Switch: true // switches on input
Default Scheme: Keyboard&Mouse
// Manual switch (when needed):
playerInput.SwitchCurrentControlScheme("Gamepad", Gamepad.current);
Auto-Switch listens for any input on devices satisfying another scheme’s requirements and swaps. Manual call is for cases like in-menu opt-in.
Verifying
Press a key: K&M scheme. Move stick: switches to Gamepad. Subscribe onControlsChanged to react (UI prompt swaps icons).
“Requirements. Auto-Switch. Schemes follow input.”
Related Issues
For composite binding, see composite. For action during load, see action load.
Auto-Switch on. Schemes follow input.