Interaction Engine Documentation

Input device glyphs

Input glyphs powered by Enhanced Input and the internal glyph database.

Interaction Engine resolves prompt visuals from the player's current input bindings and the active input device family. For Enhanced Input actions, the plugin finds the currently bound key, chooses the correct keyboard or gamepad glyph style, and returns UI-ready visual data: icon, key text, action text, resolved key, and device type.

Current runtime behavior: shipped glyph resolution uses the plugin's internal UInteractionGlyphDatabase. CommonUI/CommonInput is not required for the built-in glyph system. The legacy source mode setting remains only for Blueprint/config compatibility.

How resolution works

The glyph pipeline has two separate jobs: detecting the broad input family currently being used and resolving the visual prompt for a specific key or Enhanced Input action.

  • 1. Device family tracking A lightweight Slate input preprocessor observes keyboard, mouse, and gamepad input without consuming events. Keyboard and mouse input resolves as KeyboardMouse. Gamepad input resolves as the selected gamepad glyph style.
  • 2. Enhanced Input binding lookup Resolve Prompt for Input Action queries the local player's Enhanced Input subsystem and uses the active mapping context stack, including runtime remapping, to find the current key for the supplied UInputAction.
  • 3. Device-aware key selection When an action has more than one bound key, the plugin prefers a key that matches the current input family: gamepad keys while gamepad prompts are active, keyboard/mouse keys while keyboard and mouse prompts are active.
  • 4. Internal database lookup The resolved FKey and resolved EInteractionGlyphDeviceType are looked up in the active UInteractionGlyphDatabase. The first matching database entry provides the icon, display text, size, and padding data.
  • 5. Text-only fallback If the key is valid but no glyph entry can be resolved, the plugin returns a valid text-only result using the key display name. This prevents prompt rows from becoming blank when a custom key is missing from the database.
  • Important: gamepad glyph style is not a hardware guarantee. On PC, different input layers can report controllers inconsistently. Interaction Engine lets the project or player choose the glyph family that should be displayed whenever gamepad input is active.

    Resolved device types

    The resolved device type is represented by EInteractionGlyphDeviceType. Each value maps to one icon set inside the glyph database. For gamepads, this enum represents the prompt style being displayed, not necessarily the exact physical controller model.

    Enum valueUsed for
    KeyboardMouseKeyboard and mouse prompts.
    XboxControllerXbox-style gamepad prompts.
    DualSensePlayStation 5 / DualSense-style prompts.
    DualShock4PlayStation 4 / DualShock 4-style prompts.
    SwitchProControllerNintendo Switch Pro Controller-style prompts.
    JoyConNintendo Joy-Con-style prompts.
    Switch2ControllerNintendo Switch 2-style prompts.
    SteamDeckSteam Deck-style prompts.
    GenericGamepadGeneric fallback gamepad prompts.

    Gamepad glyph style

    EInteractionGamepadGlyphStyle controls which gamepad icon family is used while the active input family is gamepad. This can be set in project settings as the default and changed at runtime with Blueprint nodes for player preference menus.

    StyleResolution behavior
    AutoUses the database DefaultGamepadFallback. If that fallback is invalid for gamepads, uses GenericGamepad.
    XboxControllerUses the XboxController glyph set.
    DualShock4Uses the DualShock4 glyph set.
    DualSenseUses the DualSense glyph set.
    SwitchProControllerUses the SwitchProController glyph set.
    JoyConUses the JoyCon glyph set.
    Switch2ControllerUses the Switch2Controller glyph set.
    SteamDeckUses the SteamDeck glyph set.
    GenericGamepadUses the GenericGamepad glyph set.

    Glyph database setup

    Icons are stored in a UInteractionGlyphDatabase data asset. The asset holds one FInteractionGlyphSet per device type, and each set contains the individual key-to-icon mappings for that controller.

  • 1. Use the included database or create your own The plugin ships with a default database asset at /InteractionEngine/InteractionEngine/Data/DA_InteractionGlyphDatabase_DataAsset. You can use this asset directly or duplicate it into your project if you want full control over textures and labels.
  • 2. Configure the default database Open Project Settings → Interaction Engine Glyphs and set DefaultGlyphDatabase to the database asset that should be loaded by the glyph subsystem on each local game instance.
  • 3. Configure the default gamepad style In the same settings page, set DefaultGamepadGlyphStyle. Leave it as Auto if the database fallback should decide the default gamepad icon family, or choose a specific style such as XboxController or DualSense.
  • 4. Populate glyph sets Inside each FInteractionGlyphSet, set DeviceType and fill the Entries array. Each FInteractionGlyphEntry maps one FKey to display text, an optional icon texture, fallback text, desired size, padding, and visibility options.
  • 5. Override at runtime only when needed For advanced bootstrapping or custom projects, call Set Glyph Database on the InteractionGlyphSubsystem before showing prompt widgets. Most projects can rely on the project setting instead.
  • Default gamepad fallback: configure DefaultGamepadFallback inside the database so Auto gamepad style and unknown gamepad-style prompts always have a safe icon family to use.

    Glyph source mode

    EInteractionGlyphSourceMode is retained for older Blueprint/config compatibility. In the current shipped runtime, prompt visuals are resolved through the internal glyph database provider.

    ModeCurrent behavior
    AutoUses the internal glyph database. This is the recommended default.
    InternalDatabaseUses the internal glyph database explicitly.
    LegacyReservedHidden legacy value reserved for compatibility. Do not use it for new content.

    Blueprint nodes

    Glyph operations are available through UInteractionGlyphLibrary. These are static Blueprint Function Library calls, so widgets and actors can use them without storing a subsystem reference.

    Resolve Prompt for Input Action

    The primary node for projects using Enhanced Input. It resolves the currently bound key for a UInputAction, respects active mapping contexts and runtime remapping, then returns the matching prompt visual data.

    PinDirectionTypeNotes
    World Context ObjectInputObjectPass Self from any Actor or Widget.
    Input ActionInputUInputActionThe Enhanced Input action to resolve.
    Action TextInputTextThe label shown beside the key prompt, such as Interact or Pick Up.
    Local Player IndexInputInteger0 for the first local player. Pass the correct index in split-screen.
    Return ValueOutputFInteractionPromptVisualDataResolved icon, text, key, action label, device type, and display flags.
    Requires Enhanced Input: this node depends on an initialized Enhanced Input local-player subsystem. If the mapping context has not been applied yet, the result can be invalid. Refresh the widget after applying input mappings.

    Resolve Prompt for Key

    Resolves prompt visuals for a raw FKey. Use this when you already know the key, when showing non-action prompts, or when working outside the Enhanced Input action flow.

    PinDirectionTypeNotes
    World Context ObjectInputObjectPass Self from any Actor or Widget.
    KeyInputFKeyThe specific key to look up in the glyph database.
    Action TextInputTextThe label shown beside the key prompt.
    Local Player IndexInputInteger0 for the first local player.
    Return ValueOutputFInteractionPromptVisualDataResolved icon, text, key, action label, device type, and display flags.

    Gamepad style nodes

    Use these nodes to support an options menu where players choose the controller prompt family they want to see.

    NodeUse
    Set Gamepad Glyph StyleSets the active gamepad glyph style at runtime.
    Get Gamepad Glyph StyleReturns the currently selected gamepad glyph style.
    Reset Gamepad Glyph StyleRestores the style from DefaultGamepadGlyphStyle in project settings.
    Get Resolved Gamepad Glyph Device TypeReturns the actual EInteractionGlyphDeviceType used for gamepad lookup after resolving Auto.

    Get Current Device Type

    Returns the currently active prompt device type. Keyboard and mouse input returns KeyboardMouse. Gamepad input returns the resolved gamepad glyph device type based on the selected gamepad style.

    PinDirectionType
    World Context ObjectInputObject
    Local Player IndexInputInteger
    Return ValueOutputEInteractionGlyphDeviceType

    Get Bound Key for Action

    Returns the FKey currently bound to the supplied UInputAction for the specified local player. It respects the active Enhanced Input mapping stack and prefers a key matching the current input family.

    PinDirectionType
    World Context ObjectInputObject
    Input ActionInputUInputAction
    Local Player IndexInputInteger
    Return ValueOutputFKey

    Device type predicate nodes

    Convenience Boolean nodes for branching on broad controller families without switching on the full enum. Each takes an EInteractionGlyphDeviceType and returns a Boolean.

    NodeReturns true for
    Is Gamepad Device TypeAny value except KeyboardMouse.
    Is PlayStation Device TypeDualShock4 or DualSense.
    Is Nintendo Device TypeSwitchProController, JoyCon, or Switch2Controller.
    Is Xbox Device TypeXboxController.

    The resolved data struct

    Both resolve nodes return FInteractionPromptVisualData. Break the struct in Blueprint to drive your UI.

    FieldTypeNotes
    bValidBooleanTrue when a valid key was resolved. Check this before applying the prompt to your widget.
    ResolvedIconTexture2DThe resolved icon texture. Can be null for text-only prompts.
    ResolvedKeyTextTextThe short display text for the key, such as E, Space, A, or Square.
    ActionTextTextThe action label passed into the resolve call. Returned unchanged for convenience.
    ResolvedKeyFKeyThe actual key that was looked up after remapping resolution.
    ResolvedDeviceTypeEInteractionGlyphDeviceTypeThe glyph set used for the lookup.
    bShowIconBooleanTrue when the resolved icon should be displayed. False when only text should be shown.
    bShowTextBooleanTrue when the key text should be displayed alongside or instead of the icon.
    bUsingOfficialGlyphSourceBooleanReserved for provider-origin reporting. With the shipped internal database provider, this is normally false.

    Reacting to device or style changes

    InteractionGlyphSubsystem exposes OnInputDeviceTypeChanged. Bind to it if an already visible prompt widget should refresh immediately when the player changes from keyboard/mouse to gamepad, from gamepad to keyboard/mouse, or when the gamepad glyph style changes at runtime.

  • 1. Get the subsystem reference Use the Get Game Instance Subsystem node and select InteractionGlyphSubsystem as the class.
  • 2. Bind to the delegate Drag off the subsystem reference and call Bind Event to On Input Device Type Changed. Connect a custom event node to the delegate pin. The event provides the new resolved EInteractionGlyphDeviceType.
  • 3. Refresh the widget in the custom event Inside the bound custom event, call Resolve Prompt for Input Action again with the same action as before and update the Image and Text bindings in your widget.
  • Event payload: the delegate passes the new resolved EInteractionGlyphDeviceType. Re-run your resolve node for each visible prompt that needs to update.

    Typical widget integration

  • 1. Store the slot's Input Action Interaction slots should provide the UInputAction used for that prompt. Prefer action-based resolution over hardcoded key labels.
  • 2. Resolve when focus data is applied When your prompt row receives new interaction data, call Resolve Prompt for Input Action and break the returned struct.
  • 3. Drive image and text visibility from the struct Use bShowIcon for the Image widget and bShowText for the key Text widget. Do not assume every entry has an icon.
  • 4. Refresh on device change Bind to OnInputDeviceTypeChanged on Construct and call the resolve node again inside the bound event to keep the icon current if the player swaps controllers while the widget is open.
  • 5. Check bValid before showing the widget If bValid is false, collapse or hide the entire prompt row rather than showing an empty icon or blank text.
  • Setup checklist

  • Database asset configured DefaultGlyphDatabase is set in Project Settings → Interaction Engine Glyphs, or Set Glyph Database is called early during local initialization.
  • Default gamepad fallback configured The database has a valid DefaultGamepadFallback so Auto gamepad style has a safe icon family.
  • Gamepad style exposed when needed If your game supports controller prompt preferences, expose Set Gamepad Glyph Style in your options menu.
  • bValid checked before display Widget Blueprint branches on bValid before applying icon or text to avoid showing empty UI elements.
  • Device change event bound OnInputDeviceTypeChanged is bound in the prompt widget so icon updates fire immediately on controller swap.
  • Enhanced Input mappings are active The local player's Enhanced Input mapping contexts are applied before action-based prompts are resolved.
  • Related pages

  • UI and Feedback See UI and Feedback for prompt widget setup and interaction feedback display.
  • Slot and Settings Reference See Slot and Settings Reference for slot display settings, including action-based prompt data.
  • Interactor Reference See Interactor Reference for icon gathering radius and line-of-sight settings used by the distant indicator system.