Keyboard shortcuts + the '?' cheat sheet
Every keyboard shortcut is declared once, by its own operation; the same declaration drives both the key handler and a discoverable panel (press '?').
What it does
Press ? (Shift+/) anywhere in the grid to open a categorized list of every keyboard shortcut — grouped as Navigation, Edit, Formatting, and Help — each row showing its action and its chord (e.g. "Bold — Ctrl+B"). Press Escape or click outside to close it.
The Navigation group documents the grid's own keys, which belong to no single operation: arrow keys move one cell, Tab / Shift+Tab move to the next and previous cell, Ctrl+Arrow jumps to the edge of the data, and Escape / Shift+Escape leave the grid.
Those last two are the keyboard way OUT. Because Tab moves between cells rather than between controls (as it does in a spreadsheet), the grid would otherwise have no exit: Escape hands focus to the controls after the grid — the sheet tabs and everything below them — and Shift+Escape hands it to the controls before the grid — the formula bar, the toolbar and the menu bar. Shift reverses the exit exactly as it reverses Tab, and a single direction is not enough: the natural way back from a forward exit is Shift+Tab, which walks straight into the grid again.
Both are announced by assistive technology from the grid itself (the grid publishes them as its keyboard shortcuts), so they are discoverable without opening this panel first. Leaving does not change the selection — the active cell is still there when you come back. You land on a small labelled control that says which way to keep going, and pressing Enter on it returns you to the grid.
Verified behavior
Matches Google Sheets: Individually, Studio's bindings already match Google Sheets: Ctrl+B bold, Ctrl+I italic, Ctrl+C/X/V copy/cut/paste, Ctrl+Z undo, Ctrl+Y (or Ctrl+Shift+Z) redo, Ctrl+D/R fill down/right, and Ctrl+Shift+7 all-borders are the same chords Sheets uses (each verified in its own feature — bold, clipboard, undo, fill, and borders — this manifest doesn't re-assert them, only that they're all reachable from one categorized list). The cheat-sheet TRIGGER itself is a deliberate divergence: Google Sheets opens its shortcut reference on Ctrl+/ (Cmd+/ on Mac). Studio binds a bare '?' (Shift+/) instead, following the newer cross-app convention (Gmail, Slack, GitHub, Trello, Notion) — chosen so it doesn't compete with Ctrl+/, which several browsers/extensions already reserve. Excel has no single-key shortcut-list binding to match either way (its shortcuts live in a Help-pane search), so there's no Excel parity claim to make here.
Shift+/ opens a categorized panel listing the registry's shortcuts
Given
When I click A1, then press Shift+?
Then
[data-testid="shortcuts-panel"]is visible containing "Bold"
The panel documents the grid's own navigation keys, including the way out
Given
When I click A1, then press Shift+?
Then
[data-testid="shortcuts-panel"]is visible containing "Leave the grid"
Escape hands keyboard focus out of the grid, to the controls after it
Given
When I click A1, then press Escape
Then
- keyboard focus is outside the grid
- keyboard focus is inside
[data-testid="grid-exit-sentinel"]
Shift+Escape hands focus out backwards, to the controls before the grid
Given
When I click A1, then press Shift+Escape
Then
- keyboard focus is outside the grid
- keyboard focus is inside
[data-testid="grid-exit-sentinel-before"]
Leaving the grid keeps the selection, so coming back resumes on the same cell
Given
When I click B2, then press Escape
Then
- the active cell is B2
- the selection is just B2 — it did not extend
- keyboard focus is outside the grid
Escape closes the panel
Given
When I click A1, then press Shift+?, then see [data-testid="shortcuts-panel"] on screen, then press Escape
Then
[data-testid="shortcuts-panel"]is hidden
References adjust correctly on fill and paste
Fill or paste a formula and its references retarget the Google-Sheets way — relative shift, $-anchored stay put (and now compute), text and function names untouched.
Spill a dynamic array from its anchor
A dynamic-array formula (e.g. =SEQUENCE) renders across the grid from its anchor — the anchor shows the array's first value and the rest spill into read-only echo cells; obstructing the range shows a spill conflict.