roblox-input
Use when handling Roblox keyboard, mouse, gamepad, touch, motion input, or cross-platform action binding.
By tabooharmony · 447 installs
npx skills add tabooharmony/roblox-brain --skill roblox-input
Source repository · Upstream listing
Roblox Input
When to Load
Load for keyboard, mouse, gamepad, touch, motion, or cross platform action binding. Client side only. For simulation affecting input in a Server Authority project, use the Input Action System rather than traditional input events.
Quick Reference
Core events ( UserInputService ): InputBegan , InputChanged , InputEnded fire as (input: InputObject, gameProcessedEvent: boolean) . InputBegan does NOT fire for mouse wheel. Events only fire while the client window is focused.
Prefer ContextActionService over InputBegan for gameplay: free conflict resolution (chat won't steal H) and free mobile buttons:
BindAction(name, handler, createTouchButton, ...inputTypes) . Handler returns ContextActionResult.Sink to consume, .Pass to fall through.
Server Authority: use InputAction / InputContext for inputs that affect the core simulation, store the input state where the synchronized simulation can read it, and process it through RunService:BindToSimulation() (requires Workspace.UseFixedSimulation enabled in Studio). ContextActionService remains appropriate for UI only or classic project actions.
Gamepad UI focus: separate gameplay bindings from menu selection. Set GuiService.SelectedObject , mark controls Selectable , and test nested/modal navigation.
Gamepad: use GetConnectedGamepads() and listen to connection changes.
Touch: use high level gesture events or raw TouchStarted / TouchMoved / TouchEnded when tracking fingers.
Dragging: DragDetector (3D parts/models, physics capable) and UIDragDetector (UI) make objects draggable with zero code; events DragStart / DragContinue / DragEnd .
Pitfalls :
gameProcessedEvent=true in InputBegan → UI consumed it. Filter for gameplay.
BindAction is stack based: most recent wins. Use BindActionAtPriority .
Client only. Server scripts silently no op.
JumpRequest fires multiple times per jump; debounce.
Mouse wheel only fires InputChanged .
Full event tables and polling methods: references/full.md .