godot-input-handling

Implements Godot InputMap actions, input buffering, rebinding, deadzones, and device-aware UI prompts.

Updated Aug 22, 2026
One-click install
npx skills add https://github.com/DecioLuvier/Shatterless --skill godot-input-handling-decioluvier
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: godot-input-handling
Source: https://github.com/DecioLuvier/Shatterless/tree/main/.claude/skills/godot/references/godot-input-handling
Command: npx skills add https://github.com/DecioLuvier/Shatterless --skill godot-input-handling-decioluvier

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve? Game input code often suffers from dropped inputs, stick drift, hardcoded keys that break rebinding, and UI clicks leaking into gameplay logic. This Skill provides proven Godot patterns and ready-to-use GDScript modules for building responsive, rebindable, multi-device input systems. ## Core Features & Use Cases - Input Buffering & Responsiveness: Frame-perfect jump/dash buffers with physics-tied decay, combo sequence validators, and deterministic input replay for testing. - Rebinding & Accessibility: Runtime action remapping with conflict detection persisted to user:// config, plus hold-vs-toggle accessibility preferences. - Multi-Device Support: Radial analog deadzones, mouse capture management for FPS games, multi-touch gestures, and dynamic keyboard/gamepad glyph prompt swapping. - Use Case: When building a platformer, use the input buffer scripts so a jump pressed 100ms before landing still fires, and the glyph prompt manager so UI hints switch automatically when the player picks up a controller. ## Quick Start Ask the AI to set up Godot input handling with buffered jump actions, a rebindable InputMap, and controller glyph prompts for your player controller.

Frequently Asked Questions about godot-input-handling

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add input buffering for jumps in Godot?▼

Input buffering stores a jump press in a timed window (typically 100-150ms) and consumes it when the character lands. Use a buffer that decays in _physics_process so the window matches CharacterBody consumption rather than render frame rate.

How to implement runtime key rebinding in Godot?▼

Runtime rebinding uses InputMap.action_add_event and action_erase_events with conflict detection, then persists mappings via ConfigFile to user://. This lets players remap controls in a settings menu without hardcoded keys.

Should gameplay input use _input or _unhandled_input in Godot?▼

Gameplay actions belong in _unhandled_input, which only fires after UI controls have consumed events. Using _input causes gameplay logic like shooting to trigger while the player clicks menus.

How do I fix analog stick drift in Godot?▼

Stick drift is fixed with a radial deadzone, preferably via Input.get_vector which applies a circular deadzone and clamps magnitude to 1.0. Manually subtracting axes creates square deadzones with uneven diagonal behavior.

How do I switch UI prompts between keyboard and controller in Godot?▼

Detect the last active device by checking for InputEventJoypadButton or InputEventJoypadMotion in a singleton, then broadcast a device_changed signal. All UI prompt elements listen to that signal and swap their glyph textures.

Why does my Godot game drop inputs at low frame rates?▼

Polling gameplay input in _process is frame-rate dependent, so presses can be missed at low FPS. Poll actions in _physics_process or handle them in _unhandled_input, and add a timed input buffer for fast-paced actions.