Download src/keybindings/template.ts from chenbhao/codev: direct link, hf CLI and curl.
- Browser
- Download file 1.72 kB
-
https://huggingface.co/chenbhao/codev/resolve/main/src/keybindings/template.ts
- Command line
-
hf download hf://chenbhao/codev/src/keybindings/template.ts
-
curl -L -o template.ts https://huggingface.co/chenbhao/codev/resolve/main/src/keybindings/template.ts
1.72 kB
| /** | |
| * Keybindings template generator. | |
| * Generates a well-documented template file for ~/.claude/keybindings.json | |
| */ | |
| import { jsonStringify } from '../utils/slowOperations.js' | |
| import { DEFAULT_BINDINGS } from './defaultBindings.js' | |
| import { | |
| NON_REBINDABLE, | |
| normalizeKeyForComparison, | |
| } from './reservedShortcuts.js' | |
| import type { KeybindingBlock } from './types.js' | |
| /** | |
| * Filter out reserved shortcuts that cannot be rebound. | |
| * These would cause /doctor to warn, so we exclude them from the template. | |
| */ | |
| function filterReservedShortcuts(blocks: KeybindingBlock[]): KeybindingBlock[] { | |
| const reservedKeys = new Set( | |
| NON_REBINDABLE.map(r => normalizeKeyForComparison(r.key)), | |
| ) | |
| return blocks | |
| .map(block => { | |
| const filteredBindings: Record<string, string | null> = {} | |
| for (const [key, action] of Object.entries(block.bindings)) { | |
| if (!reservedKeys.has(normalizeKeyForComparison(key))) { | |
| filteredBindings[key] = action | |
| } | |
| } | |
| return { context: block.context, bindings: filteredBindings } | |
| }) | |
| .filter(block => Object.keys(block.bindings).length > 0) | |
| } | |
| /** | |
| * Generate a template keybindings.json file content. | |
| * Creates a fully valid JSON file with all default bindings that users can customize. | |
| */ | |
| export function generateKeybindingsTemplate(): string { | |
| // Filter out reserved shortcuts that cannot be rebound | |
| const bindings = filterReservedShortcuts(DEFAULT_BINDINGS) | |
| // Format as object wrapper with bindings array | |
| const config = { | |
| $schema: 'https://www.schemastore.org/claude-code-keybindings.json', | |
| $docs: 'https://code.claude.com/docs/en/keybindings', | |
| bindings, | |
| } | |
| return jsonStringify(config, null, 2) + '\n' | |
| } | |