Input system documentation

This is how I feel when I am trying to figure out how unreal’s input system works:

I am not looking for tutorials for beginners on using LeftMouseButton event in blueprint. I think that what is really missing is documentation for skilled users. I have no idea how input hierachy works in Unreal, what get’s input first and so on. This includes topics like slate, focus, blueprint events, input components, UMG, mouse capture, FKeys, input modes, input stack, input blocking, cursor visibility (yes, this really affects input in unreal) and so on.

Can we please get some deep info about unreal’s input system ?

Here’s a quick and dirty guide to the hierarchy:

Platform layer gets the input from the device

Slate Application interprets the platform input into Slate Input events

Slate Application directs the input through the focused widget chain, if a widget has mouse capture, it is the only receiver.

Each widget in the focus chain gets a chance to handle the input, if it’s handled, it stops.

As each widget handles the key, things like widget navigation might get triggered that do things like use left,right,up,down to move focus to the next widget, based on navigation rules.

If unhandeled the input will reach the viewport.

The viewport then directs all key input to the Player Input system.

The Player Input system converts those slate inputs into the Actions and Input Events most people are familiar with that you don’t see in UMG.

The Player Input system then sends events to active input components in priority order.

There’s some special handling for things like mouse input, things like even if unhandled, if the mouse hit tests against a widget that’s not the viewport, it’s treated as blocking. Also things like cursor visibility are taken into account.

Wow, thank you very much! That is super useful info, I am digging in SlateApplication code right now.