Design System

Keyboard shortcuts

Keyboard first. Input is throughput.

This page establishes the system-wide keyboard shortcut convention. Individual products extend it with domain-specific shortcuts (map navigation in GRIDWATCH, threat classification in GHOST GRID, swipe-decisions in QRF), but they all follow the same registration, discovery, and collision rules.

Modifier conventions

Modifier Meaning
⌘ / Ctrl Primary modifier for destructive, state-changing, or navigation actions (save, undo, open, close)
⇧ Shift Inverse or extended variant (e.g., ⌘Z = undo, ⌘⇧Z = redo)
⌥ / Alt Alternate action, or cycle through modes
No modifier Single-letter shortcuts for high-frequency tactical actions (e.g., N for night mode, R for refresh track list)

Cross-platform mapping

  • macOS: ⌘ (Cmd), ⌥ (Option), ⇧ (Shift), Ctrl
  • Windows / Linux: Ctrl, Alt, Shift

Products auto-detect platform and display the correct modifier glyph in tooltips, menus, and the help overlay. Internally, shortcuts register as cmd+s (macOS) / ctrl+s (Win/Linux), with the framework mapping at runtime. Never hard-code one platform’s modifiers in user-visible text.

Categories

Three tiers, each with different registration and discovery rules:

Global shortcuts - work anywhere in the product:

Shortcut Action
⌘K Open command palette
⌘/ Open keyboard shortcut help overlay
⌘, Open settings
Esc Close modal · cancel active operation · dismiss tooltip
? Contextual help for current view

View-scoped shortcuts - active only in specific contexts (map, radar scope, decision prompt, report editor):

  • Registered when the view mounts, deregistered when it unmounts
  • Documented in the view’s own ? overlay specific to that view, and in the global ⌘/ overlay grouped by view
  • May reuse single-letter keys that are also used in other views (e.g., M means “toggle MGRS grid” in GRIDWATCH and “mute audio” in GHOST GRID - no global conflict because they never coexist)

Workflow shortcuts - multi-key sequences for power users (g then m for “go to map”):

  • Rare. Only for flows used 20+ times per session where reducing two keystrokes to a chord saves measurable time.
  • Always discoverable via ⌘K command palette - power users shouldn’t be the only ones who know they exist.

Reserved - do not override

The following shortcuts belong to the OS, browser, or platform and must never be reassigned. Re-binding any of them produces confusing, broken behavior:

  • Window and tab management: ⌘T, ⌘N, ⌘W, ⌘Q, ⌘R, ⌘⇧T
  • Standard clipboard and undo: ⌘C, ⌘V, ⌘X, ⌘A, ⌘Z, ⌘⇧Z - these work in inputs as expected; never remap them globally
  • Browser zoom: ⌘+, ⌘-, ⌘0 - native map zoom uses bare = / - / 0 without modifier
  • Browser functions: F5, F11, F12
  • Focus traversal: Tab, ⇧Tab - must never be hijacked for anything else

If a product shortcut collides with one of the above, the product loses - rebind to another combination. Arguing with the browser is a fight you can’t win and shouldn’t try.

The shortcut registry

FDT ships a shared registry at the design system layer. Before registering a new shortcut, a product calls into the registry which checks against:

  1. The global shortcut table (above)
  2. The reserved list (above)
  3. Already-registered view-scoped shortcuts within the currently-mounted scope

The registry refuses duplicate bindings within the same scope. It permits the same key across different scopes (the M example above) - collision is scoped, not absolute.

The registry also provides the command palette and help overlay their data - both are generated from the registered shortcuts, never hand-maintained.

Discoverability

Every shortcut appears in at least two places:

  1. Command palette (⌘K) - every action with a shortcut is also available as a searchable command. This is the non-expert fallback and the shortcut-discovery path. If you can’t remember the shortcut, you hit ⌘K, type the first few letters of the action, and see its shortcut displayed alongside.
  2. Shortcut help overlay (⌘/ or ?) - full keyboard map for the current view, grouped by category, searchable, copy-able as a reference card.

Shortcuts are also displayed inline on:

  • Button tooltips: Save · ⌘S
  • Menu items: right-aligned shortcut display in standard menu style
  • First-run onboarding: a single “tip” surface shown once per user per product, never again unless re-requested from settings

Accessibility

Keyboard shortcuts augment operation; they do not replace it. Every shortcut action must also be reachable via:

  1. A visible UI control (button, menu item, panel action)
  2. The ⌘K command palette

A shortcut that is the only path to an action fails accessibility - operators with motor impairments, users on tablets without keyboards, and users still learning the system all need the visible path.

Additionally, the shortcut display uses the correct ARIA attributes (aria-keyshortcuts="Meta+S" on the associated control) so screen readers announce the shortcut alongside the control’s label.

Display format

When rendering a shortcut inline in UI or documentation:

  • Use the platform-correct modifier glyph - macOS: ⌘ ⌥ ⇧ Ctrl · Windows/Linux: Ctrl Alt Shift
  • Wrap keys in <kbd> tags, rendered in JetBrains Mono
  • Separate keys with + (space, plus sign, space) - not commas, not hyphens, not slashes
  • Single letters render uppercase regardless of input case: <kbd>⌘ + K</kbd>, <kbd>N</kbd>, <kbd>Esc</kbd>
  • Function keys render as-written: <kbd>F1</kbd>
  • Arrow keys use symbols: <kbd>←</kbd> <kbd>→</kbd> <kbd>↑</kbd> <kbd>↓</kbd>

Example in a tooltip: Save draft · ⌘ + S

Example in a menu item (aligned right): Open file ⌘ + O

Per-product shortcut tables

Each product documents its full shortcut table in its own ⌘/ help overlay. These are illustrative, not exhaustive:

GRIDWATCH (map, tactical C2)

Shortcut Action
N Cycle night-mode intensity - standard → strict red → daylight bleed → standard
M Toggle MGRS grid overlay
G Go to coordinate (opens MGRS input)
T Cycle APP-6D symbology density - cluster / spread / hidden
19 Jump to zoom tier (Global → Theater → Operational → Tactical → Close → Micro)
Space Pause/resume mission clock

GHOST GRID (radar console, C-UAS)

Shortcut Action
C Classify selected track - cycles affiliation
F Engage / fire on selected track
J Deploy jammer at cursor
Space Pause/resume scenario clock
⌘1⌘4 Select countermeasure loadout

QRF (decision training, mobile-first)

Shortcut Action
/ Decision accept/reject (mirrors swipe)
Space Advance scenario
R Review current sector briefing
Esc Exit mission to operations room

Anti-patterns

  • Shortcuts for features without visible controls. Every shortcut needs a visible fallback.
  • Hijacking reserved shortcuts. If your “save” key is ⌘S and a user hits ⌘R expecting the browser to reload, they will reload the page and lose state. Do not rebind reserved keys.
  • Single-letter shortcuts inside text inputs. When the user is typing into a field, N should type the letter N, not switch night modes. The registry auto-suspends single-letter shortcuts when a text input is focused; products should not work around this.
  • Hidden shortcuts. Every shortcut is discoverable via at least two routes (⌘K palette and ⌘/ overlay). A shortcut that only appears in onboarding that you missed doesn’t exist.
  • Inconsistent modifier use. ⌘S meaning “save” in one product and “search” in another breaks muscle memory across the suite. Keep system-wide actions consistent across products.