diff --git a/packages/cli/src/ui/components/ShellInputPrompt.tsx b/packages/cli/src/ui/components/ShellInputPrompt.tsx index ff1f95d7f..a22869f78 100644 --- a/packages/cli/src/ui/components/ShellInputPrompt.tsx +++ b/packages/cli/src/ui/components/ShellInputPrompt.tsx @@ -9,6 +9,7 @@ import type React from 'react'; import { useKeypress } from '../hooks/useKeypress.js'; import { ShellExecutionService } from '@qwen-code/qwen-code-core'; import { keyToAnsi, type Key } from '../hooks/keyToAnsi.js'; +import { keyMatchers, Command } from '../keyMatchers.js'; export interface ShellInputPromptProps { activeShellPtyId: number | null; @@ -33,6 +34,11 @@ export const ShellInputPrompt: React.FC = ({ if (!focus || !activeShellPtyId) { return; } + // Don't forward Ctrl+F to the PTY — it's used to toggle shell focus. + // Without this, the raw ^F control character gets written to the shell. + if (keyMatchers[Command.TOGGLE_SHELL_INPUT_FOCUS](key)) { + return; + } if (key.ctrl && key.shift && key.name === 'up') { ShellExecutionService.scrollPty(activeShellPtyId, -1); return;