A keyboard shortcut directory by Dominik.
The live site is at hotkeys.sh. It reads shortcuts from root-level JSON files so adding or fixing a shortcut is a small GitHub PR.
Most PRs only need to edit shortcuts.json. If the app or company does not exist yet, add it to companies.json first.
Each shortcut is an action. Actions can have multiple bindings when a key changes by page, mode, or focused surface inside an app.
{
"id": "linear-quick-find",
"companyId": "linear",
"action": "Quick find",
"description": "Jump to any issue, project, view, team, or document.",
"tags": ["navigation"],
"bindings": [
{
"context": "global",
"contextLabel": "Anywhere in Linear",
"keys": {
"mac": ["Cmd", "K"],
"windows": ["Ctrl", "K"],
"linux": ["Ctrl", "K"]
}
},
{
"context": "issueView",
"contextLabel": "Issue detail page",
"keys": {
"mac": ["Cmd", "Shift", "K"],
"windows": ["Ctrl", "Shift", "K"],
"linux": ["Ctrl", "Shift", "K"]
},
"note": "Use this when the regular command menu is bound to issue actions."
}
]
}Company entries look like this:
{
"id": "linear",
"name": "Linear",
"slug": "linear",
"website": "https://linear.app",
"category": "Project management"
}Rules:
id,companyId, andcontextshould be stable slugs.companyIdmust match an existing company incompanies.json.bindingsmust contain at least one item.- Each binding needs a
context,contextLabel, and at least one OS insidekeys. - If an OS is missing, the UI falls back from the selected OS to
mac, thenwindows, thenlinux.
/api/companies/api/companies?q=git/api/companies?category=editor/api/shortcuts/api/shortcuts?company=linear/api/shortcuts?context=issueView/api/shortcuts?tag=navigation/api/shortcuts?q=command
The route data files in src/app/api/**/data.json are symlinks to the root JSON files.
pnpm devOpen http://localhost:3000.
Useful commands:
pnpm lint
pnpm build
pnpm formatIf the API symlinks are missing, run:
node scripts/ensure-symlinks.mjs- Next.js App Router
- React
- Tailwind CSS
- Biome