Quick answer: Action.Disable before rebind. WithControlsExcluding mouse delta/position. WithCancelingThrough escape.

Player clicks Rebind Jump. Rebind completes instantly with mouse-position binding. Mouse jitter qualifies as input.

The Fix

action.Disable();
var op = action
    .PerformInteractiveRebinding(bindingIndex)
    .WithControlsExcluding("<Mouse>/position")
    .WithControlsExcluding("<Mouse>/delta")
    .WithCancelingThrough("<Keyboard>/escape")
    .OnComplete(_ => { action.Enable(); UpdateUI(); })
    .OnCancel(_ => { action.Enable(); ShowMsg("cancelled"); })
    .Start();

Excludes mouse jitter. Disables action so the input being rebound doesn't trigger gameplay. Cancel via Escape gives clean UX.

Verifying

Click Rebind, press a key, binding updates. Without exclude: rebind ends instantly with mouse delta capture.

“Exclude mouse. Cancel via Esc. Rebind clean.”

Related Issues

For Input callbacks stack, see callbacks stack. For control scheme, see scheme.

Exclude noise. Rebind clean.