# Keyboard shortcuts

> View, search, and rebind every keyboard shortcut in ProductOS. Persisted in browser localStorage.

Source: https://productos.ca/documentation/pages/settings/keyboard (last reviewed 2026-10-13)

Every keyboard shortcut in ProductOS is listed here and rebindable per user. Press `?` anywhere for the same list in an overlay you can filter. Customizations persist in browser localStorage under `productos.keyboard-shortcuts`: they're per-browser, not synced across devices.

Wherever a button, menu item or palette row has a shortcut, its tooltip or right edge shows it in the same key-cap style: `⌘` and `⇧` on a Mac, `Ctrl` and `Shift` elsewhere, and a sequence as `G then F`. Every other tooltip in the app, including plain labels on icons and truncated text, uses the same dark style.

## How the keys are chosen

One rule for every control, so a key can usually be guessed before it's looked up:

| Rule | Examples |
| :--- | :--- |
| A letter acts | `C` creates, `P` runs ProductSense, `V` switches the view, `[` and `]` collapse and expand groups; on the Work page `T` and `B` go to the Table and Board views |
| Shift and a letter opens that control's menu or popover | `Shift+F` Filter, `Shift+C` Columns, `Shift+G` Group by, `Shift+S` Saved views, `Shift+E` Export, `Shift+N` Notifications, `Shift+A` Account |
| G then a letter goes to a page; S then a letter picks sprints | `G F` Feedback, `S B` Backlog |
| Ctrl (⌘ on a Mac) with a key edits or works app-wide | `Ctrl+F` search, `Ctrl+S` save, `Ctrl+K` palette, `Ctrl+B` sidebar |

Inside an open menu or popover, use the arrow keys, Enter, Esc and typing; its items don't have keys of their own. `J` and `K` move down and up as the arrows do, so your hand can stay on the home row, and in a menu `L` opens a submenu and `H` closes it. Typing in a search field inside one types the letters as usual. In Filter, the arrows move between fields, `→` or `Enter` opens a field's options (the arrows move through them and `Space` ticks one) and `←` or `Esc` goes back. In Saved views, the arrows move between views and `Delete` removes the one in focus. In Columns, the arrows move between columns, `Space` shows or hides one and `Alt` with an arrow moves it up or down.

## Moving through a list

`J` and `K` highlight the next and previous row, following groups as they are drawn. A group's header takes the highlight too: `H` closes the group, `L` opens it and `Enter` toggles it. `Enter` opens the highlighted row, `X` selects it and `Esc` clears the highlight (with rows selected, it clears the selection too). Clicking a row moves the highlight there, so `J` carries on from it after you close the item.

In the spreadsheet the highlight is the active cell: `J`, `K`, `H`, `L` and the arrow keys move it, `Enter` opens its row, and `F2` (or a double-click) edits the cell. `H` and `L` move the cell only while one is highlighted; press `Esc` first and they go back to compacting the top card and opening the Plan view. In a cell with a list of values (Status, Priority, Effort), `F2` opens the list on the current value: the arrows or `J` and `K` move, `Enter` or `Space` picks, `Esc` cancels. The view options menu beside Standard and Spreadsheet (`Shift+D`) turns the spreadsheet's gridlines on or off; `Space` flips them and the menu stays open. A hidden Description stays hidden in every view, including a saved view opened from a link. Each list reopens in the mode you last left it in, Standard or Spreadsheet, on any device you sign in on. A saved view still opens in its own mode, and the default in that menu applies to lists you haven't switched.

## What Esc does

One press, one step back, starting with whatever is closest:

- In a field with text (the command palette, the `?` overlay's filter, the Learn and Code searches), the first `Esc` clears the text and the next one closes.
- In a menu or popover, `Esc` closes it and nothing else, so a highlighted row or cell behind it stays until the next `Esc`; in a submenu, it goes back to the menu.
- On a list, `Esc` clears the highlighted row or cell, then the selected rows, then the status or signal chip above the list.
- In an open item, `Esc` goes back to the item you opened it from (when you opened a linked item from inside another), then closes. The close button closes it straight away.
- In Copilot, `Esc` in a chat you started from Insight goes back to Insight, keeping what you were typing; in ProductSense, it leaves an edit, then the Apply all confirm, then the history, then closes.
- While editing a comment, a cell or a dashboard layout, `Esc` cancels the edit and nothing else.

## Hold Ctrl to see the keys

Hold `Ctrl` (`⌘` on a Mac) for a moment and every control on the screen that has a shortcut shows its key in a small badge on it, drawn like the shortcut tooltip. Let go and the badges stay, so you can press a key as shown (`Shift+C`, not `Ctrl+Shift+C`); the next key, a click, `Esc` or switching tabs puts them away. Pressing `Shift` while holding `Ctrl` doesn't hide them. A quick `Ctrl`+key never shows them, so copy and paste don't flash anything. While a modal is open, only its own controls are marked, since the page's shortcuts are quiet behind it. A disabled control (Expand all when everything is already open) shows its badge dimmed. Some privacy-hardened browsers, such as LibreWolf, Mullvad Browser and Tor Browser, don't tell pages when `Ctrl` is pressed on its own; there, hold `Ctrl` and move the mouse a little to bring up the badges.

`Shift+K` shows the same badges without holding anything, in any browser. Press it again, `Esc` or any other key to hide them.

## What you'll see

- **Grouped list**: organized by where the shortcut works (see below)
- **Per-row**: action label, description, and the current binding as key caps. Click it to rebind; a reset icon appears on rows you've customized. Shortcuts handled outside the registry (the guided tour, the feedback widget, Esc to close) are shown without a button because they can't be rebound

## Where shortcuts work

- **General**: anywhere (command palette, the `?` overlay, AI overlay, customize menu, sidebar, notifications, account menu, page info, the guide for this page, theme, feedback widget, Learn panel, Learning Mode)
- **Go to**: `G` then a letter, anywhere except while a modal is open or a menu has focus
- **Lists**: any list page, while nothing is open over it
- **Selected rows**: when at least one row is selected
- **Feature list**: on the feature list and sprint board (My Work, sprints, board)
- **Roadmap**: on the roadmap; Search, Filter, Add, Switch view and ProductSense use the list keys
- **Notifications**: on the Notifications page, acting on the highlighted notification (the one `J` and `K` reach, or the one under the pointer)
- **Open item**: in an open modal, dock or page
- **Close**: `Esc` closes the modal, the dock (with focus in it) and the page (back to its list), unless something smaller is using `Esc` or there are unsaved changes
- **Right-click menu**: while a row's right-click menu is open
- **Feedback modal**: while a feedback item is open
- **ProductSense**: while the ProductSense panel is open
- **Copilot**: with focus in the Copilot, as a modal, docked or on its own page
- **Guided tour**: while a tour is running; not rebindable

Page shortcuts pause while you type in a field; `Esc` in the list or roadmap search leaves the field (the text stays), so the keys work again. A key that starts a sequence (`G`, `S`, `N`) waits up to a second and a half for the next key before any single-key shortcut sees it, so `G M` toggles Learning Mode without also toggling My Work.

## Standard bindings

| Action | Default binding | Where |
| :--- | :--- | :--- |
| Open command palette | `⌘K` / `Ctrl+K` | General |
| Show keyboard shortcuts | `?` | General |
| Show shortcuts on the page | Hold `⌘` / `Ctrl` (fixed), or `Shift+K` | General |
| Open AI overlay | `⌘.` / `Ctrl+.` | General |
| Collapse or expand the sidebar | `⌘B` / `Ctrl+B` (opens the menu on narrow screens) | General |
| Open notifications | `Shift+N` | General |
| Open account menu | `Shift+A` | General |
| About this page | `Shift+I` | General |
| Guide for this page (new tab) | `G` then `H` | General |
| Switch light and dark | `Shift+T` | General |
| Toggle feedback widget | `⌘/` / `Ctrl+/` (fixed) | General |
| Search the list | `⌘F` / `Ctrl+F` | Lists |
| Create new | `C` | Lists (the page's Add button) |
| Filter | `Shift+F` | Lists |
| Columns | `Shift+C` | Lists |
| Group by | `Shift+G` | Lists |
| Collapse all groups | `[` | Lists, while grouped |
| Expand all groups | `]` | Lists, while grouped |
| Switch view (standard and spreadsheet) | `V` | Lists |
| View options: default view, gridlines | `Shift+D` | Lists |
| Highlight the next row, previous row | `J`, `K` | Lists |
| Move the active cell left, right | `H`, `L` | Lists, while a cell is highlighted in the spreadsheet |
| Close or open the highlighted group | `H`, `L` | Lists, while a group header is highlighted |
| Open the highlighted row | `Enter` | Lists |
| Edit the active cell | `F2` | Lists, spreadsheet |
| Select or deselect the highlighted row | `X` | Lists |
| Clear the highlight and the selection | `Esc` | Lists |
| Saved views | `Shift+S` | Lists |
| Export | `Shift+E` | Lists |
| Run ProductSense on the list | `P` | Lists |
| Pick a ProductSense check | `Shift+P` (then `1` to `9`) | Lists |
| Previous page, next page | `,` and `.` | Lists |
| First page, last page | `<` and `>` | Lists |
| Rows per page | `Shift+R` | Lists |
| Compact or expand the top card | `H` | Lists with the signals bar |
| Focus menu (Mine, Delivery, Product, Business) | `Shift+L` | Lists with the signals bar |
| Trash for this list | `G` then `X` | Lists (Go to Trash elsewhere) |
| Select all visible rows | `⌘A` / `Ctrl+A` | Selected rows |
| Bulk action 1 to 9 | `1` to `9` | Selected rows |
| More bulk actions | `Shift+M` | Selected rows |
| Move selected rows to trash | `Shift+⌫` / `Shift+Backspace` | Selected rows |
| Toggle My Work | `M` | Feature list |
| Table view, sprint board | `T`, `B` | Feature list |
| Board columns: sprint, status, assignee | `Shift+B` | Sprint board |
| Current sprint | `S` then `C` | Feature list |
| Next sprint, previous sprint (from All, the current sprint first) | `S` then `N`, `S` then `P` | Feature list |
| All sprints, backlog, an earlier sprint | `S` then `A`, `B` or `E` | Feature list |
| Switch view: By period, By status, Gantt | `V` | Roadmap |
| Period scale: week, month, quarter, sprint | `D` | Roadmap, By period |
| Current period only | `N` | Roadmap |
| Pick periods | `Shift+W` | Roadmap |
| Show unscheduled | `U` | Roadmap |
| Card size: comfortable or compact | `Z` | Roadmap, columns |
| Show Work or initiatives | `I` | Roadmap |
| Zoom in, zoom out, reset | `=`, `-`, `0` | Roadmap, Gantt |
| Next notification, previous notification | `J`, `K` | Notifications |
| Open the notification | `Enter` | Notifications |
| Reply or answer | `R` | Notifications |
| Mark read or unread | `U` | Notifications |
| First, second, third quick action | `1`, `2`, `3` | Notifications |
| Save changes | `⌘S` / `Ctrl+S` | Open item |
| Copy link | `⌘⇧,` / `Ctrl+Shift+,` | Open item |
| Move to trash | `⌘⌫` / `Ctrl+Backspace` | Open item |
| More actions | `Shift+O` | Open item |
| Recently docked items | `Shift+H` | Open item, docked |
| The item's main button (Add key result, Add task…) | `Shift+↵` / `Shift+Enter` | Open item |
| Tab 1 to 9 | `⌥1` to `⌥9` / `Alt+1` to `Alt+9` | Open item |
| Cycle view mode | `⌘⇧M` / `Ctrl+Shift+M` | Open item |
| Cycle the Copilot's mode: Modal, Docked, Full page | `⌘⇧M` / `Ctrl+Shift+M` | Copilot |
| Expand or collapse the focused field | `⌘⇧↵` / `Ctrl+Shift+Enter` | Open item |
| Send comment | `⌘↵` / `Ctrl+Enter` | Open item |
| Close | `Esc` (fixed) | Open item |
| Open details | `⌘O` / `Ctrl+O` | Right-click menu |
| New feature linked to it | `N` then `F` | Right-click menu |
| Link to existing | `L` | Right-click menu |
| Assign team member | `A` | Right-click menu |

## Go to

| Page | Binding |
| :--- | :--- |
| Dashboard | `G D` |
| Golden Thread | `G G` |
| Feedback | `G F` |
| Themes | `G T` |
| Features | `G E` |
| Initiatives | `G I` |
| Releases | `G R` |
| Outcomes | `G O` |
| Roadmap | `G P` |
| Code | `G C` |
| Notifications | `G N` |
| Activity | `G A` |
| Settings | `G S` |
| Trash | `G X` |

The other sidebar pages (Copilot, Products, Team, Personas, Accounts and the Strategy, Intelligence, GTM and Sales pages) are a `Ctrl+K` and a few letters of the name away.

The sidebar shows each page's binding when you hover it, and the command palette shows it beside the page.

The settings page is the authoritative list: anything not in the registry isn't a real shortcut.

## Mouse modifiers on pills and rows

Anything that opens an entity honours the browser's link gestures: a pill (the chips that link a row to its features, initiatives, personas, accounts and so on, the `FEAT-`/`FDBK-` references in AI answers, the hover-preview chips inside detail panels), a row in any list table, an item in a dashboard list, a roadmap card, a Golden Thread card, an org-chart card.

| Gesture | Result |
| :--- | :--- |
| Click | Opens the entity in your preferred view mode (modal, dock or page) |
| `⌘`-click / `Ctrl`-click, or middle-click | Opens the entity in a new browser tab |
| `Shift`-click | Opens the entity in a new window (pills) or a new tab (rows and cards) |

Pills are real links, so the browser's own context menu ("Open link in new tab", "Copy link address") works on them too. Rows and cards aren't links, so their right-click menu carries an **Open in new tab** item instead. These are browser behaviours rather than registry shortcuts, so they can't be rebound.

## Rebinding

Click the binding chip on any row and press the new combination; it saves immediately (Esc cancels). ProductOS lists a collision under each conflicting row ("Conflicts with: …"): the same keys where both shortcuts can fire at once, or a single key that is also the first key of a sequence.

## Reset

Customized rows show a **Reset to default** icon that removes the customization from localStorage.

## Related

- [Workspaces and roles](https://productos.ca/documentation/guides/concepts/workspaces-and-roles)
- [Feedback](https://productos.ca/documentation/pages/golden-thread/feedback): the list shortcuts in use
