UMG makes it way to hard to handle input!

UMG is really coming along nicely, but it makes handling input an absolute nightmare. Splitting it up so certain input events can only be handled in UMG and certain input events can only be handled by actors in game mode (e.g. your player controller) is really frustrating. For example, doing something to a widget when you shift click it shouldn’t be hard, but it is. I have to create a Click handler on my UMG widget, then in my player controller I need a boolean to indicate if the shift key is pressed down, then in my UMG widget I need to check that boolean. It’s made worse by UMG focus events interrupting key pressed so if my widget didn’t have focus when I pressed shift, it won’t register!

Another example is if I want one of my widgets to listen to an arbitrary key press, it has to be done in a game mode object like my player controller and I have to have an event dispatcher with my widget binding to that. It’s a mess.

Hello Brandon Wamboldt,

I was reading over your post and I was wondering if you have tried using the function overrides that are available in UMG. I have provided an example of how to do a shift+Left Click with nothing but UMG. I hope that this information helps.


In the My blueprints panel of the graph tab of your widget you will see the overrides drop down. This has many options that will allow you to listen for key presses (such as OnKeyDown). The On Key Down override fires off every time a button is pressed you can then query the function to find out what button was pressed (Get key > Equal key > The key you want).


Here I have used the on mouse down function override to find out if the shift key is down when the left mouse button is pressed.


Make it a great day

Edited: Fixed attachments.

Your attachments aren’t working Rudy.

Awesome, that’s totally what I was looking for! Thanks!

Hey, Rudy. The attachments are unavailable now. Could you fix it, please? :confused:

His attachments were never available. I made a screenshot of my project for you though!