Installation
Theme
Mode

Overlays & feedback

Keyboard shortcuts

The “press ? for help” sheet — a searchable, grouped reference of every shortcut in the app, rendered as real keycaps. It completes the Command Palette: the palette runs commands, this teaches the keys.

$npx shadcn@latest add @orbit/keyboard-shortcuts

Overview

Click the trigger, press ? anywhere (it's ignored while you're typing in a field), or wire your own button — all three open the same sheet. It ships with the default Orbit shortcut set; pass shortcuts to replace it.

Live · click or press ?

Open the sheet, then type in its search to filter the groups.

or press ? anywhere on this page

The sheet

A read-only cheat-sheet: grouped sections flow into columns, every chord renders as keycap chips, and the search filters by description or key — try “assign” or “g”. On Windows/Linux, ⌘ caps display as Ctrl.

Keyboard shortcuts

General

Open command palette+K
Search everything/
Toggle sidebar+B
Show this dialog?
Close / dismissEsc

Navigation

Go to HomeG+H
Go to My TasksG+T
Go to InboxG+I
Go to ProjectsG+P
Next / previous itemJorK

Create

New taskC
New task hereT
New project++P
New doc++D
Quick addQ

Task actions

Assign to…A
Set statusS
Set priorityP
Set due dateD
Add labelL
Toggle completeX
CommentM
Delete+

Selection

Select itemSpace
Select all+A
Extend selection+Jor+K
Clear selectionEsc

Views

Board viewV+B
List viewV+L
Calendar viewV+C
Group by…G+G
FilterF
Sort++S
Press ? anytime to open thisEsc to close

Capabilities

It’s a reference, not a menu — find a key fast and get back to work.

Search the list

Filter by what you want to do (“assign”) or by a key. The grouped columns collapse to just the matches.

Real keycaps

Each shortcut renders as styled ⌘ / ⇧ / letter caps with “+” joins and “or” alternates, so the chord is unmistakable.

Grouped in columns

General, Navigation, Create, Task actions, Selection and Views flow in a multi-column layout that fills the dialog.

Open from anywhere

? brings it up over the app, Esc dismisses. It never steals focus from what you were doing underneath.

Your own shortcuts

shortcuts takes any ShortcutGroup[] — each item is a label, a keys chord (one keycap per entry), and an optional alt chord shown after “or”. The title is swappable too.

Player shortcuts

Player

Play / pauseSpace
Seekor
Volumeor
FullscreenF

Library

Save to library+S
New playlist++N
Focus search/
Press ? anytime to open thisEsc to close

Props

PropTypeDefaultDescription
shortcutsShortcutGroup[]DEFAULT_SHORTCUTSGrouped shortcut data: { label, items: ShortcutItem[] }. The spec's Orbit set is exported as DEFAULT_SHORTCUTS.
openbooleanControlled open state. Pair with onOpenChange.
defaultOpenbooleanfalseInitial open state when uncontrolled.
onOpenChange(open: boolean) => voidCalled when the sheet opens or closes (trigger, ?, Esc, scrim, ×).
hotkeybooleantrueGlobal ? opens the sheet — ignored while typing in inputs. Turn off to bind your own.
titlestring"Keyboard shortcuts"Dialog heading, shown before the search field.
placeholderstring"Search shortcuts…"Search input placeholder.
inlinebooleanfalseRender the sheet in the page flow instead of a ? dialog — for docs and embeds.
childrenReactNodeTrigger slot — e.g. <KeyboardShortcutsTrigger />. Ignored when inline.
classNamestringClass applied to the 720px sheet.
PropTypeDefaultDescription
ShortcutItem.labelstringWhat the shortcut does — e.g. “Open command palette”. Searched.
ShortcutItem.keysstring[]The chord, one keycap per entry — e.g. ["⌘", "K"]. Searched. ⌘ displays as Ctrl on non-Apple platforms.
ShortcutItem.altstring[]Alternate chord, shown after “or” — e.g. J or K.
ShortcutGroup.labelstringSection header — e.g. “Navigation”. Groups with no matches disappear while filtering.
KeyboardShortcutsTrigger.labelstring"Keyboard shortcuts"Label of the “? Keyboard shortcuts” trigger button.
Keycap.labelstringExported keycap chip — 22px, mono, heavier bottom border — for building your own key hints.

Usage

Open it with ? and close with Esc. To run a command by name rather than recall a key, the Command Palette is the companion.

Do

Mirror the real bindings

Every key here must actually work in the app. A cheat-sheet that lies is worse than none.

Don’t

Make it the only way in

Shortcuts accelerate; they don’t replace. Every action needs a clickable path too, for discoverability and a11y.

Do

Group by task

Organize by what people are trying to do — Create, Navigate — not alphabetically by key. Intent is how they search.

Don’t

Overload one key

Avoid the same key meaning different things in the same context. Predictability is the whole value of a shortcut.

Keyboard & accessibility

The overlay is a Base UI Dialog — role=dialog with aria-modal, a focus trap that lands on the search field, and focus restore on close. The ? hotkey never fires while an input, textarea, select, or contenteditable has focus, and keycaps render as semantic <kbd> elements.

?Open the sheet from anywhere (ignored while typing)
TypeFilter shortcuts by description or key
TabMove between the search, close, and scroll area
EscDismiss the sheet