Supports all HID gamepad/joystick devices (steering wheels, flight controllers, joysticks, including gamepads like Xbox Controller, etc.)
Hotplug support
Support for multiple simultaneously connected devices, e.g. for multiplayer
Automatic detection of the axis range and mapping to gamepad range (-1 to +1), axis range (0 to 1) or raw values of the driver (configurable)
100% compatible to "Enhanced Input"
Automatic mapping of axes/buttons/POVs to engine keys
Manual mapping, via configuration, also possible
Up to 8 Axis, 128 Buttons, 4 POVs/Hat Switches/D-Pads
C++ and Blueprint function library for extended information such as: manufacturer, product name, serial number and information about axes and POVs
Built-in function to use Hat Switches/POVs directly as D-Pad buttons
About
"Enhanced Raw Input" is ideal for supporting all gaming input devices on Windows. All devices recognized by Windows as HID game controllers are supported. It is a direct replacement for the included āRaw Inputā plugin with extended capabilities and does not have the limitations of it, such as: no hotplug support, no multiplayer support, or simple use of the D-pad.
Plug in a generic joystick device (arcade stick, etc.) and press a button quickly. On a print, the print doesnāt print every time the button is pressed. More presses increase this delay (buffer?). Testing via a gamepad testing website does not reflect this, nor does Steam input, so this seems directly related to the plugin.
This makes this plugin fairly unusable in this stage.
Does this also happen when you start the game in standalone mode or as a packed game?
The Editor Viewport (especially in debug mode) can sometimes delay inputs.
just tried it out and it does not seem to offer good support to dualsense controllers. the dpad(POV Axis 1) is constantly firing āupā every tick. I also noticed that it usually fires button presses twice in a single tick when pressing a button. also, the debug menu is not showing up in console commands
Thanks for the feedback.
I can confirm the problem with the D-pad on the Dualshock controller.
A fix is in the works and will be available soon.
showdebug enhancedrawinput as a console command should work. Please note that the debug HUD is only displayed in the viewport or new window (PIE) and when the game is also started.
Do you mean when āAuto Assign Controllersā is enabled?
Yes, you can use āGet Axis Info for Deviceā, for example, to find out which axes the controller supports. Axis X (Axis Usage enum) is then assigned to the corresponding key: X to āEnhanced Raw Input Axis Xā, Y to āEnhanced Raw Input Axis Xā, RX to āEnhanced Raw Input Axis Rxā, etc.
For buttons and POVs, the corresponding index in the array: Button with index 0 is āEnhanced Raw Input Button 1ā, etc.
Yes.
With āUse shared deviceā, the controllers share a device, so to speak, meaning that Unreal only sees one controller, but both controllers function in parallel.
Otherwise, (without āUse shared Deviceā) the second controller is assigned to the second player (player controller). With enhanced input, the inputs are then treated independently of each other. No need for other keys.
Thanks for the offer. Iāll write you later next week.
We got a demo to be out on Monday and I fight with the enhanced input system not wanting to rebind the axis keys on the fly for some stupid reason. So I donāt really have the time for anything else.
Is it possible that the 1.1 version for 5.6 isnāt available?
Got it for 5.4 but 5.6 stays the same. Or is that another FAB bug I have to deal with?
I just checked: The version for 5.6 that I uploaded to FAB is definitely the right one.
But youāre right: The latest update isnāt showing up for 5.6, so Epic must have messed something up when checking and deploying it. Iāll sort it out with the support.
In the SendControllerEvents function, the message:
MessageHandler->OnControllerButtonReleased(ā¦) sometimes does not trigger. However, with the ShowDebug function, we obtain the correct value (false), but SendControllerEvents continues to send Pressed with repate.
Edit:
It is possible that the problem stems from the fact that the SendControllerEvents() and ProcessMessage() functions are not on the same rate and that ProcessMessage disables HasChanged before SendControllerEvents() is called.