Itâs not entirely true. A function cannot be defined by something like âmost of the timeâ. Either it is or it isnât. UserInputService.InputBegan is activated even when a button is clicked. ContextActionService:BindAction should do the same. Or, if not, there should be a good explanation for this, and more importantly, this limitation should be documented, which doesnât happen in both cases.
So, once again, letâs let Roblox judge this.
ContextActionService is used for, as the name implies, react to inputs depending on the context of the action. Clicking freely not on a button is obviously a different context than clicking on one, if you want the âalwaysâ behavior I recommend using what you yourself already mentioned:
Printing out the mouse input as a string from UserInputService.InputBegan will only print out âUnknownâ. This includes right mouse clicks, which means you canât differentiate between mouse 1 or mouse 2 inputs. I recommend using Mouse.Button1Down / Mouse.Button2Down instead