René's URL Explorer Experiment


Title: feat: add configurable keybinds for slash commands by al4xdev · Pull Request #214 · lessweb/deepcode-cli · GitHub

Open Graph Title: feat: add configurable keybinds for slash commands by al4xdev · Pull Request #214 · lessweb/deepcode-cli

X Title: feat: add configurable keybinds for slash commands by al4xdev · Pull Request #214 · lessweb/deepcode-cli

Description: feat: add configurable keybinds for slash commands Summary Add a keybinds settings field that maps keyboard shortcuts directly to slash command actions, so users can trigger commands like /exit, /new, /skills without typing /. Also adds a /keybind slash command for runtime management (add/remove/list). Motivation Currently, all slash commands require typing /command + Enter. For frequent operations (exiting, starting a new session, opening the skills list), a keyboard shortcut is faster and more ergonomic. This feature lets users configure their own shortcuts and manage them at runtime without editing JSON by hand. Design Configuration New top-level field settings.keybinds: { "keybinds": { "ctrl+e": "exit", "ctrl+n": "new", "ctrl+s": "skills", "ctrl+m": "model" } } Shortcut format: ctrl+key, ctrl+shift+key, or meta+key Action value: any slash command name or skill name Project settings override user settings per shortcut key Custom keybinds only fire when no dropdown/menu is open (avoids conflicts) Runtime management The /keybind slash command supports three subcommands: /keybind add ctrl+e exit /keybind remove ctrl+e /keybind list Changes are persisted to settings.json immediately and take effect without restarting. Architecture The feature follows the same pattern as statusline and enabledSkills: Core layer (packages/core/src/settings.ts): KeybindMap type, normalizeKeybinds(), mergeKeybinds(), integration into resolveSettingsSources() Parser (packages/cli/src/ui/core/keybinds.ts): matchKeybind() converts shortcut strings (e.g. "ctrl+shift+g") into exact-modifier predicates against InputKey; buildKeybindMatchers() pre-compiles a map for fast per-keystroke lookup Input integration (PromptInput.tsx): keybinds are checked before hardcoded shortcuts, resolving the action name to a SlashCommandItem and dispatching via handleSlashSelection() Slash command (slash-commands.ts): new "keybind" kind with subcommand parsing in handleKeybindCommand(), reading/writing settings with project-over-user fallback Files Changed File Description packages/core/src/settings.ts +26 — KeybindMap type, normalize/merge, resolved settings packages/core/src/index.ts +1 — export KeybindMap packages/core/src/tests/settings-and-notify.test.ts +47 — 4 keybind merge/normalize tests packages/cli/src/ui/core/keybinds.ts New — parser module (42 lines) packages/cli/src/ui/core/slash-commands.ts +7 — "keybind" kind + built-in command packages/cli/src/ui/views/PromptInput.tsx +130 — keybind matchers memo, input integration, /keybind handler packages/cli/src/ui/views/App.tsx +7 — pass keybinds prop + onKeybindsChanged callback packages/cli/src/ui/index.ts +5 — barrel exports packages/cli/src/tests/keybinds.test.ts New — 19 unit tests packages/cli/src/tests/slash-commands.test.ts +1 — add "keybind" to built-in names docs/configuration.md +21 — Chinese docs docs/configuration_en.md +21 — English docs Verification npm run check — typecheck 0 errors, lint 0 errors (1 pre-existing warning), format clean npm test — 269 tests, 0 fail npm run build — successful

Open Graph Description: feat: add configurable keybinds for slash commands Summary Add a keybinds settings field that maps keyboard shortcuts directly to slash command actions, so users can trigger commands like /exit, /n...

X Description: feat: add configurable keybinds for slash commands Summary Add a keybinds settings field that maps keyboard shortcuts directly to slash command actions, so users can trigger commands like /exit, /n...

Opengraph URL: https://github.com/lessweb/deepcode-cli/pull/214

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:02fd00fa-299a-f80c-944b-f6088af53030
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idA176:4EB5C:728E9:98385:6A4D8F2D
html-safe-nonce80a0688dd626f5f47af4275413a2dfc16f1f34758afe2f5338eb773199e01543
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBMTc2OjRFQjVDOjcyOEU5Ojk4Mzg1OjZBNEQ4RjJEIiwidmlzaXRvcl9pZCI6IjQyNjEyNzI2ODIzNDU4OTM2NzciLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmaccc94fd76a79d905ed3b551a010645d12404420a984a93fe0edcc2a5f80b7c67c
hovercard-subject-tagpull_request:3967141616
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/lessweb/deepcode-cli/pull/214/files
twitter:imagehttps://avatars.githubusercontent.com/u/76815370?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/76815370?s=400&v=4
og:image:altfeat: add configurable keybinds for slash commands Summary Add a keybinds settings field that maps keyboard shortcuts directly to slash command actions, so users can trigger commands like /exit, /n...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None06b8a6144231bf3a234f1c2e9993861e07ce98a905912b114aa386c2d7e84b33
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/lessweb/deepcode-cli git https://github.com/lessweb/deepcode-cli.git
octolytics-dimension-user_id118287711
octolytics-dimension-user_loginlessweb
octolytics-dimension-repository_id1223512305
octolytics-dimension-repository_nwolessweb/deepcode-cli
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id1223512305
octolytics-dimension-repository_network_root_nwolessweb/deepcode-cli
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release74e2a9c78f1e38588de4f25885878349d721eedf
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/lessweb/deepcode-cli/pull/214/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Flessweb%2Fdeepcode-cli%2Fpull%2F214%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Flessweb%2Fdeepcode-cli%2Fpull%2F214%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=lessweb%2Fdeepcode-cli
Reloadhttps://github.com/lessweb/deepcode-cli/pull/214/files
Reloadhttps://github.com/lessweb/deepcode-cli/pull/214/files
Reloadhttps://github.com/lessweb/deepcode-cli/pull/214/files
Please reload this pagehttps://github.com/lessweb/deepcode-cli/pull/214/files
lessweb https://github.com/lessweb
deepcode-clihttps://github.com/lessweb/deepcode-cli
Notifications https://github.com/login?return_to=%2Flessweb%2Fdeepcode-cli
Fork 151 https://github.com/login?return_to=%2Flessweb%2Fdeepcode-cli
Star 1.7k https://github.com/login?return_to=%2Flessweb%2Fdeepcode-cli
Code https://github.com/lessweb/deepcode-cli
Issues 43 https://github.com/lessweb/deepcode-cli/issues
Pull requests 22 https://github.com/lessweb/deepcode-cli/pulls
Actions https://github.com/lessweb/deepcode-cli/actions
Projects https://github.com/lessweb/deepcode-cli/projects
Security and quality 0 https://github.com/lessweb/deepcode-cli/security
Insights https://github.com/lessweb/deepcode-cli/pulse
Code https://github.com/lessweb/deepcode-cli
Issues https://github.com/lessweb/deepcode-cli/issues
Pull requests https://github.com/lessweb/deepcode-cli/pulls
Actions https://github.com/lessweb/deepcode-cli/actions
Projects https://github.com/lessweb/deepcode-cli/projects
Security and quality https://github.com/lessweb/deepcode-cli/security
Insights https://github.com/lessweb/deepcode-cli/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Flessweb%2Fdeepcode-cli%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Flessweb%2Fdeepcode-cli%2Fissues%2Fnew%2Fchoose
al4xdevhttps://github.com/al4xdev
lessweb:mainhttps://github.com/lessweb/deepcode-cli/tree/main
al4xdev:feat/keybindshttps://github.com/al4xdev/deepcode-cli/tree/feat/keybinds
Conversation 0 https://github.com/lessweb/deepcode-cli/pull/214
Commits 7 https://github.com/lessweb/deepcode-cli/pull/214/commits
Checks 0 https://github.com/lessweb/deepcode-cli/pull/214/checks
Files changed https://github.com/lessweb/deepcode-cli/pull/214/files
Please reload this pagehttps://github.com/lessweb/deepcode-cli/pull/214/files
feat: add configurable keybinds for slash commands https://github.com/lessweb/deepcode-cli/pull/214/files#top
Show all changes 7 commits https://github.com/lessweb/deepcode-cli/pull/214/files
3614dbc feat(core): add KeybindMap type and keybinds to settings resolution al4xdev Jul 1, 2026 https://github.com/lessweb/deepcode-cli/pull/214/commits/3614dbc22ddc9540cb045b30bf83dc4189f65942
40b96ac feat(cli): add keybind parser module al4xdev Jul 1, 2026 https://github.com/lessweb/deepcode-cli/pull/214/commits/40b96acc552cb748c661fda07dab92d821db67e5
b0c662b feat(cli): add /keybind command and integrate keybinds into input han… al4xdev Jul 1, 2026 https://github.com/lessweb/deepcode-cli/pull/214/commits/b0c662becc8f8f102cd999fd143322d7b56ffdc7
9e878ad test: add keybind tests and update existing test suites al4xdev Jul 1, 2026 https://github.com/lessweb/deepcode-cli/pull/214/commits/9e878add7f09cca3bd02912e773529bba100d49a
f2cd225 docs: add keybinds configuration reference (zh + en) al4xdev Jul 1, 2026 https://github.com/lessweb/deepcode-cli/pull/214/commits/f2cd22516201f6c32fbd8af4a3789cdd49440495
e0cc9e2 fix(cli): refresh resolved settings after /keybind add or remove al4xdev Jul 1, 2026 https://github.com/lessweb/deepcode-cli/pull/214/commits/e0cc9e2852e9dccb909a00f65600e90ab5b279d0
fb745d6 feat(keybinds): add custom keybind management with --global flag al4xdev Jul 1, 2026 https://github.com/lessweb/deepcode-cli/pull/214/commits/fb745d67a7d2f1e3942a4ae57d991a2dc7ddfd9f
Clear filters https://github.com/lessweb/deepcode-cli/pull/214/files
Please reload this pagehttps://github.com/lessweb/deepcode-cli/pull/214/files
Please reload this pagehttps://github.com/lessweb/deepcode-cli/pull/214/files
backlog.md https://github.com/lessweb/deepcode-cli/pull/214/files#diff-2b3d6ced8c21c58c0e84d979cfca029c17022d2dc641b02cc57b033c9e8f1d50
contribution-plan.md https://github.com/lessweb/deepcode-cli/pull/214/files#diff-9d7ceb2b5a3d13f273c2942895023bf03559639ad62d8a1d960083f73492a1d8
configuration.md https://github.com/lessweb/deepcode-cli/pull/214/files#diff-17ed18489a956f326ec0fe4040850c5bc9261d4631fb42da4c52891d74a59180
configuration_en.md https://github.com/lessweb/deepcode-cli/pull/214/files#diff-f5f6cc8aa22f47faafd510f2402eb795ccd1e10c09f9b9640d788222ace08f95
keybinds.test.ts https://github.com/lessweb/deepcode-cli/pull/214/files#diff-f7920b21f4aa1a3eb4b25818659bdc1037b838db4a1a7396f83a6f5031df46a1
slash-commands.test.ts https://github.com/lessweb/deepcode-cli/pull/214/files#diff-21e84de1d0fa99525a673b0aa73e753171e6396f8eb53227e92f1c318456262f
keybinds.ts https://github.com/lessweb/deepcode-cli/pull/214/files#diff-2ded96b884b59ed695ecd496bda718d909f865e347d58c9567d12f0a4b94e102
slash-commands.ts https://github.com/lessweb/deepcode-cli/pull/214/files#diff-09b6a5a50bf9b1ebea432bd2b4b57bc629d855d29519cad30268ecfd54b008f9
index.ts https://github.com/lessweb/deepcode-cli/pull/214/files#diff-f6216f5f21a0404f397ec428fd7854f2ab3bd05c52b067691cef4e0a3eb19ced
App.tsx https://github.com/lessweb/deepcode-cli/pull/214/files#diff-85bb709e32daf446ca90dc746b77c6d1cf092ec6a70d6471ec26786047093dfe
KeybindsView.tsx https://github.com/lessweb/deepcode-cli/pull/214/files#diff-71afc6f359f5ed58ac59715f2e01b6e3492b6fdff04f4ba11b303167756d60ec
PromptInput.tsx https://github.com/lessweb/deepcode-cli/pull/214/files#diff-5d8e980323ff4917576c504c2289cb958e611b01ff3a7de332fcf4725a2e7522
index.ts https://github.com/lessweb/deepcode-cli/pull/214/files#diff-9a4ceebe7c6f86856371906c3f061d3b56b7457022b05179884a113e7ced67e8
settings.ts https://github.com/lessweb/deepcode-cli/pull/214/files#diff-dbb374fe62f23fdf770022c3b44c4d1d8ffbe3b81c6678a4f3e06ae045ebf83e
settings-and-notify.test.ts https://github.com/lessweb/deepcode-cli/pull/214/files#diff-08afccad280438a8c538673f556ca66fcb83a15b7412a036f35ec82ef568b6b2
.plan/backlog.mdhttps://github.com/lessweb/deepcode-cli/pull/214/files#diff-2b3d6ced8c21c58c0e84d979cfca029c17022d2dc641b02cc57b033c9e8f1d50
View file https://github.com/al4xdev/deepcode-cli/blob/fb745d67a7d2f1e3942a4ae57d991a2dc7ddfd9f/.plan/backlog.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/lessweb/deepcode-cli/pull/214/{{ revealButtonHref }}
.plan/contribution-plan.mdhttps://github.com/lessweb/deepcode-cli/pull/214/files#diff-9d7ceb2b5a3d13f273c2942895023bf03559639ad62d8a1d960083f73492a1d8
View file https://github.com/al4xdev/deepcode-cli/blob/fb745d67a7d2f1e3942a4ae57d991a2dc7ddfd9f/.plan/contribution-plan.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/lessweb/deepcode-cli/pull/214/{{ revealButtonHref }}
docs/configuration.mdhttps://github.com/lessweb/deepcode-cli/pull/214/files#diff-17ed18489a956f326ec0fe4040850c5bc9261d4631fb42da4c52891d74a59180
View file https://github.com/al4xdev/deepcode-cli/blob/fb745d67a7d2f1e3942a4ae57d991a2dc7ddfd9f/docs/configuration.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/lessweb/deepcode-cli/pull/214/{{ revealButtonHref }}
https://github.com/lessweb/deepcode-cli/pull/214/files#diff-17ed18489a956f326ec0fe4040850c5bc9261d4631fb42da4c52891d74a59180
https://github.com/lessweb/deepcode-cli/pull/214/files#diff-17ed18489a956f326ec0fe4040850c5bc9261d4631fb42da4c52891d74a59180
docs/configuration_en.mdhttps://github.com/lessweb/deepcode-cli/pull/214/files#diff-f5f6cc8aa22f47faafd510f2402eb795ccd1e10c09f9b9640d788222ace08f95
View file https://github.com/al4xdev/deepcode-cli/blob/fb745d67a7d2f1e3942a4ae57d991a2dc7ddfd9f/docs/configuration_en.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/lessweb/deepcode-cli/pull/214/{{ revealButtonHref }}
https://github.com/lessweb/deepcode-cli/pull/214/files#diff-f5f6cc8aa22f47faafd510f2402eb795ccd1e10c09f9b9640d788222ace08f95
https://github.com/lessweb/deepcode-cli/pull/214/files#diff-f5f6cc8aa22f47faafd510f2402eb795ccd1e10c09f9b9640d788222ace08f95
packages/cli/src/tests/keybinds.test.tshttps://github.com/lessweb/deepcode-cli/pull/214/files#diff-f7920b21f4aa1a3eb4b25818659bdc1037b838db4a1a7396f83a6f5031df46a1
View file https://github.com/al4xdev/deepcode-cli/blob/fb745d67a7d2f1e3942a4ae57d991a2dc7ddfd9f/packages/cli/src/tests/keybinds.test.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/lessweb/deepcode-cli/pull/214/{{ revealButtonHref }}
packages/cli/src/tests/slash-commands.test.tshttps://github.com/lessweb/deepcode-cli/pull/214/files#diff-21e84de1d0fa99525a673b0aa73e753171e6396f8eb53227e92f1c318456262f
View file https://github.com/al4xdev/deepcode-cli/blob/fb745d67a7d2f1e3942a4ae57d991a2dc7ddfd9f/packages/cli/src/tests/slash-commands.test.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/lessweb/deepcode-cli/pull/214/{{ revealButtonHref }}
https://github.com/lessweb/deepcode-cli/pull/214/files#diff-21e84de1d0fa99525a673b0aa73e753171e6396f8eb53227e92f1c318456262f
https://github.com/lessweb/deepcode-cli/pull/214/files#diff-21e84de1d0fa99525a673b0aa73e753171e6396f8eb53227e92f1c318456262f
Please reload this pagehttps://github.com/lessweb/deepcode-cli/pull/214/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.