Check out our latest project ✨ OpenChapter.io: free ebooks the way its meant to be πŸ“–

InputForge

An asset by KerimCetinbas
The page banner background of a mountain and forest
InputForge hero image

Quick Information

0 ratings
InputForge icon image
KerimCetinbas
InputForge

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

Supported Engine Version
4.7
Version String
0.1.0
License Version
MIT
Support Level
community
Modified Date
11 hours ago
Git URL
Issue URL

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 InputMappingContext resources 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>, or Action<Vector3> β€” no casting
  • No Godot InputMap dependency β€” bypasses hardcoded action strings entirely

Installation

  1. Copy the addons/input_forge folder into your project's addons/ directory.
  2. 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 β†’ Boolean
  • DeviceType β†’ Keyboard
  • KeyboardKey β†’ Space

3. Create an InputMapping resource

Right-click β†’ New Resource β†’ InputMapping. Assign:

  • TargetAction β†’ your Jump action
  • InputSource β†’ your InputKey

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


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, Action, Action, Action
- No Godot InputMap dependency
- Auto-registers EnhancedInputSystem autoload on plugin enable

Reviews

0 ratings

Your Rating

Headline must be at least 3 characters but not more than 50
Review must be at least 5 characters but not more than 500
Please sign in to add a review

Quick Information

0 ratings
InputForge icon image
KerimCetinbas
InputForge

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

Supported Engine Version
4.7
Version String
0.1.0
License Version
MIT
Support Level
community
Modified Date
11 hours ago
Git URL
Issue URL

Open Source

Released under the AGPLv3 license

Plug and Play

Browse assets directly from Godot

Community Driven

Created by developers for developers