From c1b44345e3953476cf115e427c994d4553225d06 Mon Sep 17 00:00:00 2001 From: Dongyoung Kim Date: Tue, 12 May 2026 20:57:17 +0900 Subject: [PATCH] fix(tui): copy selection on Cmd+C when copy-on-select is disabled handleSelectionKey only matched event.ctrl, so on macOS with Kitty Keyboard Protocol (Ghostty, Kitty, WezTerm) Cmd+C arrived as event.super and fell through to renderer.clearSelection(), wiping the highlight without copying. Accept meta and super in addition to ctrl. Fixes #27058 Co-Authored-By: Claude Opus 4.7 (1M context) --- packages/opencode/src/cli/cmd/tui/util/selection.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/cli/cmd/tui/util/selection.ts b/packages/opencode/src/cli/cmd/tui/util/selection.ts index bb2f658cc2f2..7c57142a28c8 100644 --- a/packages/opencode/src/cli/cmd/tui/util/selection.ts +++ b/packages/opencode/src/cli/cmd/tui/util/selection.ts @@ -17,6 +17,8 @@ type Renderer = { type SelectionKeyEvent = { ctrl?: boolean + meta?: boolean + super?: boolean name: string preventDefault: () => void stopPropagation: () => void @@ -38,7 +40,7 @@ export function handleSelectionKey(renderer: Renderer, toast: Toast, event: Sele const selection = renderer.getSelection() if (!selection) return - if (event.ctrl && event.name === "c") { + if ((event.ctrl || event.meta || event.super) && event.name === "c") { if (!copy(renderer, toast)) { renderer.clearSelection() return