5.3 EnhancedActionKeyMapping missing PlayerMappableOptions

In 5.2 I was able to retrieve mappable keys data ( Name/DisplayName ) from
InputMappingContext->Mappings->Break EnhancedActionKeyMapping ->PlayerMappableOptions

In 5.3 for some reason PlayerMappableOptions was removed from EnhancedActionKeyMapping.

How can I access PlayerMappableOptions now?

I already tried to use “Action” pin for this - I can set mappable data in InputAction itself to make it work.
But it doesn’t work for InputActions like “Move” - it has 4 keys assigned in context and each has different mappable data - can’t set these in InputAction

1 Like

I’m also having issues with the new changes to Enhanced Input in 5.3. I wish they would update the Lyra project so we could see how things are now intended to be used.

I’m getting errors when I try to upload a screenshot so I’ll just use words here. I’ve been playing around with GetPlayerMappableKeySettings, which seems like it should work, but I get “Accessed none trying to read property PlayerMappableKeySettings” when I try to use it. Perhaps you’d have better luck with it. It contains variables for Name and Display Name, among others. Aside from that, I’m as lost as you are.

I just fixed the errors I was getting. I was foolishly getting PlayerMappableKeySettings from the Action variable of the EnhancedActionKeyMapping struct. Getting it from the structure directly, fixed all my issues.

So yeah, as far as I can tell, PlayerMappableKeySettings is the replacement for PlayerMappableOptions. Hope that helps.

That actually did work, thanks!

Yes, you have to get it using the pure function GetPlayerMappableKeySettings(), as well as having its EnhancedActionKeyMapping structure parameter intact–if you have the structure split, it won’t work (which is counterintuitive).

That’s all well and good, but still useless if you can’t effectively remap keys. I’m having similar problems with this Enhanced Input migrating from 5.2 to 5.3. Unfortunately, AddPlayerMappedKeyInSlot() is now deprecated, and the notes suggest to use UEnhancedInputUserSettings. But whenever I call GetEnhancedInputUserSettings() from EnhancedInputLocalPlayerSubsystem to be used to call MapPlayerKey(), I get Accessed None errors.

I’m using Blueprints. How do you guys remap your keys in 5.3?

You have to check ‘Enable User Settings (Experimental)’ in project settings, under Enhanced Input. That should stop the errors, but for me it still doesn’t work. The new mappings don’t actually apply.

Unfortunately, there is still a piece of the puzzle missing for me. MapPlayerKey() does this to search for an existing mapping:

if (FPlayerKeyMapping* FoundMapping = KeyProfile->FindKeyMapping(InArgs))

It fails. It then does this:

else if (FKeyMappingRow* MappingRow = KeyProfile->FindKeyMappingRowMutable(InArgs.MappingName))

Which also fails.

I have no idea how to add a new row to a profile.

I have the relevant Input Actions in my Input Mapping Context, but that’s not enough. There is something I’m missing. I took a look at the Lyra project, but it has the same issue: the mappings don’t actually apply, even though the ui updates. I can find no example implementation, nor any documentation to help with these new 5.3 changes.

Turns out I just had to call RegisterInputMappingContext() from EnhancedInputUserSettings on BeginPlay.

Thank you for the response and for finding that out!

Not sure why more people aren’t invested in this kind of thing. The PC market is still larger than the console market. You’d think key binding was a common process among players.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.