# Enhanced Input plugin \> yes or no?

**URL:** <https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916>\
**Category:** C++\
**Tags:** Input, unreal-engine, editor, slate, feedback, CPP, Blueprint, question\
**Created:** [January 30, 2023, 4:56pm UTC](https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916 "2023-01-30T16:56:35Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Roy\_Wierer.Seda145](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/roy_wierer.seda145/32/906551_2.png) [@Roy\_Wierer.Seda145](https://forums.unrealengine.com/u/Roy_Wierer.Seda145)\
**Post date:** [January 30, 2023, 4:56pm UTC](https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916/1 "2023-01-30T16:56:35Z")

</div>

First off, I am quite glad that both the input and the UI system are getting more attention lately both in the engine and through plugins.

Regardless of my own opinions about the plugins I am quite curious if Enhanced Input is the new standard for game developers. Will this by default replace the old input system such as creating input mappings in the project settings entirely anytime soon? What estimated percentage of the community is using this plugin and is it expected to grow?

The reason I ask this is that I prefer to work with the latest developments but are also cautious not to jump “to soon”, so what are your experiences? Is this plugin becoming the engine’s standard? How easily can you set up dynamic keybindings?

I have been postponing integration of my plugins with this one for a while now for the following reasons:

1. I dislike UAssets, I am a git user and prefer everything text nice and clear in one place.
2. I dislike context based input. I don’t want one button to mean 4 things just for UX. I keep it clean and implement button response on a controller / pawn level, not on a data asset.
3. I still use the project settings to set up input and keybindings.

---

<div class="post-metadata">

**Author:** ![3dRaven](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/3draven/32/906552_2.png) [@3dRaven](https://forums.unrealengine.com/u/3dRaven)\
**Post date:** [January 30, 2023, 8:18pm UTC](https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916/2 "2023-01-30T20:18:59Z")

</div>

Enhanced is the default option from 5.1 onward & the old system will be deprecated with time. You can keep a single mapping setup if you want. You can implement it like the old one, you just have extra options on top.

---

<div class="post-metadata">

**Author:** ![Roy\_Wierer.Seda145](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/roy_wierer.seda145/32/906551_2.png) [@Roy\_Wierer.Seda145](https://forums.unrealengine.com/u/Roy_Wierer.Seda145)\
**Post date:** [January 30, 2023, 8:22pm UTC](https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916/3 "2023-01-30T20:22:16Z")

</div>

> [@3dRaven](#):
>
> You can keep a single mapping setup if you want

That would be great 🙂 I feel like all the additions are too specific to a certain project in mind. For example if you’d make something advanced like a DCS flight simulator (tons of curve control, double mappings, per vehicle files) you’d certainly be writing your own system anyway. But good to know where the engine is heading so I can adapt to the community needs.

---

<div class="post-metadata">

**Author:** ![BIGTIMEMASTER](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/bigtimemaster/32/710746_2.png) [@BIGTIMEMASTER](https://forums.unrealengine.com/u/BIGTIMEMASTER)\
**Post date:** [January 30, 2023, 8:42pm UTC](https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916/4 "2023-01-30T20:42:19Z")

</div>

im using it for now. In my case, it suits my project.

I like the way it is abstracted - very similar to a custom system I was using before. The way you just swap out input “maps” makes sense to me.

As with a lot of epic stuff though, if I run into issues getting it to work, and I dont know enough to understand the source code (or just dont want to put in the time to reverse engineer), I often take the basic idea of it and then make my own version using blueprints.

I haven’t had to do that with EI but I did that way CommonUI.

---

<div class="post-metadata">

**Author:** ![Roy\_Wierer.Seda145](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/roy_wierer.seda145/32/906551_2.png) [@Roy\_Wierer.Seda145](https://forums.unrealengine.com/u/Roy_Wierer.Seda145)\
**Post date:** [January 30, 2023, 8:48pm UTC](https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916/5 "2023-01-30T20:48:06Z")

</div>

Now you mention CommonUI which was also in my mind, it is still experimental but (scuse me) not usable… It only implements part of slate widgets and doesn’t fix the original issues we had with Slate, not even with the new viewport class. Still dealing with random focus loss where the mouse or controlls randomly stop working… For example, make a clean first person template project, add a text input box to the viewport, click it and add some text, commit and see how all controls and focus screw up. When I saw that I immediately uninstalled it and made my own framework in a percentage of CommonUI’s size (it’s bloated?). CommonUI is definitely a no for me at this stage, yet it also seems the community is pushed into that direction.

---

<div class="post-metadata">

**Author:** ![3dRaven](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/3draven/32/906552_2.png) [@3dRaven](https://forums.unrealengine.com/u/3dRaven)\
**Post date:** [January 30, 2023, 8:56pm UTC](https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916/6 "2023-01-30T20:56:24Z")

</div>

Hmm the text input change has nothing to do with common ui.

There was an update regarding how it registers changes to the input (on a c++ level). Committing with enter will no longer change the underlying text (there is an internal caching system that doesn’t seem to update like the old one). You have to set your value manually overriding the commit. (found this out replying to an older forum post)

---

<div class="post-metadata">

**Author:** ![BIGTIMEMASTER](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/bigtimemaster/32/710746_2.png) [@BIGTIMEMASTER](https://forums.unrealengine.com/u/BIGTIMEMASTER)\
**Post date:** [January 30, 2023, 8:56pm UTC](https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916/7 "2023-01-30T20:56:24Z")

</div>

yeah from commonUI the only thing that I use is the stack widget. But its not hard to recreate that either with blueprints.

But the basic principle of how it works has still been very helpful to me. The idea of push/pop widgets from a stack.

Well, I do use the activatable widgets as well. Having them auto-manage focus does save me some work. But like you said, it can be fussy about focus loss so there’s been a few times I’ve had to hardcode some failsafes to manage that. It would be nice to know a more proper way to implement it, but if that knowledge means digging through Lyra for the next 2 months, I’d rather just make a simpler system and keep working on my game :).

---

<div class="post-metadata">

**Author:** ![Roy\_Wierer.Seda145](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/roy_wierer.seda145/32/906551_2.png) [@Roy\_Wierer.Seda145](https://forums.unrealengine.com/u/Roy_Wierer.Seda145)\
**Post date:** [January 30, 2023, 9:19pm UTC](https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916/8 "2023-01-30T21:19:17Z")

</div>

It’s a bit hard to explain what I meant with that without showing it on video but there are quite a few unsolved focusing problems with Slate (for many years) which I thought CommonUI fixed with their new viewport implementation but I was disappointed to find out none of that was really different. Basically there are so many ways focus and input screws up that the original Slate can be impossible to work with unless you first build a frame on top of it with workarounds and fixes to keep the focus from going mad. No plugin so far provided a stable base besides what I am working on.

---

<div class="post-metadata">

**Author:** ![Roy\_Wierer.Seda145](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/roy_wierer.seda145/32/906551_2.png) [@Roy\_Wierer.Seda145](https://forums.unrealengine.com/u/Roy_Wierer.Seda145)\
**Post date:** [January 30, 2023, 9:29pm UTC](https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916/9 "2023-01-30T21:29:15Z")

</div>

> [@BIGTIMEMASTER](#):
>
> knowledge means digging through Lyra for the next 2 months

That’s where I always say “screw it I’ll do it myself” cause those plugins don’t stick to a single goal they implement a bunch of things I don’t need. Optimally a module does one thing and does it well.

But about the focus loss, it is a problem which lies in both UI and input and all leads back to the implementation of Slate on the engine level sadly. To just give an example:

1. Releasing mouse in controller game + ui input mode makes window lose focus and screws axis events until a mouse button is held again.
2. clicking a backround widget screws focus, now a gamepad would have no way to retrieve it.
3. interacting with ui then removing the ui or focusing the gameport does not return controls to the pawn.

Just very very basic things like that can’t be fixed by building a roof (plugin) on a broken part of the engine (the walls). I’ve been able to work around it but any new clean project is honestly not fit for a serious game project without my “workaround frame”.

I’ve been experimenting with ways to simplify focus restoration when navigating through menus or when removing a focused elements but such a restoration process is often very different per implementation, just focusing to the top window or last focused valid widget in a history list is not a 1 fix for all so some manual work will still be required.

What I do expect though from the engine is that full focus loss to the UI should never be possible unless forced by the programmer. Think of how the web browser works, you can click anywhere but hitting tab restores keyboard focus (we need that for gamepad etc). Also I expect that in case focus is lost from the UI the controls must be fully restored to the controller or pawn which is currently not the case. Controls can get stuck in a mode where nothing works unless you click the window or somehow break out of control hell.

---

<div class="post-metadata">

**Author:** ![GV-Rafael-III](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@GV-Rafael-III](https://forums.unrealengine.com/u/GV-Rafael-III)\
**Post date:** [January 30, 2023, 9:52pm UTC](https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916/10 "2023-01-30T21:52:39Z")

</div>

Ever since I learned how to integrate Enhanced Input into my projects, I’ve found it impossible to go back! It’s more involved and takes more work to set up than the default input system, but it’s absolutely worth it.

For me, one of the biggest benefits is additional options/flexibility for gamepad controls. if I wanna have actions that require holding a button, simultaneous button presses, all sorts of stuff…it’s way easier than trying to hack it together using Blueprint nodes alone.

I see you folks are also talking about CommonUI…I love it when it works, and utterly despise it when it doesn’t 😅 Still, it’s been my best (non-Marketplace) option for universal widget interaction with different input devices. I’m not very experienced with UI stuff, so I’m only using the ActivatableWidgets and WidgetStacks for now.

There’s a bug in UE5.1 that keeps putting my CommonUI widgets at the top-left corner of the screen, and I _really_ hope it gets fixed in the next update. Some people have found workarounds, but they haven’t worked for me so I’m waiting.

---

<div class="post-metadata">

**Author:** ![Roy\_Wierer.Seda145](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/roy_wierer.seda145/32/906551_2.png) [@Roy\_Wierer.Seda145](https://forums.unrealengine.com/u/Roy_Wierer.Seda145)\
**Post date:** [January 30, 2023, 10:22pm UTC](https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916/11 "2023-01-30T22:22:04Z")

</div>

> [@GV-Rafael-III](#):
>
> holding a button, simultaneous button presses

that and actions like tapping are quite handy to have as a standalone plugin.

---

<div class="post-metadata">

**Author:** ![GV-Rafael-III](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@GV-Rafael-III](https://forums.unrealengine.com/u/GV-Rafael-III)\
**Post date:** [January 30, 2023, 11:53pm UTC](https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916/12 "2023-01-30T23:53:40Z")

</div>

Certainly! That’s the beauty of the UE Marketplace, open-source plugins on Github, and the like. It’s important for people to have options.

And I totally get the desire to have an add-on that only provides what you need, without any extra fluff. Something tells me I’ll probably never touch half the stuff that CommonUI has to offer.

---

<div class="post-metadata">

**Author:** ![Roy\_Wierer.Seda145](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/roy_wierer.seda145/32/906551_2.png) [@Roy\_Wierer.Seda145](https://forums.unrealengine.com/u/Roy_Wierer.Seda145)\
**Post date:** [January 30, 2023, 11:56pm UTC](https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916/13 "2023-01-30T23:56:18Z")

</div>

In my experience this is what often leads to the code bloat but also the bugs that people are experiencing, code that says does “A” but actually does “B” and “C” is a very bad sign. mini modules are the best modules.

---

<div class="post-metadata">

**Author:** ![Roy\_Wierer.Seda145](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/roy_wierer.seda145/32/906551_2.png) [@Roy\_Wierer.Seda145](https://forums.unrealengine.com/u/Roy_Wierer.Seda145)\
**Post date:** [January 31, 2023, 12:00am UTC](https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916/14 "2023-01-31T00:00:21Z")

</div>

CommonUI adds a new widget or two but only half implemented the slate ones 🙂 that’s enough info to me XD

---

<div class="post-metadata">

**Author:** ![GV-Rafael-III](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@GV-Rafael-III](https://forums.unrealengine.com/u/GV-Rafael-III)\
**Post date:** [January 31, 2023, 3:45am UTC](https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916/15 "2023-01-31T03:45:31Z")

</div>

I haven’t done anything with Slate…seems a bit over my head 😅

---

<div class="post-metadata">

**Author:** ![xi57](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/xi57/32/1194660_2.png) [@xi57](https://forums.unrealengine.com/u/xi57)\
**Post date:** [January 31, 2023, 3:48pm UTC](https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916/16 "2023-01-31T15:48:06Z")

</div>

I’ll try to make a real tutorial for this, but for now I’ve outlined the major steps to take control of the mouse with CommonUI here:

> <https://github.com/x157/x157.github.io/issues/14>
>
> As of UE 5.1, this code implicitly changes the input mode to Menu:
> \`\`\`c++
> Play…erController-\>SetShowMouseCursor(true);
> \`\`\` 
> 
> And this code does not change the input mode at all:
> \`\`\`c++
> PlayerController-\>SetShowMouseCursor(false);
> \`\`\`
> 
> This means any time I want to show/hide the mouse as a part of normal game play I need to explicitly manage the input mode and mouse capture settings every time the mouse visibility changes.
> 
> In my case, I'm trying to use a widget that is on \`UI.Layer.Game\` that is sometimes active and sometimes not active. I do not want all the input to stop working for the game, I just want the user to be able to click a widget if they want to, or not click it, \*\*while still playing the game\*\*.
> 
> Ultimately I solved the problem by overriding \`ULyraHUDLayout::GetDesiredInputConfig\` such that it returns a different config for when I want the mouse to be visible during gameplay compared to what it returns when I want the mouse to be invisible. (Also had to explicitly disable \`bIsFocusable\` for the HUD Layout, or it sometimes starts stealing input).
> 
> This also required overriding the base \`ULyraActivatableWidget::GetDesiredInputConfig\` to manage look input ignore settings in the various scenarios since Lyra provides no visibility into or access to set look input ignore preferences.
> 
> Finally, a complete and total overhaul of \`UCommonUIActionRouterBase::ApplyUIInputConfig\` was required, I literally had to throw out that entire method and rewrite it all to get it to work. Part of that included not completely ignoring look/move input ignore preferences like it does by default. (In 5.1 this requires a custom engine, in 5.2 theoretically it will not).
> 
> With all of this in place, I had to write a virtual \`PlayerController-\>SetShowMouseCursor\` (which itself is not virtual, so another engine hack required) and any time I want to show or hide the mouse in my extended \`SetShowMouseCursor\` I also explicitly call my (hacked to be public) overridden Action Router \`ApplyUIInputConfig\` with the appropriate config for a visible mouse (or invisible as the case may now be).
> 
> For all of this to work, the HUD and the C++ need to agree that the appropriate Input Mode is \`All\` (Game+Menu). And the mouse capture in my case was \`CapturePermanently\_IncludingInitialMouseDown\` with an invisible mouse, and \`CaptureDuringMouseDown\` with a visible mouse.
> 
> Furthermore, since I use the mouse for Look input, I disable Look when the mouse cursor is visible, though Move is still active.

The problem is when you use CommonUI, it has complete and total control over the mouse and over user input. So you have to work within its framework.

Once you hack the engine to make CommonUI more accessible (easy hacks) then it will stop stealing inputs and swapping things on you when you don’t want or expect it to.

---

<div class="post-metadata">

**Author:** ![Roy\_Wierer.Seda145](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/roy_wierer.seda145/32/906551_2.png) [@Roy\_Wierer.Seda145](https://forums.unrealengine.com/u/Roy_Wierer.Seda145)\
**Post date:** [January 31, 2023, 4:08pm UTC](https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916/17 "2023-01-31T16:08:28Z")

</div>

I don’t know exactly what is going on in your github post. The situation you describe there (Input(Game + UI) + bShowMouseCursor) never worked properly in the original because of an issue with the sceneviewport:

> [Why Axis Value of MoveForward event is 0 when left mouse button event? - #5 by Roy\_Wierer.Seda145](https://forums.unrealengine.com/t/why-axis-value-of-moveforward-event-is-0-when-left-mouse-button-event/577686/5)

---

<div class="post-metadata">

**Author:** ![xi57](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/xi57/32/1194660_2.png) [@xi57](https://forums.unrealengine.com/u/xi57)\
**Post date:** [January 31, 2023, 5:08pm UTC](https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916/18 "2023-01-31T17:08:56Z")

</div>

I linked your forum post in the Github.

After making the changes I mentioned in that post, my UE 5.1 Lyra project now works great with mouse visible and invisible during Gameplay.

Note that I had to use `All` (Game+Menu) input mode, since that is the only way to get CommonUI “Escape” key handling to work. It seems that the `Game` only UI mode is not useable with CommonUI, at least the way Lyra 5.1 has it hooked up.

---

<div class="post-metadata">

**Author:** ![Roy\_Wierer.Seda145](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/roy_wierer.seda145/32/906551_2.png) [@Roy\_Wierer.Seda145](https://forums.unrealengine.com/u/Roy_Wierer.Seda145)\
**Post date:** [January 31, 2023, 7:10pm UTC](https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916/19 "2023-01-31T19:10:47Z")

</div>

I haven’t worked with Lyra but just this gives me anxiety.

---

<div class="post-metadata">

**Author:** ![Ares9323](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/ares9323/32/1194521_2.png) [@Ares9323](https://forums.unrealengine.com/u/Ares9323)\
**Post date:** [January 31, 2023, 8:12pm UTC](https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916/20 "2023-01-31T20:12:30Z")

</div>

An issue I encountered with Enhanced input is that opposite inputs are not really cancelling each other (like they used to do before).

If you use the default UE5.1 templates you can easily reproduce it: press A and D (or W and S) at the same time and the character will move instead of standing still. Do you know how to fix this?

[Next page](https://forums.unrealengine.com/t/enhanced-input-plugin-yes-or-no/759916.md?page=2)
