Install Asset
Install via Godot
To maintain one source of truth, Godot Asset Library is just a mirror of the old asset library so you can download directly on Godot via the integrated asset library browser
Quick Information
A UE5-inspired Enhanced Input System for Godot 4 C#. Map physical keys to gameplay actions using context stacks β the same key can mean different things in different contexts. Configured entirely via the Inspector with no custom editor UI required.Features:- Context stack: push/pop InputMappingContext resources at runtime- Unified InputKey: keyboard, mouse, and gamepad in one resource- Modifier pipeline: Deadzone, Invert, Normalize, Scale, Swizzle- Trigger pipeline: OnKeyDown, OnKeyUp, OnChange, Continuous- Type-safe callbacks: Action<bool>, Action<float>, Action<Vector2>, Action<Vector3>- No Godot InputMap dependency- Auto-registers EnhancedInputSystem autoload on plugin enable
InputForge
A UE5-inspired Enhanced Input System for Godot 4 C#. Context-based input mapping with a modifier and trigger pipeline β configured entirely via the Inspector, no custom editor UI required.
Pure C# Β· Inspector-based Β· Zero Godot InputMap dependency Β· Godot 4.x
Why InputForge?
Godot's built-in input system hardcodes action names as strings. The same physical key always maps to the same action β there is no built-in way to have Space mean Jump in gameplay and Confirm in a menu without managing that yourself.
InputForge solves this with input contexts: a stack of mappings that can be pushed and popped at runtime. The same key can mean different things in different contexts, and the topmost context always wins.
Features
- Context stack β push/pop
InputMappingContextresources at runtime - Unified
InputKeyβ keyboard, mouse, gamepad buttons and axes in one Inspector-friendly resource - Modifier pipeline β transform raw values before they reach your code (deadzone, invert, normalize, scale, swizzle)
- Trigger pipeline β control when an action fires (on press, on release, on change, continuous)
- Type-safe callbacks β bind
Action<bool>,Action<float>,Action<Vector2>, orAction<Vector3>β no casting - No Godot InputMap dependency β bypasses hardcoded action strings entirely
Installation
- Copy the
addons/input_forgefolder into your project'saddons/directory. - In Godot: Project β Project Settings β Plugins and enable InputForge.
That's it β EnhancedInputSystem is registered as an autoload automatically.
Quick Start
1. Create an InputAction resource
In the FileSystem panel, right-click β New Resource β InputAction. Set ActionName to "Jump".
2. Create an InputKey resource
Right-click β New Resource β InputKey. Set:
InputTypeβBooleanDeviceTypeβKeyboardKeyboardKeyβSpace
3. Create an InputMapping resource
Right-click β New Resource β InputMapping. Assign:
TargetActionβ yourJumpactionInputSourceβ yourInputKey
4. Create an InputMappingContext resource
Right-click β New Resource β InputMappingContext. Add your InputMapping to the Mappings array.
5. Subscribe in code
[Export] public InputMappingContext GameplayContext { get; set; }
[Export] public InputAction JumpAction { get; set; }
public override void _Ready()
{
EnhancedInputSystem.GetInstance().AddContext(GameplayContext);
GameplayContext.BindAction(JumpAction, OnJump);
}
private void OnJump(bool pressed)
{
if (!pressed) return;
GD.Print("Jumped!");
}
public override void _ExitTree()
{
EnhancedInputSystem.GetInstance().RemoveContext(GameplayContext);
GameplayContext.UnbindAction(JumpAction, OnJump);
}
Documentation
- Architecture Overview
- InputKey Reference
- Modifiers Reference
- Triggers Reference
- Context Stack
- Extending InputForge
License
MIT
A UE5-inspired Enhanced Input System for Godot 4 C#. Map physical keys to gameplay actions using context stacks β the same key can mean different things in different contexts. Configured entirely via the Inspector with no custom editor UI required.
Features:
- Context stack: push/pop InputMappingContext resources at runtime
- Unified InputKey: keyboard, mouse, and gamepad in one resource
- Modifier pipeline: Deadzone, Invert, Normalize, Scale, Swizzle
- Trigger pipeline: OnKeyDown, OnKeyUp, OnChange, Continuous
- Type-safe callbacks: Action
- No Godot InputMap dependency
- Auto-registers EnhancedInputSystem autoload on plugin enable
Reviews
Quick Information
A UE5-inspired Enhanced Input System for Godot 4 C#. Map physical keys to gameplay actions using context stacks β the same key can mean different things in different contexts. Configured entirely via the Inspector with no custom editor UI required.Features:- Context stack: push/pop InputMappingContext resources at runtime- Unified InputKey: keyboard, mouse, and gamepad in one resource- Modifier pipeline: Deadzone, Invert, Normalize, Scale, Swizzle- Trigger pipeline: OnKeyDown, OnKeyUp, OnChange, Continuous- Type-safe callbacks: Action<bool>, Action<float>, Action<Vector2>, Action<Vector3>- No Godot InputMap dependency- Auto-registers EnhancedInputSystem autoload on plugin enable