在Windows / Linux / Mac上的Java程序中响应全局热键?

Java6应用程序位于系统托盘中。 它需要使用热键(例如Super-G或Ctrl-Shift-L等)激活并执行某些操作(例如显示input框)。

我如何做到这一点:

  • Windows(XP或Vista)
  • OS / X
  • Linux(Gnome或KDE)

我已经使用JNA在java中编译了全局热键的库。 它目前支持Windows,Linux和Mac OSX。 它还支持Windows和Linux上的媒体密钥。

如果有人有兴趣,请尝试https://github.com/tulskiy/jkeymaster

我将不胜感激任何反馈。

谢谢。

对于Linux(X11)有JXGrabKey: http : //sourceforge.net/projects/jxgrabkey/

还有一个在Linux上获取全局热键的教程: http : //ubuntuforums.org/showthread.php?t=864566

我没有findOS X的解决scheme。

要build立所有3个平台的东西,我build议剥离JIntellitype(这是Apache许可证),它的全球热键function,并扩展与OS X和X11function…

看来,这是不可行的跨平台的方式,而不使用本地接口。

在Windows上,您可以使用免费的JIntellitype库。

如果有人想要做Jintellitype的JNI部分的OSX或Linux版本,我将非常乐意把它们添加到JIntellitype库中。

Melloware

http://www.melloware.com

我发现这个解决scheme在windows上很好用。 它不需要你安装任何像JIntelliType这样的软件。 请注意,这是32位的DLL,你可以重新编译为64位JVM是否愿意。 所有的信贷原始作者的博客。