> ## Documentation Index
> Fetch the complete documentation index at: https://ophel.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Keyboard shortcuts: customize every Ophel action

> View and remap every Ophel keyboard shortcut from Settings → Shortcuts, with conflict detection and per-action enable/disable controls.

export const ShortcutLegend = ({lang = "en"}) => {
  const isZh = lang === "zh";
  return <div className="ophel-shortcut-legend" role="note">
      <div className="ophel-shortcut-legend-title">
        {isZh ? "跨平台按键说明" : "Cross-platform key mapping"}
      </div>
      <div className="ophel-shortcut-legend-body">
        {isZh ? <>
            文档中的快捷键会同时显示 Windows/Linux 与 Mac 写法：
            <code>Ctrl</code> 对应 <code>Command</code>，
            <code>Alt</code> 对应 <code>Option</code>。唯一例外是提示词发送，
            <code>Ctrl+Enter</code> 在 Mac 上也使用 <code>Ctrl+Enter</code>。
          </> : <>
            Shortcuts show both Windows/Linux and Mac keys: <code>Ctrl</code> maps
            to <code>Command</code>, and <code>Alt</code> maps to
            <code>Option</code>. Prompt submit is the only exception:
            <code>Ctrl+Enter</code> remains <code>Ctrl+Enter</code> on Mac.
          </>}
      </div>
    </div>;
};

export const Shortcut = ({combo, mac, sameOnMac = false}) => {
  const keyLabels = {
    arrowup: {
      win: "Up",
      mac: "↑"
    },
    arrowdown: {
      win: "Down",
      mac: "↓"
    },
    arrowleft: {
      win: "Left",
      mac: "←"
    },
    arrowright: {
      win: "Right",
      mac: "→"
    },
    up: {
      win: "Up",
      mac: "↑"
    },
    down: {
      win: "Down",
      mac: "↓"
    },
    left: {
      win: "Left",
      mac: "←"
    },
    right: {
      win: "Right",
      mac: "→"
    },
    esc: {
      win: "Esc",
      mac: "Esc"
    },
    escape: {
      win: "Esc",
      mac: "Esc"
    },
    enter: {
      win: "Enter",
      mac: "Enter"
    },
    shift: {
      win: "Shift",
      mac: "⇧"
    },
    backslash: {
      win: "\\",
      mac: "\\"
    }
  };
  const modifierLabels = {
    ctrl: {
      win: "Ctrl",
      mac: "⌘"
    },
    control: {
      win: "Ctrl",
      mac: "⌘"
    },
    cmd: {
      win: "Ctrl",
      mac: "⌘"
    },
    command: {
      win: "Ctrl",
      mac: "⌘"
    },
    alt: {
      win: "Alt",
      mac: "⌥"
    },
    option: {
      win: "Alt",
      mac: "⌥"
    },
    shift: {
      win: "Shift",
      mac: "⇧"
    }
  };
  const normalizeToken = token => String(token || "").trim();
  const formatKey = (token, platform) => {
    const normalized = normalizeToken(token);
    const key = normalized.toLowerCase();
    const mapped = keyLabels[key];
    if (mapped) return mapped[platform];
    if (normalized.length === 1) return normalized.toUpperCase();
    return normalized;
  };
  const formatCombo = (value, platform) => String(value || "").split("+").map(normalizeToken).filter(Boolean).map(token => {
    const mapped = modifierLabels[token.toLowerCase()];
    return mapped ? mapped[platform] : formatKey(token, platform);
  }).join(platform === "mac" ? "" : "+");
  const windowsLabel = formatCombo(combo, "win");
  const macLabel = sameOnMac ? windowsLabel : mac || formatCombo(combo, "mac");
  const title = windowsLabel === macLabel ? windowsLabel : `Windows/Linux: ${windowsLabel}; Mac: ${macLabel}`;
  return <span className="ophel-shortcut" title={title}>
      <code>{windowsLabel}</code>
      {windowsLabel !== macLabel && <>
          <span className="ophel-shortcut-separator"> / </span>
          <code>{macLabel}</code>
        </>}
    </span>;
};

export const Icon = ({src, alt}) => <img src={typeof window !== "undefined" && typeof src === "string" && src.startsWith("/images/icons/") && (window.location.pathname === "/docs" || window.location.pathname.startsWith("/docs/")) ? `/docs${src}` : src} alt={alt} width="18" height="18" style={{
  display: "inline-block",
  verticalAlign: "-0.2em",
  margin: "0 0.15em"
}} />;

Ophel provides keyboard shortcuts for nearly every action — opening the panel, navigating the outline, managing conversations, triggering global search, and more. Every shortcut is customizable: you can remap keys, remove shortcuts you don't use, or disable all shortcuts at once with a single toggle.

## Viewing and editing shortcuts

1. Open **Settings** (<Shortcut combo="alt+," />)
2. Go to **Shortcuts**
3. Click any shortcut row to record a new key combination
4. Click **×** on a row to remove that shortcut entirely
5. Use the **Enable shortcuts** toggle at the top to disable all shortcuts at once

Ophel checks for conflicts before saving. If a new key combination is already in use, the conflicting action is highlighted so you can change the shortcut or remove the old binding.

<ShortcutLegend />

## Shortcut reference

<AccordionGroup>
  <Accordion title="Panel">
    | Action                                                                                                       | Default shortcut                   |
    | ------------------------------------------------------------------------------------------------------------ | ---------------------------------- |
    | <Icon src="/docs/images/icons/sparkle.svg" alt="Panel icon" /> Toggle panel open/closed                           | <Shortcut combo="alt+p" />         |
    | <Icon src="/docs/images/icons/snap-to-edge.svg" alt="Panel mode icon" /> Toggle panel mode (Edge Snap / Floating) | <Shortcut combo="alt+m" />         |
    | <Icon src="/docs/images/icons/outline.svg" alt="Outline icon" /> Switch to Outline tab                            | <Shortcut combo="alt+1" />         |
    | <Icon src="/docs/images/icons/conversation.svg" alt="Conversations icon" /> Switch to Conversations tab           | <Shortcut combo="alt+2" />         |
    | <Icon src="/docs/images/icons/prompt.svg" alt="Prompts icon" /> Switch to Prompts tab                             | <Shortcut combo="alt+3" />         |
    | <Icon src="/docs/images/icons/theme-system.svg" alt="Theme icon" /> Toggle light/dark theme                       | <Shortcut combo="alt+d" />         |
    | <Icon src="/docs/images/icons/settings.svg" alt="Settings icon" /> Open settings                                  | <Shortcut combo="alt+," />         |
    | <Icon src="/docs/images/icons/keyboard.svg" alt="Keyboard icon" /> Show shortcut reference                        | <Shortcut combo="alt+backslash" /> |
  </Accordion>

  <Accordion title="Outline">
    | Action                                                                                             | Default shortcut                   |
    | -------------------------------------------------------------------------------------------------- | ---------------------------------- |
    | <Icon src="/docs/images/icons/refresh.svg" alt="Refresh icon" /> Refresh outline                        | <Shortcut combo="alt+r" />         |
    | <Icon src="/docs/images/icons/expand-all.svg" alt="Expand all icon" /> Toggle expand all / collapse all | <Shortcut combo="alt+e" />         |
    | <Icon src="/docs/images/icons/outline.svg" alt="Outline level icon" /> Expand to heading level 1        | <Shortcut combo="alt+shift+1" />   |
    | <Icon src="/docs/images/icons/outline.svg" alt="Outline level icon" /> Expand to heading level 2        | <Shortcut combo="alt+shift+2" />   |
    | <Icon src="/docs/images/icons/outline.svg" alt="Outline level icon" /> Expand to heading level 3        | <Shortcut combo="alt+shift+3" />   |
    | <Icon src="/docs/images/icons/outline.svg" alt="Outline level icon" /> Expand to heading level 4        | <Shortcut combo="alt+shift+4" />   |
    | <Icon src="/docs/images/icons/outline.svg" alt="Outline level icon" /> Expand to heading level 5        | <Shortcut combo="alt+shift+5" />   |
    | <Icon src="/docs/images/icons/outline.svg" alt="Outline level icon" /> Expand to heading level 6        | <Shortcut combo="alt+shift+6" />   |
    | <Icon src="/docs/images/icons/arrow-up.svg" alt="Previous heading icon" /> Jump to previous heading     | <Shortcut combo="alt+arrowup" />   |
    | <Icon src="/docs/images/icons/arrow-down.svg" alt="Next heading icon" /> Jump to next heading           | <Shortcut combo="alt+arrowdown" /> |
    | <Icon src="/docs/images/icons/user-query.svg" alt="Questions icon" /> Toggle Questions filter           | <Shortcut combo="alt+q" />         |
    | <Icon src="/docs/images/icons/user-query.svg" alt="Only questions icon" /> Only Questions mode          | <Shortcut combo="alt+shift+q" />   |
    | <Icon src="/docs/images/icons/star.svg" alt="Bookmark icon" /> Toggle Bookmarks filter                  | <Shortcut combo="alt+c" />         |
    | <Icon src="/docs/images/icons/locate.svg" alt="Locate icon" /> Locate current position in outline       | <Shortcut combo="alt+l" />         |
    | <Icon src="/docs/images/icons/search.svg" alt="Search icon" /> Search outline                           | <Shortcut combo="alt+f" />         |
  </Accordion>

  <Accordion title="Conversations">
    | Action                                                                                                   | Default shortcut                  |
    | -------------------------------------------------------------------------------------------------------- | --------------------------------- |
    | <Icon src="/docs/images/icons/conversation.svg" alt="New conversation icon" /> New conversation               | <Shortcut combo="ctrl+shift+o" /> |
    | <Icon src="/docs/images/icons/refresh.svg" alt="Refresh icon" /> Refresh conversation list                    | <Shortcut combo="alt+shift+r" />  |
    | <Icon src="/docs/images/icons/locate.svg" alt="Locate icon" /> Locate current conversation                    | <Shortcut combo="alt+shift+l" />  |
    | <Icon src="/docs/images/icons/chevron-up.svg" alt="Previous conversation icon" /> Go to previous conversation | <Shortcut combo="alt+[" />        |
    | <Icon src="/docs/images/icons/chevron-down.svg" alt="Next conversation icon" /> Go to next conversation       | <Shortcut combo="alt+]" />        |
  </Accordion>

  <Accordion title="Editing and actions">
    | Action                                                                                    | Default shortcut                  |
    | ----------------------------------------------------------------------------------------- | --------------------------------- |
    | <Icon src="/docs/images/icons/clear.svg" alt="Stop icon" /> Stop AI generation                 | <Shortcut combo="alt+k" />        |
    | <Icon src="/docs/images/icons/edit.svg" alt="Input focus icon" /> Focus the input box          | <Shortcut combo="alt+i" />        |
    | <Icon src="/docs/images/icons/search.svg" alt="Global search icon" /> Open global search       | <Shortcut combo="ctrl+k" />       |
    | <Icon src="/docs/images/icons/export.svg" alt="Export icon" /> Export current conversation     | <Shortcut combo="ctrl+shift+e" /> |
    | <Icon src="/docs/images/icons/copy.svg" alt="Copy icon" /> Copy latest AI reply                | <Shortcut combo="ctrl+shift+c" /> |
    | <Icon src="/docs/images/icons/copy.svg" alt="Copy code icon" /> Copy last code block           | <Shortcut combo="alt+;" />        |
    | <Icon src="/docs/images/icons/scroll-lock.svg" alt="Scroll lock icon" /> Toggle scroll lock    | <Shortcut combo="alt+s" />        |
    | <Icon src="/docs/images/icons/eye.svg" alt="Zen mode icon" /> Toggle zen mode                  | <Shortcut combo="ctrl+shift+z" /> |
    | <Icon src="/docs/images/icons/prompt-queue.svg" alt="Prompt queue icon" /> Toggle prompt queue | <Shortcut combo="alt+j" />        |
    | <Icon src="/docs/images/icons/model-lock.svg" alt="Model selector icon" /> Show model selector | <Shortcut combo="alt+/" />        |
  </Accordion>

  <Accordion title="Navigation">
    | Action                                                                                                   | Default shortcut           |
    | -------------------------------------------------------------------------------------------------------- | -------------------------- |
    | <Icon src="/docs/images/icons/scroll-top.svg" alt="Scroll top icon" /> Scroll to top of conversation          | <Shortcut combo="alt+t" /> |
    | <Icon src="/docs/images/icons/scroll-bottom.svg" alt="Scroll bottom icon" /> Scroll to bottom of conversation | <Shortcut combo="alt+b" /> |
    | <Icon src="/docs/images/icons/anchor.svg" alt="Anchor icon" /> Return to anchor position                      | <Shortcut combo="alt+z" /> |
  </Accordion>

  <Accordion title="Site-specific">
    | Action                                                                                           | Default shortcut                |
    | ------------------------------------------------------------------------------------------------ | ------------------------------- |
    | <Icon src="/docs/images/icons/settings.svg" alt="Claude settings icon" /> Open Claude settings        | <Shortcut combo="ctrl+alt+c" /> |
    | <Icon src="/docs/images/icons/keyboard.svg" alt="Claude key switch icon" /> Switch Claude session key | <Shortcut combo="ctrl+alt+s" /> |
    | <Icon src="/docs/images/icons/settings.svg" alt="Gemini settings icon" /> Open Gemini settings        | <Shortcut combo="ctrl+alt+g" /> |
    | <Icon src="/docs/images/icons/theme-system.svg" alt="Theme settings icon" /> Open theme settings      | <Shortcut combo="ctrl+alt+t" /> |
    | <Icon src="/docs/images/icons/model-lock.svg" alt="Model lock icon" /> Open model lock settings       | <Shortcut combo="ctrl+alt+l" /> |
  </Accordion>
</AccordionGroup>

## Global URL

In **Settings → Shortcuts**, you can configure a **Global URL** — a URL that a global browser shortcut (set in your browser's extension shortcuts page) will open. This lets you jump directly to any AI platform with a single keypress, even when your browser is focused on another tab.
