Scala で CTRL+S などのキーボード ショートカットを検出したいと考えています。キーを1つ押すだけなら簡単ですが、キーを2つ以上押すと難しそうです。以下よりも良い解決策はありますか?
reactions += {
case c @ KeyReleased(_, Key.S, _, _) =>
if (c.peer.isControlDown())
// CTRL+S pressed
}
KeyPressed
S ボタンが離された後に CTRL ボタンが押されたかどうかをチェックするので、どういうわけか意味的に間違っているように感じます (また、またはを使用する場合はあまり良くないと思いますKeyTyped
)。
ここにSSCEがあります:
import scala.swing._
import scala.swing.event._
object SSCCE extends SimpleSwingApplication {
def top = new MainFrame {
val textArea = new TextArea(3, 30)
contents = new FlowPanel {
contents += textArea
}
listenTo(textArea.keys)
reactions += {
case c @ KeyReleased(_, Key.S, _, _) =>
if (c.peer.isControlDown())
Dialog.showMessage(null, "Message", "CTRL+S pressed")
}
}
}