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
8 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
8 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