# godot-input-handling

A skill that gives your coding agent ready patterns for Godot input: InputMap actions, gamepads, rebinding, deadzones and input buffering.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 509 installs · ★ 893
- Author: thedivergentai
- License: LGPL-3.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/thedivergentai/Game-Dev-Agentic-Skills/tree/HEAD/skills/godot-input-handling/SKILL.md
- Updated: 2026-10-16
- HTML: https://affpapa.org/en/nevibecode/skills/godot-input-handling

## What it does

The skill hands your agent working patterns for Godot input across keyboard, mouse, gamepad and touch. It ships as a set of GDScript files, one per scenario. Jump and dash feel is covered by `input_buffer.gd`, which decays the buffer in `_physics_process` so the window matches `CharacterBody` consumption instead of render FPS. Analog sticks go through `analog_deadzone_manager.gd` with a radial deadzone.

Rebinding lives in `safe_runtime_rebind.gd`: it detects conflicts and persists the layout to `user://input_rebinds.cfg` via `ConfigFile`. Separate scripts handle touch gestures, mouse capture for FPS, button prompts that follow the last active device, and combo validation. A Do-NOT-Load table says which files to keep apart — mobile gesture work does not need `mouse_capture_manager.gd`.

The skill is opinionated about a few things. Gameplay input belongs in `_physics_process()` or `_unhandled_input()`, because `_process()` is frame-rate dependent and drops presses at low FPS. Hardcoded checks like `KEY_W` are out: they break rebinding and non-QWERTY layouts. Mouse capture without a release shortcut traps the player. If your controls already run on hardcoded keys, that is worth a look.

## Requirements
- Works with: Godot

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add thedivergentai/Game-Dev-Agentic-Skills --skill godot-input-handling -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/godot-input-handling/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/godot-input-handling/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add thedivergentai/Game-Dev-Agentic-Skills --skill godot-input-handling -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/godot-input-handling/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add thedivergentai/Game-Dev-Agentic-Skills --skill godot-input-handling -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/godot-input-handling/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install thedivergentai/Game-Dev-Agentic-Skills godot-input-handling
```

2. **Manually: put the files in place**
- File: `.github/skills/godot-input-handling/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add thedivergentai/Game-Dev-Agentic-Skills --skill godot-input-handling -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/thedivergentai/Game-Dev-Agentic-Skills --path skills/godot-input-handling
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/godot-input-handling/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add thedivergentai/Game-Dev-Agentic-Skills --skill godot-input-handling -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/thedivergentai/Game-Dev-Agentic-Skills/tree/HEAD/skills/godot-input-handling/SKILL.md

## When to use it
- wire player controls through InputMap actions instead of key checks
- add a jump buffer so a press before landing is not lost
- build a rebinding screen that saves to `user://`
- support a gamepad with a radial deadzone and no stick drift
- swap button prompts between keyboard and gamepad as the device changes

## Example prompts
- Set up player controls in Godot through InputMap, no hardcoded keys
- Add a 100-150 ms jump buffer using `input_buffer.gd`
- Build a rebinding screen that saves the layout to `user://input_rebinds.cfg`

## Similar
- [godot-ui-control](https://affpapa.org/en/nevibecode/skills/godot-ui-control.md) — skill · 6700 installs
- [cli-anything-godot](https://affpapa.org/en/nevibecode/skills/cli-anything-godot.md) — skill · 548 installs
- [roblox-input](https://affpapa.org/en/nevibecode/skills/roblox-input.md) — skill · 1800 installs
- [godot-gdscript](https://affpapa.org/en/nevibecode/skills/godot-gdscript.md) — skill · 6500 installs
- [godot-best-practices](https://affpapa.org/en/nevibecode/skills/godot-best-practices.md) — skill · 2100 installs
- [godot-prompter](https://affpapa.org/en/nevibecode/plugins/godot-prompter.md) — plugin · ★ 867

From the same set: [thedivergentai/game-dev-agentic-skills](https://affpapa.org/en/nevibecode/by/thedivergentai/game-dev-agentic-skills.md) — 50 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
