Download

UE4.26 - How to rename gamepad inputs to match specific controllers?

Hi, UE4 inputs are named in a very technical fashion, like: “Game Special Right” BUT… for a kid playing with an Xbox controller, that’s like a hieroglyphic, they just want: “Start button” the problem is that there is no Xbox button list and no way to make an easy edit in the widget blueprint.

I wonder if there is a possibility of renaming the entire UE button input list to match an specific controller? for instance if you play Mario for PS4, it makes a hudge “O” to press a face button, it doesn’t tell you, now press: Gamepad face button bottom LOL, even I would be like, pressing all buttons to figure out what is that…

and I´m not sure if we can use the widget blueprint to translate all buttons, because if a player tries to edit the controller buttons (settings) its going to keep bringing back the default UE input names.

Please help

Easiest way to solve this is by using a TMap<FKey, FText> (map from Key to Text in BP) and defining the custom text in there. If you need the map in one widget Blueprint only, you can define it there. You’ll most likely need it in tons of places all over the game though, so you’re better off creating a Blueprint function library or something similar to query the map.

OMG… that sounds like what I did not want to do, still no idea how to start, because there is so many gamepad inputs (almost 70), I would have to change their names with text edits for every single widget… I don´t understand why there is not a simple option in project settings to rewrite input names

Most games ship on more than one platform, and what’s the “A” button on an Xbox may be the “X” button on a Playstation, and so forth. Not to mention that most games that ship, are localized, and thus need to extract the names and pictures they use to display things, anyway.

The built-in names are more like “enum values” than they are “names,” anyway – they are not intended for end user display in any real game. If you choose to display internal enum values, that’s fine, but re-compiling the entire C++ game just because you want to use a slightly different internal enum name doesn’t seem like a good trade-off.

FWIW, you can build a DataTable that translates the input names to whatever you want to call them, and reference that asset from each place that wants to talk about them, so you only build this once.