[4.8] Still no solution for keyboard/gamepad input in 3D UMG Widgets?

I know about the input nodes stemming from Player Controller, like Show Mouse Cursor, or Ignore Move/Look, and I also the Set Input Mode nodes. Nothing can get keyboard input to work on the 3D UMG. Mouse cursor interactions work, but for my use case I need to be able to scroll through a long list of buttons with arrow keys or a gamepad joystick/D-pad, and also have the widget be in world space (because of VR).

The huge glimmer of hope is that when I have clicked on one of the buttons in my array using the mouse, and then I hit enter or space, the button clicks. So some keyboard input does work. So perhaps it is just a matter of relinquishing the right inputs being held hostage by some particular class.

If I understand correctly, you mean have the Player Controller HUD utilize the same UMG added to viewport and receive input there, but then send the data to my 3D widget in world space? I would just need to make the Viewport UMG assets invisible, which doesn’t sound too hard, but then push (most importantly) the keyboard navigation data from the Viewport widget to the world space Widget. That last step I’m not sure how to accomplish.

i meant the HUD should have a reference to the 3D widget component, and pass it any state changes.

what kind of data does the widget display? what spawns the widget?

if its something like a main menu or options menu, i would spawn the actor that owns the widget component from within the HUD, and get a reference to it when its spawned, keeping track of the menu page and current menu item inside the HUD, and just using the widget to render the data.

if its some kind of in game shop in the world that the player interacts with, you may want to get the reference to the widget when the player overlaps a collision box on the owning actor. either way, i would keep the state of the menu (page, tab, selected item number, whether cursor is moving up or down, etc…) inside the HUD.

This is totally possible, it’s just a very manual process. You basically have to create an index integer, and increment/decrement that variable based on user input. Then, depending on the value of that index, you’ll do something to your menu. In most cases, you’ll be “highlighting” or setting active a particular button, so after the switch you might do something like scale the associated button in size, or change it’s color.

You’ll then run a similar function for the Enter key, that when pressed will check what index the cursor is at and do the appropriate action.

Agreed, it would be really nice to have keyboard/gamepad support inherently in UMG, but this is the only method I know of to do what you’re talking about. Can confirm it works in both standard and VR widgets - see [ethereallegends.com][1]