From 00f11c9ed5285e5f51b8c7024e1a7aad75d63b71 Mon Sep 17 00:00:00 2001 From: hstyi Date: Wed, 8 Jan 2025 15:04:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E9=9D=9E=20macOS=20?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E4=B8=8B=E7=9A=84=20=E5=A4=8D=E5=88=B6/?= =?UTF-8?q?=E7=B2=98=E8=B4=B4=20=E5=BF=AB=E6=8D=B7=E9=94=AE=20(#31)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../terminal/panel/TerminalCopyAction.kt | 17 +++++++++++------ .../terminal/panel/TerminalPasteAction.kt | 17 +++++++++++------ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/main/kotlin/app/termora/terminal/panel/TerminalCopyAction.kt b/src/main/kotlin/app/termora/terminal/panel/TerminalCopyAction.kt index e1da5ab..b588def 100644 --- a/src/main/kotlin/app/termora/terminal/panel/TerminalCopyAction.kt +++ b/src/main/kotlin/app/termora/terminal/panel/TerminalCopyAction.kt @@ -7,12 +7,11 @@ import java.awt.datatransfer.DataFlavor import java.awt.datatransfer.StringSelection import java.awt.datatransfer.Transferable import java.awt.datatransfer.UnsupportedFlavorException +import java.awt.event.InputEvent import java.awt.event.KeyEvent import javax.swing.KeyStroke -class TerminalCopyAction(private val terminalPanel: TerminalPanel) : TerminalAction( - KeyStroke.getKeyStroke(KeyEvent.VK_C, terminalPanel.toolkit.menuShortcutKeyMaskEx) -) { +class TerminalCopyAction(private val terminalPanel: TerminalPanel) : TerminalPredicateAction { companion object { private val log = LoggerFactory.getLogger(TerminalCopyAction::class.java) } @@ -36,10 +35,16 @@ class TerminalCopyAction(private val terminalPanel: TerminalPanel) : TerminalAct } override fun test(keyStroke: KeyStroke, e: KeyEvent): Boolean { - if (!SystemInfo.isMacOS) { - return false + if (SystemInfo.isMacOS) { + return KeyStroke.getKeyStroke(KeyEvent.VK_C, terminalPanel.toolkit.menuShortcutKeyMaskEx) == keyStroke } - return super.test(keyStroke, e) + + // Ctrl + Insert + val keyStroke1 = KeyStroke.getKeyStroke(KeyEvent.VK_INSERT, InputEvent.CTRL_DOWN_MASK) + // Ctrl + Shift + C + val keyStroke2 = KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_DOWN_MASK or InputEvent.SHIFT_DOWN_MASK) + + return keyStroke == keyStroke1 || keyStroke == keyStroke2 } private class EmptyTransferable : Transferable { diff --git a/src/main/kotlin/app/termora/terminal/panel/TerminalPasteAction.kt b/src/main/kotlin/app/termora/terminal/panel/TerminalPasteAction.kt index 381b529..9cddbc9 100644 --- a/src/main/kotlin/app/termora/terminal/panel/TerminalPasteAction.kt +++ b/src/main/kotlin/app/termora/terminal/panel/TerminalPasteAction.kt @@ -3,12 +3,11 @@ package app.termora.terminal.panel import com.formdev.flatlaf.util.SystemInfo import org.slf4j.LoggerFactory import java.awt.datatransfer.DataFlavor +import java.awt.event.InputEvent import java.awt.event.KeyEvent import javax.swing.KeyStroke -class TerminalPasteAction(private val terminalPanel: TerminalPanel) : TerminalAction( - KeyStroke.getKeyStroke(KeyEvent.VK_V, terminalPanel.toolkit.menuShortcutKeyMaskEx) -) { +class TerminalPasteAction(private val terminalPanel: TerminalPanel) : TerminalPredicateAction { companion object { private val log = LoggerFactory.getLogger(TerminalPasteAction::class.java) } @@ -28,10 +27,16 @@ class TerminalPasteAction(private val terminalPanel: TerminalPanel) : TerminalAc } override fun test(keyStroke: KeyStroke, e: KeyEvent): Boolean { - if (!SystemInfo.isMacOS) { - return false + if (SystemInfo.isMacOS) { + return KeyStroke.getKeyStroke(KeyEvent.VK_V, terminalPanel.toolkit.menuShortcutKeyMaskEx) == keyStroke } - return super.test(keyStroke, e) + + // Shift + Insert + val keyStroke1 = KeyStroke.getKeyStroke(KeyEvent.VK_INSERT, InputEvent.SHIFT_DOWN_MASK) + // Ctrl + Shift + V + val keyStroke2 = KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_DOWN_MASK or InputEvent.SHIFT_DOWN_MASK) + + return keyStroke == keyStroke1 || keyStroke == keyStroke2 } } \ No newline at end of file