Złap „podwójny” klawisz skrótu
Muszę złapać klawisz skrótuCtrl+Alt+C, C
(co oznacza, naciśnijCtrl+Alt+C
, tylko wydanieC
i naciśnij go ponownie). Oto, co próbuję zrobić:
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)
}
Kiedyś wpadłem na pomysłCtrl+Alt+C
jest wciśnięty Muszę ponownie zarejestrować ten sam skrót i go złapać. Od drugiego naciśnięcia miałem zamiar włączyć timerC
powinien być dość szybki. Ale myślę, że poszedłem w złym kierunku, ponieważ byłoby to dość skomplikowane.
Twoje myśli? P.S. Nie ma tam okna, łapieświatowy Klawisz skrótu. Próbowałem też wielu rzeczy z Internetu i nie działało tak, jak chciałem, więc przed podaniem mi kodu przetestuj go.
Chociaż ten przykład to Scala, Java również byłaby w porządku.
Zależność:
https://github.com/tulskiy/jkeymaster
//build.scala
val jkeymaster = "com.github.tulskiy" % "jkeymaster" % "1.1"