From 401712c5b559bc8231854c2fd1a1917a1c1417a7 Mon Sep 17 00:00:00 2001 From: hstyi Date: Thu, 2 Jan 2025 18:42:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=8F=91=E9=80=81?= =?UTF-8?q?=E9=BC=A0=E6=A0=87=E6=BB=9A=E5=8A=A8/=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E6=97=B6=E5=8F=AF=E8=83=BD=E4=BD=BF=E7=94=A8=E9=94=99=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../panel/TerminalPanelMouseTrackingAdapter.kt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/app/termora/terminal/panel/TerminalPanelMouseTrackingAdapter.kt b/src/main/kotlin/app/termora/terminal/panel/TerminalPanelMouseTrackingAdapter.kt index df74914..9c62f6f 100644 --- a/src/main/kotlin/app/termora/terminal/panel/TerminalPanelMouseTrackingAdapter.kt +++ b/src/main/kotlin/app/termora/terminal/panel/TerminalPanelMouseTrackingAdapter.kt @@ -2,6 +2,7 @@ package app.termora.terminal.panel import app.termora.terminal.* import org.slf4j.LoggerFactory +import java.awt.event.KeyEvent import java.awt.event.MouseAdapter import java.awt.event.MouseEvent import java.awt.event.MouseWheelEvent @@ -66,12 +67,11 @@ class TerminalPanelMouseTrackingAdapter( override fun mouseWheelMoved(e: MouseWheelEvent) { if (shouldSendMouseData) { val unitsToScroll = e.unitsToScroll + val encode = terminal.getKeyEncoder() + .encode(TerminalKeyEvent(if (e.wheelRotation < 0) KeyEvent.VK_UP else KeyEvent.VK_DOWN)) + for (i in 0 until abs(unitsToScroll)) { - val sb = StringBuilder() - sb.append(ControlCharacters.ESC) - sb.append('O') - sb.append(if (e.wheelRotation < 0) 'A' else 'B') - ptyConnector.write(sb.toString()) + ptyConnector.write(encode) } } } @@ -119,9 +119,6 @@ class TerminalPanelMouseTrackingAdapter( sb.append(ControlCharacters.ESC).append("[M") .append((32 + cb).toChar()).append((32 + x).toChar()) .append((32 + y).toChar()) - } else if (isUrxvtMouseMode) { - sb.append(ControlCharacters.ESC).append("[") - .append(32 + cb).append(x).append(y).append('M') } else if (isSGRMouseMode) { // for SGR 1006 style, internal use only // 128 - mouse button is released @@ -136,6 +133,9 @@ class TerminalPanelMouseTrackingAdapter( .append(cb).append(';').append(x).append(';') .append(y).append('M') } + } else if (isUrxvtMouseMode) { + sb.append(ControlCharacters.ESC).append("[") + .append(32 + cb).append(x).append(y).append('M') } else { charset = Charsets.ISO_8859_1 sb.append(ControlCharacters.ESC).append("[M")