InputPro — A Visual Input Binding Editor for Roblox
InputPro is a Studio plugin that gives you a complete visual editor for Roblox’s Input Action System. Configure keyboard, gamepad, and touch bindings without writing a single line of config code.
Get InputPro on the Creator Store | Full Documentation | Free Runtime (GitHub)
What is it?
The Input Action System is powerful, but setting it up means manually creating InputContext, InputAction, and InputBinding instances — or writing a lot of boilerplate. InputPro replaces all of that with a visual editor inside Studio.
3 steps:
-
Create contexts, actions, and bindings in the visual editor
-
Click Export — the plugin generates all the instances + a bootstrap script
-
Press Play — it just works
Features
Visual Binding Editor
-
Create and manage Input Contexts with priority and sink controls
-
Define Bool, Direction1D/2D/3D, and ViewportPosition actions
-
Bind keyboard keys and gamepad buttons with live listen mode — press a key and it’s bound instantly
-
Add bindings manually from a searchable dropdown
Touch Support
InputPro doesn’t generate touch UI — you design your own buttons, then link them to actions in the plugin. This gives you full control over your mobile UI while the runtime handles the wiring automatically.
Context System
Group actions into contexts like “Gameplay”, “UI”, “Vehicle”. Control priority (which context processes input first) and sink (block input from reaching lower contexts). Mark a default context to auto-enable on game start.
Code Generation
Select a LocalScript in the Explorer, go to Edit > Insert Code, pick an action, and the plugin generates BindPressed / BindReleased / BindStateChanged boilerplate directly into your script. The require line for InputProService is added automatically if missing.
Export & Bootstrap
File > Export Config creates the full instance hierarchy in StarterGui, auto-installs the runtime, and generates a bootstrap script — zero manual setup needed.
Additional Features
-
Analog trigger thresholds for R2/L2 (configurable pressed/released range)
-
Built-in help for reserved keys and action types
-
Full undo support via ChangeHistoryService
-
Session persistence — your work is saved across Studio sessions
Runtime API (Free & Open Source)
The runtime is free — your game doesn’t depend on a paid plugin at runtime. The plugin’s value is speed and convenience; the runtime works independently.
Install via the plugin (File > Install Runtime), download from GitHub, or add via Wally.
Quick Start Code
local InputProService = require(
game:GetService("ReplicatedStorage")
:WaitForChild("InputProRuntime")
:WaitForChild("InputProService")
)
-- Initialize from exported config
InputProService.Init("MyGameInput")
-- Bind events
InputProService.BindPressed("Jump", function()
print("Jump!")
end)
InputProService.BindStateChanged("Move", function(value)
-- value is a Vector2 for Direction2D actions
print("Move:", value)
end)
-- Switch contexts
InputProService.SetContext("UI", true) -- exclusive: disables all others
-- Auto-updating prompt hints
local hint = InputProService.CreatePromptHint("Interact", myButton, {
Corner = "TopRight",
Size = 28,
})
-- Shows "E" on keyboard, gamepad glyph on controller, hides on touch
API at a glance
| Category | Methods |
|---|---|
| Init | Init(configName), InitManual() |
| Actions | GetAction(name), BindPressed, BindReleased, BindStateChanged |
| Contexts | SetContext(name, exclusive?), DisableContext(name), ContextChanged signal |
| Device | GetActiveDevice(), ActiveDeviceChanged signal |
| Hints | CreatePromptHint(action, parent, config?), GetInputImage(action, device?) |
| Manual | CreateContext, CreateAction, CreateBinding — build configs entirely in code |
No Plugin? No Problem.
You can use the runtime without the plugin by building input mappings in code:
InputProService.InitManual()
InputProService.CreateContext("Gameplay", 1, false)
InputProService.CreateAction("Gameplay", "Jump", Enum.InputActionType.Bool)
InputProService.CreateBinding("Jump", Enum.KeyCode.Space)
InputProService.CreateBinding("Jump", Enum.KeyCode.ButtonA)
InputProService.SetContext("Gameplay", true)
InputProService.BindPressed("Jump", function()
print("Jump!")
end)
A pre-built test config is available if you want to try the runtime without the plugin.
Links
-
Creator Store — Get the plugin
-
Documentation — Full docs with API reference
-
GitHub — Free runtime, examples, changelog
-
Wally —
BerDerDevStuff/inputpro@1.0.0
Let me know if you have any feedback or find any bugs!





