Bind Action/Axis mappings with modifiers other than shift/alt/ctrl?

I’m trying to set up some input mappings with slightly more complex control schemes and have run into a bit of a snag for how best to approach it. The use case would be something like having one set of gamepad facebutton actions normally, and then a different set of actions with the right shoulder RB button held down - and then doing the same thing for keyboard mappings.

The cleanest way would be to use the concept of modifiers, define one action for ‘face button lower’ and one for ‘face button lower’ + RB modifier, but this doesn’t seem to be a supported concept. Even the concept of an FInputChord is hardcoded to only deal with Shift,Ctrl,Alt,Cmd buttons. I’ve found a couple examples in blueprints of people hacking this concept into being by setting bools and timers, and one person tantalizingly made mention of this being ‘easier in C++’ but I haven’t found any C++ examples.

The only thing I can see that’s drastically different in C++ vs blueprint is that the binding can be split up instead of just using BindAction directly, but I can’t quite see how that helps me in this case. The only obvious thing I can see to do is to bind something to RB, and that function I unbind then rebind all the facebuttons to something different. While I can see that working, it doesn’t feel right.

I hope I’m missing something - am I?

1 Like

I just gave up on this and picked a different controller mapping for now. As soon as I started to think about how ugly it would be to unbind/rebind controls like that constantly, especially when I would want to rebind to an action that already had keys assigned to it (eg. ‘press 1 on kb’ or ‘press RB+Y’ on gamepad’ both assigned to “throw” action, but only the compound ‘RB+Y’ action needs unbinding/rebinding on the RB pressed). Plus it would mean pulling the specific keybinds into C++ instead of leaving them in the project config where they belong in editor.

Doesn’t seem to be properly supported in the Action bindings so I’ll work around it for now.