Мне нужно поймать горячую клавишу Ctrl+Alt+C, C
(это означает, что нажмите Ctrl+Alt+C
, отпустите только C
и нажмите ее еще раз). Вот то, что я пытаюсь сделать:Поймать «двойную» горячую клавишу
import com.tulskiy.keymaster.common._
import java.awt.event._
import javax.swing.KeyStroke
class KeysCatcher {
val provider = Provider.getCurrentProvider(true)
val ctrlC = KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK + ActionEvent.ALT_MASK)
val listener = new HotKeyListener() {
def onHotKey(hotKey: HotKey): Unit = {
hotKey.keyStroke match {
case `ctrlC` =>
println("Ctrl+Alt+C 1 was pressed")
val listener2 = new HotKeyListener() {
def onHotKey(hotKey: HotKey): Unit = {
hotKey.keyStroke match {
case `ctrlC` => println("Ctrl+Alt+C 2 was pressed")
}
}
}
provider.register(ctrlC, listener2)
}
}
}
provider.register(ctrlC, listener)
}
У меня была мысль, что когда-то Ctrl+Alt+C
нажимается я должен зарегистрировать такую же горячую клавишу снова и поймать его. Я собирался задействовать таймер, так как вторая печать C
должна быть довольно быстрой. Но я думаю, что я ошибся, так как это будет довольно сложно.
Ваши мысли? P.S. Там нет окна, он ловит глобальную горячую клавишу. Я также пробовал много вещей из Интернета, и он не работал так, как я хотел, поэтому перед тем, как предоставить мне какой-либо код, пожалуйста, проверьте его.
Хотя этот пример - Scala, Java тоже будет в порядке.
Зависимость:
https://github.com/tulskiy/jkeymaster
//build.scala
val jkeymaster = "com.github.tulskiy" % "jkeymaster" % "1.1"
'com.tulskiy ....' что это должно быть? можете ли вы сделать самостоятельный пример, используя только Scala Swing? –
@ 0__, извините, я забыл об этом. Я не могу использовать только Swing. –
@ 0__, дело в том, что 'KeyStroke' является классом Swing. –