Hey everyone,
I’ve been learning Godot for a couple of days, coming from Unreal Engine. While exploring the input system I found myself missing UE5’s Enhanced Input — specifically the ability to have the same physical key mean different things depending on the active context.
I decided to build something similar as a learning exercise, and it turned into a proper plugin. It’s probably rough around the edges since I’m new to Godot, so any feedback is very welcome!
What it does:
- Context stack — push/pop
InputMappingContextresources at runtime. The same Space key can be “Jump” in gameplay and “Confirm” in a menu - Unified InputKey — keyboard, mouse, and gamepad in one Inspector-friendly resource
- Modifier pipeline — Deadzone, Invert, Normalize, Scale, Swizzle
- Trigger pipeline — OnKeyDown, OnKeyUp, OnChange, Continuous
- Type-safe callbacks — bind
Action<bool>,Action<float>,Action<Vector2>, orAction<Vector3> - Zero Godot InputMap dependency
- Auto-registers
EnhancedInputSystemas an autoload on plugin enable
Quick example:
[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!");
}
Everything is configured from the Inspector — no extra code needed for common setups.
Links:
- GitHub: GitHub - pandoraoyun/InputForge · GitHub
- Godot Asset Library: pending approval

- Docs: InputForge/docs at main · pandoraoyun/InputForge · GitHub
Would love any feedback, especially from experienced Godot developers who might spot things I’ve missed!