Keyboard Shortcuts
Keyboard Shortcuts Reference
Overview
Complete reference for keyboard shortcuts in Cine Power Planner.
Every chord below is one the app actually binds, or a browser default the app deliberately leaves alone. The two are kept in separate tables, because "the app does this" and "your browser does this" fail in different ways when a shortcut does not work.
Scope matters more than the chord. Most shortcuts are not global. A chord bound on the Gear List tab does nothing on the dashboard, and the Shotlist has its own set. Each table says where its shortcuts are live.
Requirements
Functional Requirements
| ID | Requirement | Acceptance Criteria | Priority | Source |
|---|---|---|---|---|
| REQ-KBD-001 | The system shall bind global shortcuts for Save, Quick Switcher, New Project, Search and Help | Cmd/Ctrl+S → flush to storage; Cmd/Ctrl+K or Cmd/Ctrl+P → Quick Switcher; Cmd/Ctrl+Alt+N → new project; Cmd/Ctrl+F → search; Cmd/Ctrl+/ → Help home | Must | app/src/app/KeyboardShortcuts.jsx |
| REQ-KBD-002 | The system shall open this shortcuts reference on a bare ? | Press ? outside a text field with no modal open → the shortcuts overlay opens; Esc or ? closes it | Must | app/src/app/KeyboardShortcuts.jsx |
| REQ-KBD-003 | The system shall bind multi-select editing shortcuts on the Gear List tab: Select All, Copy, Paste, Delete, Clear selection | Cmd/Ctrl+A → select all; Cmd/Ctrl+C → copy; Cmd/Ctrl+V → paste as duplicates; Delete/Backspace → delete with confirm; Esc → clear | Must | useGearListSelectionShortcuts.js |
| REQ-KBD-004 | The system shall bind clipboard, delete, undo and reorder shortcuts on the Shotlist | Cmd/Ctrl+C/V → copy/paste shots; Delete → trash; Cmd/Ctrl+Z → undo; Cmd/Ctrl+A → select all; Alt+↑/Alt+↓ → reorder | Must | useShotlistKeyboard.js |
| REQ-KBD-005 | The system shall disable bare-character shortcuts when focus is in a text input or textarea, while modifier chords keep working there | Focus text input → press ? → character typed (not shortcut); press Cmd+K / Cmd+F / Cmd+/ → shortcut still fires | Must | app/src/app/KeyboardShortcuts.jsx |
| REQ-KBD-006 | The system shall let a surface override a global chord for its own use | Device Library Cmd/Ctrl+F focuses that page's search box instead of navigating away — a document-level listener calls preventDefault() first | Should | app/src/app/KeyboardShortcuts.jsx |
| REQ-KBD-007 | The in-app shortcuts overlay shall list only chords that are actually wired | Every row in getGlobalShortcutSections resolves to a binding in the source; adding an unwired row is a defect | Must | keyboardShortcutsSections.js |
Non-Functional Requirements
| ID | Requirement | Metric | Priority |
|---|---|---|---|
| NFR-KBD-001 | Shortcut listener shall not interfere with input field typing | Non-interference | Must |
Data Requirements
- Shortcut definitions: hardcoded in the event handlers. There is no stored shortcut configuration, and no user-facing customization UI — see Constraints below.
- Platform detection: the overlay renders
⌘/⌥on macOS andCtrl/Altelsewhere. The handler itself treatsmetaKeyandctrlKeyas equivalent, so both work on either platform.
Constraints & Limits
- Shortcuts are not customizable. There is no shortcuts section in Settings and nothing is persisted; this reference described one until 2026-09-07, and no such screen has ever shipped.
- Some chords are reserved by the browser and unreachable from a web page at all: the keydown is
consumed by the browser before the document sees it, so
preventDefault()cannot reclaim it.Cmd/Ctrl + N(New Window),Cmd/Ctrl + T(New Tab),Cmd/Ctrl + W(Close Tab) andCmd/Ctrl + Shift + N(Incognito) are all in this class. New Project therefore bindsCmd/Ctrl + Alt + N— the Alt leg is what makes it reachable. Never bind a bareCmd/Ctrl + N. - Every global chord needs a modifier. The global handler returns immediately unless
metaKeyorctrlKeyis held, so a bare-letter shortcut cannot fire.?is the sole exception and is handled before that check. - Bare-character shortcuts are suppressed inside text inputs and while a modal dialog is open.
Offline Behavior
- Fully available offline — keyboard shortcuts are client-side with zero network dependency
Dependencies
- Requires: None — self-contained feature
- Required by: None
Global Shortcuts
Live anywhere in the app. Cmd on macOS, Ctrl on Windows/Linux — the handler accepts either.
| Action | Windows/Linux | macOS | Notes |
|---|---|---|---|
| Quick Switcher | Ctrl + K | Cmd + K | Search projects, devices, contacts and pages |
| Quick Switcher | Ctrl + P | Cmd + P | Same surface — the old projects palette was folded into the Quick Switcher |
| New Project | Ctrl + Alt + N | Cmd + Opt + N | The Alt leg is required; a bare Cmd/Ctrl + N is owned by the browser |
| Search | Ctrl + F | Cmd + F | In a project: focuses category search. Elsewhere: opens the global Search page |
| Open Help | Ctrl + / | Cmd + / | Opens the Help home |
| Save (manual flush) | Ctrl + S | Cmd + S | Forces a write to IndexedDB + OPFS; autosave already runs after every change |
| Shortcuts overlay | ? | ? | Bare key — suppressed inside text fields and while a dialog is open |
| Close | Esc | Esc | Closes the active modal, dialog, dropdown or Quick Switcher |
Cmd/Ctrl + Pdoes not export a PDF, and there is no Export PDF shortcut. This reference claimed bothCmd + EandCtrl + Pfor Export PDF until 2026-09-07; neither has ever been bound, andCtrl + Phas for some time opened the Quick Switcher. Export from the project's Export panel.
Editing (inside a project)
Undo and redo cover gear-list and category edits while a project is open. They do nothing on the dashboard or in a read-only project, and the Floor Plan editor keeps its own separate history.
| Action | Shortcut | Description |
|---|---|---|
| Undo | Cmd/Ctrl + Z | Undo the last change |
| Redo | Cmd/Ctrl + Shift + Z | Redo the last undone change |
| Redo (Windows alt) | Ctrl + Y | Alternate redo binding |
| Save in item editor | Cmd/Ctrl + Enter | Commit the open item editor |
Gear List (multi-select)
Active on the Gear List tab. They pause while you are typing in a field or a dialog is open.
| Action | Shortcut | Description |
|---|---|---|
| Select All | Cmd/Ctrl + A | Select every item in the list |
| Copy | Cmd/Ctrl + C | Copy the selected items |
| Paste | Cmd/Ctrl + V | Paste — duplicates the copied items in their categories |
| Delete | Delete / Backspace | Delete the selected items (asks first) |
| Clear selection | Esc | Drop the current selection |
| Reorder category | Space, then ↑/↓ | Focus a category's drag handle, Space to pick up, arrows to move, Space to drop |
Shotlist / Schedule
Active on the Shotlist tab with one or more shots selected.
| Action | Shortcut | Description |
|---|---|---|
| Copy Shot | Cmd/Ctrl + C | Copy the selected shots |
| Paste Shot | Cmd/Ctrl + V | Paste shots into the list |
| Select All | Cmd/Ctrl + A | Select every shot |
| Delete Shot | Delete / Backspace | Move the selected shots to trash |
| Undo | Cmd/Ctrl + Z | Restore the deleted shots |
| Reorder | Alt + ↑ / Alt + ↓ | Move the selected shot up/down |
| Shortcut help | ? | Show the Shotlist's own overlay |
Tabs
| Action | Shortcut | Description |
|---|---|---|
| Previous tab | ← | With a tab bar focused |
| Next tab | → | With a tab bar focused |
| First / last | Home / End | Jump to the first or last tab |
Browser Defaults the App Respects
These are your browser's, not the app's. The app does not override them, and it cannot — several are consumed before the page sees them.
| Action | Shortcut | Description |
|---|---|---|
| Focus next / previous | Tab / Shift + Tab | Move between interactive elements |
| Confirm | Enter | Submit a form or activate the focused button |
| Toggle | Space | Toggle a focused checkbox or activate a button |
| Cut / Copy / Paste | Ctrl/Cmd + X / C / V | Native text editing inside a field |
| Reload / hard reload | Ctrl/Cmd + R / Shift + R | Reload; hard reload bypasses the cache |
| Developer tools | F12 | Browser dev tools |
Accessibility note: the Skip to content link is the first thing Tab reaches on any page —
press Tab then Enter to jump past the navigation. It is a focusable link, not a chord.
Shortcut Tips
Remembering Shortcuts
- Mnemonics: think of the first letter (S = Save, K = Quick switcher, F = Find) — New Project
adds
Altbecause the browser owns plainCmd/Ctrl + N. - Press
?— the in-app overlay is generated from the same list the app binds, so it is the fastest way to see what is live on your current surface. - Scope first: if a chord does nothing, check which tab you are on before assuming it is broken.
Conflict Resolution
If a shortcut doesn't work:
- Check whether you're in a text field — bare-character shortcuts (
?) are disabled there by design. Modifier chords (Cmd+K,Cmd+F,Cmd+/) are not, and do still fire. - Check the surface — Gear List and Shotlist shortcuts only work on those tabs.
- Check browser shortcuts — if the browser reacts instead of the app (a new window opens, the find bar appears), the chord is browser-reserved and the app never received it. See Constraints above.
- Check OS-level shortcuts.
Last Updated: 2026-09-07 Version: 0.790.2
