在Windows / Linux / Mac上的Java程序中对全局热键做出反应?

时间:2008-09-17 03:28:15

标签: java windows linux macos hotkeys

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

我如何做到:

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

6 个答案:

答案 0 :(得分:25)

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

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

我将不胜感激。

谢谢。

答案 1 :(得分:7)

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

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

我还没有为OS X找到解决方案。

要为所有3个平台构建一些东西,我建议将JIntellitype(它的Apache许可证)剥离到它的全局热键功能,并使用OS X和X11功能扩展它......

答案 2 :(得分:6)

似乎在不使用本机接口的情况下,这在跨平台方式下是不可行的。

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

答案 3 :(得分:5)

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

Melloware

http://www.melloware.com

答案 4 :(得分:1)

我发现this解决方案在Windows上运行得非常好。它不需要您安装任何软件,如JIntelliType。请注意,这是32位dll,您可以重新编译64位JVM。所有归功于该博客的原作者。

答案 5 :(得分:0)

我在这里编写了一个用于全局键/鼠标事件的Java库。这适用于Windows,Linux X11和OSX。

https://github.com/repeats/SimpleNativeHooks