PC/Pawn/Widget input priorities ?

Hey mister Cedric (that’s also my name :x),

I may not be able to answer all your questions, but I know that PC and Pawn should work like this:

You have the hardware input, so your keyboard. That forwards the key press to the PlayerInputMapping
and that will then go over to the InputComponents. This is done by the “PlayerInput” UObject, that can be found in the PlayerController
on all clients. It has the two structs for ActionKey and AxisKey Mappings.

The system has checks to determine which InputComponent will be processed first. Here is the list of how it (should) work/s:

  1. Input-Enabled Actor (most recent first)
  2. PlayerController
  3. LevelBlueprint
  4. Pawn

(1.) Is the important one here. Any actor, that recently had “Enable Input”, or better “Accepts Input” enabled,
will be process first here. They are ordered by priority, means the Actor that had this enabled most recently, will
be processed first. Then it will process everyone else based on the same idea, until all are finished. Then (2.) will
be processed. To keep an Actor as the first one to be processed, you just have to make sure to reenabled the Input
to move it up to the top of the stack.

Now, who does get the Input now? Answer, everyone. If you have something bound to SPACE and you bind it to an Actor,
to the PlayerController and to the Pawn, all 3 will be processed, based on the top list.

But how can we make sure that only one of them gets it? We set them up to consume the input.
If the PlayerController is set to consume the input, the Actor will still have the Spacebar working, but the Pawn won’t receive
the key press, as the PlayerController consumes it.

At least that’s how I understood it.

What I can’t answer you is how the Widget comes into play. You are binding it to an Input Event in the PlayerController,
so I would guess this counts as a PlayerController event and the information above applies.