From 728af38c52fb9aa81587ba2b04916047557d45eb Mon Sep 17 00:00:00 2001 From: Askhz <1361267452@qq.com> Date: Tue, 19 May 2026 16:16:24 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20Ctrl+Enter=20?= =?UTF-8?q?=E5=9C=A8=E6=A0=87=E5=87=86=E7=BB=88=E7=AB=AF=E4=B8=AD=E5=BA=94?= =?UTF-8?q?=E6=8F=92=E5=85=A5=E6=8D=A2=E8=A1=8C=E8=80=8C=E9=9D=9E=E5=8F=91?= =?UTF-8?q?=E9=80=81=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - parse-keypress.ts: \n (LF) 字节标记为 ctrl=true,因为标准终端中 Ctrl+Enter 发送 \n,需与普通 Enter (\r) 区分 - defaultBindings.ts: 新增 ctrl+enter -> chat:newline 快捷键绑定, 支持 Kitty 键盘协议终端(如 Windows Terminal 1.25+) Co-Authored-By: Sonnet-4.6-CoStrict --- packages/@ant/ink/src/core/parse-keypress.ts | 7 ++++++- src/keybindings/defaultBindings.ts | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/@ant/ink/src/core/parse-keypress.ts b/packages/@ant/ink/src/core/parse-keypress.ts index 6febc862e..012eb889a 100644 --- a/packages/@ant/ink/src/core/parse-keypress.ts +++ b/packages/@ant/ink/src/core/parse-keypress.ts @@ -697,12 +697,17 @@ function parseKeypress(s: string = ''): ParsedKey { return createNavKey(s, 'mouse', false) } - if (s === '\r' || s === '\r\n') { + if (s === '\r\n') { + key.raw = undefined + key.name = 'return' + key.ctrl = true + } else if (s === '\r') { key.raw = undefined key.name = 'return' } else if (s === '\n') { key.raw = undefined key.name = 'return' + key.ctrl = true } else if (s === '\t') { key.name = 'tab' } else if (s === '\b' || s === '\x1b\b') { diff --git a/src/keybindings/defaultBindings.ts b/src/keybindings/defaultBindings.ts index 1d9ef10e2..9cb835ea5 100644 --- a/src/keybindings/defaultBindings.ts +++ b/src/keybindings/defaultBindings.ts @@ -71,6 +71,9 @@ export const DEFAULT_BINDINGS: KeybindingBlock[] = [ 'meta+o': 'chat:fastMode', 'meta+t': 'chat:thinkingToggle', enter: 'chat:submit', + // Ctrl+Enter inserts a newline (Kitty keyboard protocol terminals only; + // standard terminals cannot distinguish ctrl+enter from plain enter). + 'ctrl+enter': 'chat:newline', up: 'history:previous', down: 'history:next', // Editing shortcuts (defined here, migration in progress)