From e85d25199d903fddc2dbf80472438455bbaeb8c8 Mon Sep 17 00:00:00 2001 From: beibeizi Date: Mon, 16 Mar 2026 17:04:04 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E7=AB=AF=E6=BB=9A=E5=8A=A8?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E6=94=AF=E6=8C=81=20tmux=20=E9=BC=A0?= =?UTF-8?q?=E6=A0=87=E6=BB=9A=E8=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/terminal/useTerminalSocket.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/frontend/src/pages/terminal/useTerminalSocket.ts b/frontend/src/pages/terminal/useTerminalSocket.ts index 5161bab..9bf54af 100644 --- a/frontend/src/pages/terminal/useTerminalSocket.ts +++ b/frontend/src/pages/terminal/useTerminalSocket.ts @@ -261,8 +261,25 @@ export function useTerminalSocket({ const sequence = delta < 0 ? "\x1b[5~" : "\x1b[6~"; sendInput(sequence); }; + const sendTmuxMouseWheel = (delta: number) => { + if (delta === 0) { + return; + } + const col = Math.max(1, Math.floor(term.cols / 2)); + const row = Math.max(1, Math.floor(term.rows / 2)); + const code = delta < 0 ? 64 : 65; + sendInput(`\x1b[<${code};${col};${row}M`); + }; if (mode === "remote") { - sendTmuxWheelPage(lineDelta); + if (enhancedSessionRef.current && term.modes.mouseTrackingMode !== "none") { + sendTmuxMouseWheel(lineDelta); + return; + } + if (enhancedSessionRef.current) { + term.scrollLines(lineDelta); + return; + } + term.scrollLines(lineDelta); return; } const activeBuffer = term.buffer.active;