mirror of
https://github.com/TermoraDev/termora.git
synced 2026-01-16 02:12:58 +08:00
fix: 修复发送鼠标滚动/点击时可能使用错模式的问题
This commit is contained in:
@@ -2,6 +2,7 @@ package app.termora.terminal.panel
|
|||||||
|
|
||||||
import app.termora.terminal.*
|
import app.termora.terminal.*
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
|
import java.awt.event.KeyEvent
|
||||||
import java.awt.event.MouseAdapter
|
import java.awt.event.MouseAdapter
|
||||||
import java.awt.event.MouseEvent
|
import java.awt.event.MouseEvent
|
||||||
import java.awt.event.MouseWheelEvent
|
import java.awt.event.MouseWheelEvent
|
||||||
@@ -66,12 +67,11 @@ class TerminalPanelMouseTrackingAdapter(
|
|||||||
override fun mouseWheelMoved(e: MouseWheelEvent) {
|
override fun mouseWheelMoved(e: MouseWheelEvent) {
|
||||||
if (shouldSendMouseData) {
|
if (shouldSendMouseData) {
|
||||||
val unitsToScroll = e.unitsToScroll
|
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)) {
|
for (i in 0 until abs(unitsToScroll)) {
|
||||||
val sb = StringBuilder()
|
ptyConnector.write(encode)
|
||||||
sb.append(ControlCharacters.ESC)
|
|
||||||
sb.append('O')
|
|
||||||
sb.append(if (e.wheelRotation < 0) 'A' else 'B')
|
|
||||||
ptyConnector.write(sb.toString())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -119,9 +119,6 @@ class TerminalPanelMouseTrackingAdapter(
|
|||||||
sb.append(ControlCharacters.ESC).append("[M")
|
sb.append(ControlCharacters.ESC).append("[M")
|
||||||
.append((32 + cb).toChar()).append((32 + x).toChar())
|
.append((32 + cb).toChar()).append((32 + x).toChar())
|
||||||
.append((32 + y).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) {
|
} else if (isSGRMouseMode) {
|
||||||
// for SGR 1006 style, internal use only
|
// for SGR 1006 style, internal use only
|
||||||
// 128 - mouse button is released
|
// 128 - mouse button is released
|
||||||
@@ -136,6 +133,9 @@ class TerminalPanelMouseTrackingAdapter(
|
|||||||
.append(cb).append(';').append(x).append(';')
|
.append(cb).append(';').append(x).append(';')
|
||||||
.append(y).append('M')
|
.append(y).append('M')
|
||||||
}
|
}
|
||||||
|
} else if (isUrxvtMouseMode) {
|
||||||
|
sb.append(ControlCharacters.ESC).append("[")
|
||||||
|
.append(32 + cb).append(x).append(y).append('M')
|
||||||
} else {
|
} else {
|
||||||
charset = Charsets.ISO_8859_1
|
charset = Charsets.ISO_8859_1
|
||||||
sb.append(ControlCharacters.ESC).append("[M")
|
sb.append(ControlCharacters.ESC).append("[M")
|
||||||
|
|||||||
Reference in New Issue
Block a user