I'm nearly finished converting our old game to the new input system. So far, that has been great and I'm happy that a lot of the headaches caused by the old input manager are now gone. One of the last parts I'm implementing is showing the user tutorial messages that include which keys or buttons to use. Unfortunately, this has turned out to be pretty cumbersome. For displaying, I don't want to use the same more generic name that I'm using for rebinding and that's produced by InputControlPath.ToHumanReadableString, i.e. «Button South» for the X button on PS4 controller. I want to display the actual button of the used gamepad, "X" in this case. Controls have nice display names for that but I couldn't find an easy way to go from a binding to the control it has been resolved to. Right now I'm using InputControlPath.Matches with the effectivePath on every control of the action but that seems a bit brittle. It would be nice for a binding to have the index of the control it was resolved to or a method on actions that converts a binding index to a control index. Picking out the right binding is also not very straight-forward. E.g. I want to get the binding for a specific part of a composite with a specific group. Right now, it seems I have to walk through the bindings, check if I'm in the composite I'm looking for and then check against the part name. If the composite binding would somehow map to the actual composite instance, it would be much easier to find the right control (I think composites are currently not accessible at all, since they only live on InputActionState?). Is there a better way to get the display name of the control a binding has been resolved to? Also, display names for special keyboard keys are unusable right now, since they contain the unicode control character of the key. The input system should convert the control character to a proper display name.