feat: 添加非 macOS 系统下的 复制/粘贴 快捷键 (#31)

This commit is contained in:
hstyi
2025-01-08 15:04:14 +08:00
committed by hstyi
parent 5ebea06a95
commit 00f11c9ed5
2 changed files with 22 additions and 12 deletions

View File

@@ -7,12 +7,11 @@ import java.awt.datatransfer.DataFlavor
import java.awt.datatransfer.StringSelection import java.awt.datatransfer.StringSelection
import java.awt.datatransfer.Transferable import java.awt.datatransfer.Transferable
import java.awt.datatransfer.UnsupportedFlavorException import java.awt.datatransfer.UnsupportedFlavorException
import java.awt.event.InputEvent
import java.awt.event.KeyEvent import java.awt.event.KeyEvent
import javax.swing.KeyStroke import javax.swing.KeyStroke
class TerminalCopyAction(private val terminalPanel: TerminalPanel) : TerminalAction( class TerminalCopyAction(private val terminalPanel: TerminalPanel) : TerminalPredicateAction {
KeyStroke.getKeyStroke(KeyEvent.VK_C, terminalPanel.toolkit.menuShortcutKeyMaskEx)
) {
companion object { companion object {
private val log = LoggerFactory.getLogger(TerminalCopyAction::class.java) 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 { override fun test(keyStroke: KeyStroke, e: KeyEvent): Boolean {
if (!SystemInfo.isMacOS) { if (SystemInfo.isMacOS) {
return false 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 { private class EmptyTransferable : Transferable {

View File

@@ -3,12 +3,11 @@ package app.termora.terminal.panel
import com.formdev.flatlaf.util.SystemInfo import com.formdev.flatlaf.util.SystemInfo
import org.slf4j.LoggerFactory import org.slf4j.LoggerFactory
import java.awt.datatransfer.DataFlavor import java.awt.datatransfer.DataFlavor
import java.awt.event.InputEvent
import java.awt.event.KeyEvent import java.awt.event.KeyEvent
import javax.swing.KeyStroke import javax.swing.KeyStroke
class TerminalPasteAction(private val terminalPanel: TerminalPanel) : TerminalAction( class TerminalPasteAction(private val terminalPanel: TerminalPanel) : TerminalPredicateAction {
KeyStroke.getKeyStroke(KeyEvent.VK_V, terminalPanel.toolkit.menuShortcutKeyMaskEx)
) {
companion object { companion object {
private val log = LoggerFactory.getLogger(TerminalPasteAction::class.java) 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 { override fun test(keyStroke: KeyStroke, e: KeyEvent): Boolean {
if (!SystemInfo.isMacOS) { if (SystemInfo.isMacOS) {
return false 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
} }
} }