Last updated: 2026-05-24

Shortcut Panel

The shortcut panel lets you operate the terminal efficiently from your phone โ€” no need to remember complex key combinations. Double-tap anywhere on the terminal screen to open it, then tap shortcuts to send them instantly.


How to Open

Double-tap anywhere on the terminal screen to open the shortcut panel:

โ”Œโ”€ Shortcuts โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  [Claude] [Codex] [Gemini]  โ”‚  โ† Tabs grouped by AI tool
โ”‚                              โ”‚
โ”‚  Ctrl+C       Interrupt      โ”‚
โ”‚  Ctrl+C,Ctrl+C  Force quit   โ”‚  โ† Comma = send sequentially
โ”‚  Ctrl+L       Clear screen   โ”‚
โ”‚  UP/DOWN      Navigate       โ”‚
โ”‚  Enter        Send           โ”‚
โ”‚                              โ”‚
โ”‚  โ”€โ”€ Commands โ”€โ”€              โ”‚
โ”‚  /clear       Clear chat     โ”‚
โ”‚  /compact     Compress       โ”‚
โ”‚  /model       Switch model   โ”‚
โ”‚  /quit        Exit           โ”‚
โ”‚                              โ”‚
โ”‚  [Dismiss]                   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
  • Top Tabs: Grouped by AI tool (Claude / Codex / Gemini / Opencode)
  • Shortcuts Section: Common key combinations, tap to send
  • Commands Section: Common slash commands, tap to input
  • History Section: Recently executed commands
  • Tap outside or press back to close

tmux Session Naming Rules

The panel automatically switches to the corresponding AI tool tab based on your tmux session name.

Rule: The session name must contain a coding agent keyword (case-insensitive).

AI Tool Keywords Valid Names Invalid Names
Claude claude / anthropic backend-claude, claude-project my-session
Codex codex / openai codex-frontend, frontend-codex my-session
Gemini gemini / google gemini-backend, backend-gemini my-session
Opencode opencode opencode-main, main-opencode my-session

Examples

# โœ… Valid โ€” name contains "gemini", "claude", or "codex"
tmux new -A -s backend-gemini
tmux new -A -s claude-frontend
tmux new -A -s codex-refactor

# โœ… Also supports "anthropic", "openai", "google"
tmux new -A -s anthropic-backend
tmux new -A -s google-api

# โŒ Invalid โ€” no keywords, panel won't auto-match
tmux new -A -s my-session
tmux new -A -s dev

How it works: When the panel opens, it checks if the current tmux session name contains keywords (e.g., gemini). If matched, it automatically switches to that tab, saving you manual switching.


shortcuts.json โ€” Configuration File

The shortcut panel is controlled by a JSON configuration file located on your PC:

~/.hiterm/shortcuts.json

This file is auto-created when you first run hiterm pair. It contains default shortcuts and commands for Claude, Codex, Gemini, and Opencode.

File Structure

{
  "tools": [
    {
      "name": "Claude",
      "keywords": ["claude", "anthropic"],
      "shortcuts": [
        "Shift+Tab",
        "Ctrl+C",
        "Ctrl+C,Ctrl+C",
        "Ctrl+L",
        "UP/DOWN",
        "Enter",
        "Ctrl+Enter"
      ],
      "commands": [
        "/init",
        "/help",
        "/clear",
        "/compact",
        "/model",
        "/quit"
      ]
    }
  ]
}

Field Reference

Field Type Description
name string Tool name shown on the tab
keywords string[] Keywords to match tmux session names (case-insensitive)
shortcuts string[] Key combinations, tap to send to terminal
commands string[] Slash commands, tap to input to terminal

Customizing Shortcuts

Edit ~/.hiterm/shortcuts.json on your PC to customize. After saving, simply open the panel again in the app to see changes.

Comma Separator โ€” Sequential Execution

Use commas to send the same shortcut multiple times consecutively:

"shortcuts": [
  "Ctrl+C",              // Send 1 Ctrl+C
  "Ctrl+C,Ctrl+C",       // Send 2 Ctrl+C in a row (force quit)
  "Ctrl+C,Ctrl+C,Ctrl+C" // Send 3 Ctrl+C in a row
]

Comma separation works for any shortcut:

"shortcuts": [
  "Ctrl+D,Ctrl+D",  // Send 2 Ctrl+D (double exit confirmation)
  "Esc,Esc"         // Send 2 Esc
]

Customization Examples

Adding a New Tool Tab

Add a new object to the tools array:

{
  "name": "Cursor",
  "keywords": ["cursor"],
  "shortcuts": [
    "Ctrl+K",
    "Ctrl+L",
    "Ctrl+Shift+P",
    "Esc"
  ],
  "commands": [
    "/edit",
    "/chat"
  ]
}

Modifying Existing Shortcuts

Find the tool object and modify the shortcuts or commands array:

{
  "name": "Gemini",
  "keywords": ["gemini", "google"],
  "shortcuts": [
    "Ctrl+C",
    "Ctrl+L",
    "Ctrl+Z",
    "Alt+Enter"
  ],
  "commands": [
    "/init",
    "/clear",
    "/model",
    "/docs"
  ]
}

Removing a Tool

Remove the corresponding object from the tools array. The tab will no longer appear in the panel.


How the App Fetches Shortcuts

Auto-Refresh

Each time you double-tap to open the shortcut panel, the app fetches the latest configuration from your PC:

  1. App connects to your PC via SSH
  2. Runs cat ~/.hiterm/shortcuts.json remotely
  3. Parses JSON and renders the panel

This means: After editing shortcuts.json on your PC, simply close and reopen the panel (double-tap again) to see changes. No app restart or re-pairing needed.

Offline Fallback

If there's no active connection (network down or SSH unavailable), the panel uses cached configuration from the last successful fetch instead of showing blank.


Default Shortcuts Reference

The default configuration created by hiterm pair includes the following shortcuts and commands.

Claude

Keywords: claude, anthropic

Shortcut Description
Shift+Tab Switch focus
Ctrl+C Interrupt
Ctrl+C,Ctrl+C Force quit (double tap)
Ctrl+L Clear screen
UP/DOWN Navigate history
Enter Send message
Ctrl+Enter New line
Ctrl+X / Ctrl+V Cut / Paste
Ctrl+A/E Start / End of line
Ctrl+Left/Right Jump by word
Ctrl+W/U/K Delete word / to start / to end
Esc Exit edit mode
Ctrl+T Swap characters
Ctrl+G Cancel
Ctrl+Z / Ctrl+Y Suspend / Resume

Commands: /init /help /chat save/resume /clear /compact /skill /login /memory /model /quit /stats /theme /tools /vim /docs !

Codex

Keywords: codex, openai

Shortcut Description
Ctrl+C Interrupt
Ctrl+C,Ctrl+C Force quit
Ctrl+L Clear screen
Enter / Ctrl+Enter Send / New line
UP/DOWN Navigate history
Tab Complete
@ File reference
Esc Exit
Ctrl+Z / Ctrl+Y Undo / Redo
Ctrl+A/E Start / End of line
Ctrl+Left/Right Jump by word
Ctrl+W/U/K Delete

Commands: /init /help /login /clear /compress /copy /model /memory /quit /stats /theme /tools /vim /docs ! /config

Gemini

Keywords: gemini, google

Shortcut Description
Shift+Tab Switch focus
Ctrl+Y Redo
Ctrl+L Clear screen
Ctrl+C Interrupt
Ctrl+C,Ctrl+C Force quit
Enter / Ctrl+Enter Send / New line
Ctrl+X / Ctrl+V Cut / Paste
Alt+M Menu
Ctrl+T / Ctrl+G Swap chars / Cancel
Esc Exit
UP/DOWN Navigate history
Ctrl+A/E Start / End of line
Ctrl+Left/Right Jump by word
Ctrl+W/U/K Delete

Commands: /init /help /chat save/resume /clear /compress /copy /docs /editor /mcp /memory /model /quit /stats /theme /tools /vim !

Opencode

Keywords: opencode

Shortcut Description
Shift+Tab Switch focus
Ctrl+C Interrupt
Ctrl+C,Ctrl+C Force quit
Ctrl+L Clear screen
UP/DOWN Navigate history
Enter / Ctrl+Enter Send / New line
Ctrl+X / Ctrl+V Cut / Paste
Ctrl+Z / Ctrl+Y Undo / Redo
Ctrl+T Swap characters
Ctrl+W Delete word
Esc Exit
Ctrl+A/E Start / End of line
Ctrl+Left/Right Jump by word

Commands: /init /help /model /login /clear /compress /copy /quit /status /memory /tools /vim /docs ! /config /generate /review /plan


Troubleshooting

Panel shows blank

  • Check if ~/.hiterm/shortcuts.json exists on PC: cat ~/.hiterm/shortcuts.json
  • If missing, run hiterm pair to regenerate
  • Verify JSON is valid: python -m json.tool ~/.hiterm/shortcuts.json

tmux session doesn't match correct tab

  • Confirm the tmux session name contains the right keyword (e.g., gemini, claude, codex)
  • Matching is case-insensitive โ€” Backend-Gemini works the same as backend-gemini
  • If you modified the keywords field, reopen the panel in the app

Changes to shortcuts.json don't appear

  • Close the panel and double-tap again โ€” it fetches fresh each time
  • If still not updating, check if phone and PC Tailscale connection is working