Input, Navigation & Keybindings
Unreal Engine supports multiple input types by default, but making a clean and responsive UI across mouse, keyboard, and gamepad takes planning. Ultimate Menu System handles this for you — and gives you full control to customize behavior at any point.
Whether your players are using a mouse to click through panels or navigating with a controller D-Pad, this system ensures a consistent and intuitive experience. Let’s walk through how it works and how you can tailor it.
Input System Overview
This menu system supports:
- Mouse (click-based)
- Keyboard (WASD / Arrow Keys / Tab)
- Gamepad (D-Pad, Analog stick, face buttons)
You don’t need to do anything special — everything is already wired up in the Blueprint layer. But if you want to customize or expand the input behavior, here’s what you should know.
Navigation Flow: How It Works
UMS uses a clean, consistent approach to menu navigation based on navigable widgets — usually buttons — that are defined in each panel.
To define navigation targets:
- Open your widget (e.g. WB_MainMenuPanel)
- Implement the interface event GetNavigables
- Return an Array of Buttons (or other navigable widgets) in the desired order
This defines the directional navigation behavior — whether you’re using arrow keys, gamepad, or keyboard.
Navigation in Tabbed Menus
If you’re using a tabbed layout, navigation needs to pass through a slightly different flow.
Here’s how to set that up:
- Implement Get Tab Constructor Reference
- This provides access to the WB_TabMenuConstructor from your panel
- From there, grab the current tab’s panel
- Call GetNavigables from the active tab panel, not the root widget
That way, input focuses only on what’s currently visible — keeping things intuitive.
Keybindings
Yes — keybindings are supported. You can control what buttons open menus, switch tabs, or trigger pause functionality.
To adjust:
- Open WB_MenuMaster
- Locate the Keybinding Section under exposed variables
- Change the keys based on your design (e.g. Pause = Esc, Back = B)
- Bind your desired functionality inside the Player Controller using interface calls if needed
Tip: You can also define separate keybindings per platform, or extend the system with Enhanced Input logic.
Navigation Timing & Delay
Fine-tuning UX? You can adjust:
- Navigation input delay
- Transition animation delays
- Content toggle speed
These values are all exposed in WB_MenuMaster so designers can iterate without modifying core code.
Custom Navigation Events
Advanced use cases? You can override:
- When buttons become interactable
- Which direction moves where (e.g. custom Up/Down logic)
- Conditional focus (e.g. skip tabs if locked)
All of this can be handled in Blueprint logic in the GetNavigables return array or through navigation callback events.
What’s Next?
Your menu is now fully input-aware, responsive, and cross-device ready.
In the next section, we’ll look at how to construct tabbed menus, configure the master menu settings, and optimize performance using widget pooling — all essential for scalable menus.