mirror of
https://github.com/TermoraDev/termora.git
synced 2026-01-16 02:12:58 +08:00
feat: 添加非 macOS 系统下的 复制/粘贴 快捷键 (#31)
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user