fix-keybinding-not-firing

Diagnoses why configured keyboard shortcuts fail to trigger commands in the editor.

Updated May 13, 2026
One-click install
npx skills add https://github.com/lovebirdsx/universe-editor --skill fix-keybinding-not-firing-lovebirdsx
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: fix-keybinding-not-firing
Source: https://github.com/lovebirdsx/universe-editor/tree/main/.claude/skills/fix-keybinding-not-firing
Command: npx skills add https://github.com/lovebirdsx/universe-editor --skill fix-keybinding-not-firing-lovebirdsx

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Keyboard shortcuts that are configured but never fire are hard to debug because the failure can happen at registration time (binding never entered the registry, or was overwritten by another entry for the same command) or at runtime (a when-clause evaluated false, or a dispatch guard swallowed the key). This Skill provides a systematic diagnostic workflow for the Universe Editor codebase to pinpoint exactly which layer dropped the keypress. ## Core Features & Use Cases - Diagnostic log interpretation: Enable the keyboard troubleshooting channel and read the diag line fields (same-key, monaco bridged, parsed/registered counts) to classify the failure before changing any code. - Decision-tree triage: Distinguish four failure branches — key never reaching the document listener (Monaco or OS swallowing it), binding missing from the registry, when-clause evaluating false, and runtime guards (editable targets, Quick Input, dialogs, editor focus) blocking execution. - Fix discipline with reproduction tests: Write a minimal failing unit test in UserKeybindingsService.test.ts first, then fix, then guard the full chain with a Playwright e2e spec. - Use Case: A user binds ctrl+alt+up to editor.gotoPreviousFold in keybindings.json but nothing happens. The Skill walks through counting log lines, identifying that Monaco's built-in insertCursorAbove consumed the key, and applying the -command unbinding fix. ## Quick Start Ask the assistant to diagnose why a specific keyboard shortcut in keybindings.json does not trigger its command, mentioning the key combination and the target command id.

Frequently Asked Questions about fix-keybinding-not-firing

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

FAQPage Schema
How do I debug a keyboard shortcut that is not working in a VSCode-like editor?

Enable the keyboard shortcuts troubleshooting log via the Developer command, press the key, and read the diagnostic line. The same-key count tells you whether the binding never registered (zero) or was blocked by a when-clause or runtime guard (greater than zero).

Why does my keybindings.json entry not trigger its command?

Common causes include the target command not existing at load time (lazy-registered Monaco commands get filtered out), another entry for the same command overwriting yours, or a when-clause evaluating false. The diagnostic log's parsed versus registered counts reveal which case applies.

Why does a shortcut work outside the editor but not when the editor is focused?

When the editor has focus, Monaco handles keys first and its built-in default bindings call stopPropagation, so the document listener never receives the key. Disable the conflicting Monaco command with a minus-prefixed entry in keybindings.json to unbind it at the Monaco level.

Can OS or GPU hotkeys intercept keyboard shortcuts before the app?

Yes. Combinations like Ctrl+Alt+Arrow keys are often grabbed by Intel or AMD graphics drivers as screen-rotation hotkeys, so the key never reaches the application at all. If the keypress is missing from logs both inside and outside the editor, disable the OS-level hotkey or choose a different binding.

Why does a chord keybinding like ctrl+k ctrl+t silently fail?

If a chord is registered as a single raw string without splitting on whitespace, the registry stores it as one unmatchable key. Register chords as a tuple of two keys, or ensure the registration layer splits space-separated chord strings before storing them.