From 68df52bfc0f808b8fdc94a63ef152f07a84a25e8 Mon Sep 17 00:00:00 2001 From: hstyi Date: Fri, 10 Jan 2025 14:40:26 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20Windows=20=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E6=A0=87=E7=AD=BE=E9=A1=B5=E5=AF=BC=E8=87=B4=E8=AF=AF?= =?UTF-8?q?=E8=BE=93=E5=85=A5=E7=9A=84=E9=97=AE=E9=A2=98=20(#54)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../terminal/panel/TerminalPanelKeyAdapter.kt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/kotlin/app/termora/terminal/panel/TerminalPanelKeyAdapter.kt b/src/main/kotlin/app/termora/terminal/panel/TerminalPanelKeyAdapter.kt index 9160317..98a6893 100644 --- a/src/main/kotlin/app/termora/terminal/panel/TerminalPanelKeyAdapter.kt +++ b/src/main/kotlin/app/termora/terminal/panel/TerminalPanelKeyAdapter.kt @@ -2,6 +2,8 @@ package app.termora.terminal.panel import app.termora.terminal.PtyConnector import app.termora.terminal.Terminal +import com.formdev.flatlaf.util.SystemInfo +import java.awt.event.InputEvent import java.awt.event.KeyAdapter import java.awt.event.KeyEvent import javax.swing.KeyStroke @@ -45,6 +47,11 @@ class TerminalPanelKeyAdapter( ptyConnector.write(encode) } + // https://github.com/TermoraDev/termora/issues/52 + if (SystemInfo.isWindows && e.keyCode == KeyEvent.VK_TAB && isCtrlPressedOnly(e)) { + return + } + if (Character.isISOControl(e.keyChar)) { terminal.getSelectionModel().clearSelection() // 如果不为空表示已经发送过了,所以这里为空的时候再发送 @@ -55,4 +62,12 @@ class TerminalPanelKeyAdapter( } } + + private fun isCtrlPressedOnly(e: KeyEvent): Boolean { + val modifiersEx = e.modifiersEx + return (modifiersEx and InputEvent.ALT_DOWN_MASK) == 0 + && (modifiersEx and InputEvent.ALT_GRAPH_DOWN_MASK) == 0 + && (modifiersEx and InputEvent.CTRL_DOWN_MASK) != 0 + && (modifiersEx and InputEvent.SHIFT_DOWN_MASK) == 0 + } } \ No newline at end of file