# \[Verse Enhanced Input\] Inputs APIs are no longer sending input events

**URL:** <https://forums.unrealengine.com/t/verse-enhanced-input-inputs-apis-are-no-longer-sending-input-events/2714681>\
**Category:** Issues and Bug Reporting\
**Tags:** Input, open, fortnite-creative, unreal-editor-for-fortnite, fortnite\
**Created:** [April 11, 2026, 8:24pm UTC](https://forums.unrealengine.com/t/verse-enhanced-input-inputs-apis-are-no-longer-sending-input-events/2714681 "2026-04-11T20:24:20Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Lenka](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/lenka/32/912429_2.png) [@Lenka](https://forums.unrealengine.com/u/Lenka)\
**Post date:** [April 11, 2026, 8:24pm UTC](https://forums.unrealengine.com/t/verse-enhanced-input-inputs-apis-are-no-longer-sending-input-events/2714681/1 "2026-04-11T20:24:20Z")

</div>

### Summary

Both `UnrealEngine.ControlInput` & `Verse.Input` modules are not sending any input events when the InputMappingContext is added and the InputAction triggered by the player.

### Please select what you are reporting on:

Unreal Editor for Fortnite

### What Type of Bug are you experiencing?

Verse

### Steps to Reproduce

- Create an entity and add a `basic_interactable_component` and the `GameInputQAComponent`:

```verse
GameInputQAComponent := class<final_super>(component) {
    @editable bUseDeprecatedAPI<public>:logic = false;
    @editable InputAction<public>:input_action(logic);
    @editable InputMappingContext<public>:input_mapping;

    OnSimulate<override>()<suspends>:void = {
        Interactable := Self.Entity.GetComponent[(/Verse.org:)SceneGraph.basic_interactable_component] or Err("SceneGraph.basic_interactable_component");

        Agent:agent = Interactable.SucceededEvent.Await();
        Player := player[Agent] or Err("[GameInputQAComponent]: Player required");

        if (Self.bUseDeprecatedAPI?) {
            PlayerInput := (/UnrealEngine.com:)ControlInput.GetPlayerInput[Player] or Err("Input.GetPlayerInput");

            PlayerInput.AddInputMapping(Self.InputMappingContext);
            InputEvents := PlayerInput.GetInputEvents(Self.InputAction);

            loop {
                Event:string = race {
                    (InputEvents.ActivationTriggeredEvent.Await(); "ActivationTriggered");
                    (InputEvents.ActivationCanceledEvent.Await(); "ActivationCanceled");
                    (InputEvents.DetectionBeginEvent.Await(); "DetectionBegin");
                    (InputEvents.DetectionOngoingEvent.Await(); "DetectionOngoing");
                    (InputEvents.DetectionEndEvent.Await(); "DetectionEnd");  
                };

                Print("[GameInputQAComponent(UnrealEngine.ControlInput)]: {Event}");
            };
        } else {
            PlayerInput := (/Verse.org:)Input.GetPlayerInput[Player] or Err("Input.GetPlayerInput");

            PlayerInput.AddInputMapping(Self.InputMappingContext);
            InputEvents := PlayerInput.GetInputEvents(Self.InputAction);

            loop {
                Event:string = race {
                    # Uses Sleep() to suprress LSP Error: `Expected async expression and only found immediate expression.`
                    (InputEvents.TriggerActivationEvent.Await(); Sleep(-1.0); "TriggerActivation");
                    (InputEvents.CancelActivationEvent.Await(); Sleep(-1.0); "CancelActivation");
                    (InputEvents.BeginDetectEvent.Await(); Sleep(-1.0); "BeginDetect");
                    (InputEvents.DetectionOngoingEvent.Await(); Sleep(-1.0); "DetectionOngoing");
                    (InputEvents.EndDetectEvent.Await(); Sleep(-1.0); "EndDetect");
                };

                Print("[GameInputQAComponent(Verse.Input)]: {Event}");
            };
        }
    };
};

```

- Start the game
- Interact with the entity and trigger the input you selected

### Expected Result

We should see a output logs after the player presses the input.

### Observed Result

Nothing happens.

### Platform(s)

Windows 11 - `40.10-CL-52157884`

---

<div class="post-metadata">

**Author:** ![Bug-Reporter](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/bug-reporter/32/997076_2.png) [@Bug-Reporter](https://forums.unrealengine.com/u/Bug-Reporter)\
**Post date:** [April 13, 2026, 9:00pm UTC](https://forums.unrealengine.com/t/verse-enhanced-input-inputs-apis-are-no-longer-sending-input-events/2714681/3 "2026-04-13T21:00:44Z")

</div>

The status of FORT-1087273 changed to ‘Needs Triage’. We’ve confirmed the issue and it’s waiting to be assigned to someone to fix it.

---

<div class="post-metadata">

**Author:** ![Andyland](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Andyland](https://forums.unrealengine.com/u/Andyland)\
**Post date:** [April 16, 2026, 6:25pm UTC](https://forums.unrealengine.com/t/verse-enhanced-input-inputs-apis-are-no-longer-sending-input-events/2714681/4 "2026-04-16T18:25:32Z")

</div>

Hey! I’m curious why you are using a loop and awaiting rather than subscribing to the actions?

```auto
            PlayerInput := (/Verse.org:)Input.GetPlayerInput[Player] or Err("Input.GetPlayerInput");

            PlayerInput.AddInputMapping(Self.InputMappingContext);

            InputEvents := PlayerInput.GetInputEvents(Self.InputAction);

            InputCancelable := InputEvents.TriggerActivationEvent.Subscribe(LogicInputTriggered)

            InputCancelableDetectBegin := InputEvents.BeginDetectEvent.Subscribe(LogicInputBegin)

            InputCancelableDetectEnd := InputEvents.EndDetectEvent.Subscribe(LogicInputEnd)

    LogicInputTriggered(Arg:tuple(player, logic)):void=
            NameMessage:= MessageMaker()
            PlayerName:=MakeAgentName(Arg(0))
            Print("{InputName} {Localize(PlayerName)} fired at {GetSimulationElapsedTime()}.")

    LogicInputBegin(Arg:tuple(player, logic)):void=
        Print("Input Trigger BEGIN (verse) Fired at {GetSimulationElapsedTime()}.")

    LogicInputEnd(Arg:tuple(player, float)):void=
        Print("Input Trigger END (verse) Fired at {GetSimulationElapsedTime()}.")

```

Doing something like that should work.

Did this workflow work for you in 40.10?

---

<div class="post-metadata">

**Author:** ![Lenka](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/lenka/32/912429_2.png) [@Lenka](https://forums.unrealengine.com/u/Lenka)\
**Post date:** [April 16, 2026, 8:10pm UTC](https://forums.unrealengine.com/t/verse-enhanced-input-inputs-apis-are-no-longer-sending-input-events/2714681/5 "2026-04-16T20:10:53Z")

</div>

Hey!

Just tested on `40.20-CL-524632` and that snippet worked **but so did my awaits** ,  
lot of us use await over subscribe for easy cancelling and such.  
So it looks like the events only gets sent once you use dummy Subscribe(), which is very much not ideal.

* * *

```verse
<# ...Same code... #>
InputEvents := PlayerInput.GetInputEvents(Self.InputAction);

# ✅ Now TriggerActivationEvent below works!
InputCancelable := InputEvents.TriggerActivationEvent.Subscribe(LogicInputTriggered);

# ❌ Not Subscribing: BeginDetectEvent below will not fire
# InputCancelableDetectBegin := InputEvents.BeginDetectEvent.Subscribe(LogicInputBegin);

# ❌ Not Subscribing: EndDetectEvent below will not fire
# InputCancelableDetectEnd := InputEvents.EndDetectEvent.Subscribe(LogicInputEnd);

loop {
    Event:string = race {
        # Uses Sleep() to suprress LSP Error: `Expected async expression and only found immediate expression.`
        (InputEvents.TriggerActivationEvent.Await(); Sleep(-1.0); "TriggerActivation");
        (InputEvents.CancelActivationEvent.Await(); Sleep(-1.0); "CancelActivation");
        (InputEvents.BeginDetectEvent.Await(); Sleep(-1.0); "BeginDetect");
        (InputEvents.DetectionOngoingEvent.Await(); Sleep(-1.0); "DetectionOngoing");
        (InputEvents.EndDetectEvent.Await(); Sleep(-1.0); "EndDetect");
    };

    Print("[GameInputQAComponent(Verse.Input)]: {Event}");
};

<# They dont need to do anything #>
LogicInputTriggered(Arg:tuple(player, logic)):void = {};
LogicInputBegin(Arg:tuple(player, logic)):void = {};
LogicInputEnd(Arg:tuple(player, float)):void = {};

```

* * *

> As soon as `Subscribe()` is used, everything works properly.

---

<div class="post-metadata">

**Author:** ![Lenka](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/lenka/32/912429_2.png) [@Lenka](https://forums.unrealengine.com/u/Lenka)\
**Post date:** [April 16, 2026, 11:25pm UTC](https://forums.unrealengine.com/t/verse-enhanced-input-inputs-apis-are-no-longer-sending-input-events/2714681/6 "2026-04-16T23:25:58Z")

</div>

@Andyland

---

<div class="post-metadata">

**Author:** ![Lenka](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/lenka/32/912429_2.png) [@Lenka](https://forums.unrealengine.com/u/Lenka)\
**Post date:** [May 16, 2026, 12:29am UTC](https://forums.unrealengine.com/t/verse-enhanced-input-inputs-apis-are-no-longer-sending-input-events/2714681/7 "2026-05-16T00:29:35Z")

</div>

Fixed in `++Fortnite+Release-40.40-CL-53683214`

---

<div class="post-metadata">

**Author:** ![HootyTooty](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@HootyTooty](https://forums.unrealengine.com/u/HootyTooty)\
**Post date:** [July 19, 2026, 8:52pm UTC](https://forums.unrealengine.com/t/verse-enhanced-input-inputs-apis-are-no-longer-sending-input-events/2714681/8 "2026-07-19T20:52:51Z")

</div>

![image](https://d3kjluh73b9h9o.cloudfront.net/original/4X/a/1/1/a11d43cf716739dd046fe5a6c4415b9b53ed9e66.jpeg)  
Just wanted to drop this here as I am also a firm believer that structured concurrency is preferable over managing Subcribe()

---

<div class="post-metadata">

**Author:** ![AtAshTag](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/atashtag/32/997253_2.png) [@AtAshTag](https://forums.unrealengine.com/u/AtAshTag)\
**Post date:** [July 20, 2026, 12:07am UTC](https://forums.unrealengine.com/t/verse-enhanced-input-inputs-apis-are-no-longer-sending-input-events/2714681/9 "2026-07-20T00:07:53Z")

</div>

The only 2 subs i ever use is join/leave everything else is awaits() with race: best thing since sliced bread imo 😊

---

<div class="post-metadata">

**Author:** ![system](https://d3kjluh73b9h9o.cloudfront.net/original/4X/7/1/3/713c9d3f58553f0de89543d76a8a3a2779dc9fa4.png) [@system](https://forums.unrealengine.com/u/system)\
**Post date:** [October 8, 2026, 8:24pm UTC](https://forums.unrealengine.com/t/verse-enhanced-input-inputs-apis-are-no-longer-sending-input-events/2714681/10 "2026-10-08T20:24:42Z")

</div>

This topic was automatically closed after 180 days. New replies are no longer allowed.
