The UserInputState enum describes the state of an input that is currently or was recently performed. It is used by the InputObject.UserInputState property of the same name, as well as various UserInputService and GuiObject events.

Depending on the Enum.UserInputType, input may follow states differently.

  • Simple button and key presses generally follow a simple BeginEnd flow.
    • Gamepad trigger buttons are similar to button presses, but will use Change as the state of the button changes.
  • Mouse movement generally follows Begin (mouse-over) → ChangeEnd (mouse-leave).
    • Touch input behaves somewhat similarly to mouse movement. Begin and End occur when the user starts or ends touching the screen, respectively. The same InputObject is used for the same touch point.
  • Gamepad thumbstick controls will cause Change to occur each frame the position changes.


In the context of ContextActionService, binding action-handling functions using BindAction provides a UserInputState to the action handler when a relevant input is performed. If an in-progress input associated with a bound action is then unbound or becomes relevant to a different input, the Cancel UserInputState is passed, indicating that the input is no longer relevant to the action.