Collapse Sidebar



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 ContextActionService/BindAction|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 ContextActionService/UnbindAction|unbound or becomes relevant to a different input, the Cancel UserInputState is passed, indicating that the input is no longer relevant to the action.


Name Value Description



Occurs when an InputObject starts to interact with the game. For example, a mouse button down, or a key down, or when a touch begins touching the screen.



Occurs each frame an InputObject has already begun interacting with the game and part of its state is changing. For example, a movement of the mouse position, a gamepad thumbstick, gamepad trigger button, or screen touch point.



When an InputObject finishes interacting with the game. For example, a mouse button up, or a key up, or when a touch stops touching the screen.



A special circumstance state that indicates this input is no longer relevant, particularly with ContextActionService. For example, binding two action-handling functions will cause the first to Cancel if an input was already in-progress when the second was bound.



A state that should never be seen in a game, essentially just marks the end of the enum.

Referenced by:

  • ContextActionService/CallFunction
  • GuiObject/TouchLongPress
  • GuiObject/TouchPan
  • GuiObject/TouchPinch
  • GuiObject/TouchRotate
  • InputObject/UserInputState
  • UserInputService/TouchLongPress
  • UserInputService/TouchPan
  • UserInputService/TouchPinch
  • UserInputService/TouchRotate