From 346044b1ba7fd355f90142ca6e4b19b282f6d96a Mon Sep 17 00:00:00 2001 From: hstyi Date: Thu, 23 Jan 2025 10:32:43 +0800 Subject: [PATCH] fix: shortcut keys lead to terminal input --- .../terminal/panel/TerminalPanelKeyAdapter.kt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/app/termora/terminal/panel/TerminalPanelKeyAdapter.kt b/src/main/kotlin/app/termora/terminal/panel/TerminalPanelKeyAdapter.kt index 98a6893..da8e6ec 100644 --- a/src/main/kotlin/app/termora/terminal/panel/TerminalPanelKeyAdapter.kt +++ b/src/main/kotlin/app/termora/terminal/panel/TerminalPanelKeyAdapter.kt @@ -1,5 +1,7 @@ package app.termora.terminal.panel +import app.termora.keymap.KeyShortcut +import app.termora.keymap.KeymapManager import app.termora.terminal.PtyConnector import app.termora.terminal.Terminal import com.formdev.flatlaf.util.SystemInfo @@ -12,8 +14,9 @@ class TerminalPanelKeyAdapter( private val terminalPanel: TerminalPanel, private val terminal: Terminal, private val ptyConnector: PtyConnector -) : - KeyAdapter() { +) : KeyAdapter() { + + private val activeKeymap get() = KeymapManager.getInstance().getActiveKeymap() override fun keyTyped(e: KeyEvent) { if (Character.isISOControl(e.keyChar)) { @@ -52,6 +55,11 @@ class TerminalPanelKeyAdapter( return } + // 如果命中了全局快捷键,那么不处理 + if (keyStroke.modifiers != 0 && activeKeymap.getActionIds(KeyShortcut(keyStroke)).isNotEmpty()) { + return + } + if (Character.isISOControl(e.keyChar)) { terminal.getSelectionModel().clearSelection() // 如果不为空表示已经发送过了,所以这里为空的时候再发送