Keyboard shortcuts
Orbit assumes you would rather not use the mouse. Press ? anywhere to see the shortcuts that apply to what you are currently looking at.
Every shortcut on this page is read from the registry in the running app, so if one here disagrees with what ? shows you, trust ? and please file a docs issue.
The two you actually need
| Keys | Does |
|---|---|
| Cmd K | Command palette. Search issues, run any command, jump anywhere |
| ? | Show the shortcuts that apply right now |
The palette is the fastest route to most things. Type an issue identifier like ENG-42 to jump straight to it, or type what you want to do and run it.
On Windows and Linux, Ctrl stands in for Cmd everywhere.
Navigation
Press g, release it, then press the second key.
| Keys | Goes to |
|---|---|
| g i | Inbox |
| g m | My issues |
| g r | Pull requests |
| g p | Projects |
| g t | Sprints |
| g s | Standup |
| g v | Views |
| g a | Analytics |
| g d | Docs |
Issues
These work on the issue list and the board, acting on whatever is selected.
Moving around
| Keys | Does |
|---|---|
| j or Down | Next issue |
| k or Up | Previous issue |
| Enter | Open the issue |
| Space | Peek at the issue without leaving the list |
| Esc | Close the peek, then clear the selection |
Esc does one thing at a time on purpose. The first press closes the peek, the second clears the selection, so you never lose a selection you meant to keep.
Selecting
| Keys | Does |
|---|---|
| x | Select or deselect the current issue |
| Shift j or Shift Down | Extend the selection down |
| Shift k or Shift Up | Extend the selection up |
| Cmd A | Select every issue |
Selecting several issues and then pressing s, p, a or l changes them all at once.
Changing an issue
| Keys | Does |
|---|---|
| c | Create a new issue |
| s | Change status |
| p | Change priority |
| a | Assign |
| l | Change labels |
| i | Change project |
| m | Change milestone |
| Shift e | Change estimate |
Each opens a menu you then drive with the keyboard, so a then a few letters of a name then Enter reassigns an issue without touching the mouse.
Filters and views
| Keys | Does |
|---|---|
| f | Add a filter |
| Shift f | Remove the last filter condition |
| Alt Shift f | Clear every filter |
| Alt v | Save the current filter as a view |
| Esc | Close the filter editor |
Inbox
| Keys | Does |
|---|---|
| j or Down | Next notification |
| k or Up | Previous notification |
| u | Toggle read and unread |
| h | Snooze for a day |
| Backspace | Delete the notification |
Docs
| Keys | Does |
|---|---|
| c | New doc |
c only appears when you have permission to write docs, which contributors and guests do not.
View
| Keys | Does |
|---|---|
| Cmd B | Switch between board and list |
| [ | Toggle the left sidebar |
| ] | Toggle the right panel |
| Shift T | Switch between light and dark theme |
How the shortcuts resolve
Worth knowing if a shortcut ever does something you did not expect.
Shortcuts are registered with a scope, meaning the surface they belong to, and a priority. When more than one could match, Orbit picks in this order:
- A longer sequence beats a shorter one, so g i wins over a plain g.
- A higher priority wins, so a surface-specific shortcut beats a global one.
- Where those tie, the more specific one wins, meaning the one using Shift.
This is why j moves through notifications in the inbox and through issues on a board, without either surface having to know about the other.
Shortcuts do not fire while you are typing in a text field, unless they were explicitly registered to. Esc and Cmd K still work in an input, because you always need a way out.
Adding one
Shortcuts are registered with the useHotkey hook, and being in the registry is what makes a shortcut appear in the ? dialog. There is no separate list to update:
useHotkey('shift+z', duplicateIssue, {
label: 'Duplicate issue',
section: 'Issues',
scope: 'issues',
});Set advertised: false for something that should work but not be listed. See apps/web/src/lib/keyboard/ and CONTRIBUTING.md.