InputActions work wonderfully as is, however I encountered something when trying to make a custom backpack system.
Let’s say I wanted to create a numbered key backpack system for PC players. I would create an InputAction with 5 InputBindings underneath, all of which share the name of their respective keycode.
Now in my script, what I want to do is equip/unequip the Weapon that is associated with that numbered key by using the name of the InputBinding as a way to reference an index that points toward specific Weapon code:
Number_Keys.Pressed:Connect(function() -- No parameter provided
Weapons.Cycle_Weapon_To_Number( ? ) -- I have no InputBinding to pass to this function here to strip the Name from!
end)
I cannot possibly achieve what I want, because InputAction.Pressed() does not provide any parameter that points to the InputBinding that triggered the core action. There is no way to index a table and therefore trigger Weapon equips registered by numbered slots. In order to do this, I’d have to create an InputAction for each slot in the game that I intend on using, and place a single InputBinding underneath. That feels unintuitive considering the point of the InputAction being every binding underneath is to fulfill a sole action (which in this case is, switch to a weapon that is bound to that particular numbered key).
This is already something present within my current experience. It would make more sense to have the below:
Look like this so that I can use the name of the InputBinding as a method of shifting the Current Weapon up or down a slot (Left or Right D-Pad, for example).

Even if I used something like UserInputService:GetKeysPressed(), this will return a list of ALL keys being pressed at the time of calling the method. If I wanted to check for any particular number, I can’t easily do so because they could be pressing directional keys or other numbers, forcing me to write extra code to scrub regular keybinds from the table given, as well as assuming the first/last number found within that table, leaving the most recent number being pressed, ignored.
The only realistic scenario where you’d want this functionality is for something like a backpack where various input methods just cannot work the same in all ways, on all platforms. For example, Console players don’t have numbered keys, they only have bumpers or a D-Pad. Whereas PC does have numbered keys. You could say “just make one button cycle between them all” but in a fast-paced game, this is cumbersome at best.
If Roblox were to implement this into the InputActionSystem it would allow developers to achieve systems such as Backpack support for PC without additional overhead (as well as improving existing functionality for Controllers).

