在 Windows/Linux/Mac 上的 Java 程序中对全局热键做出反应?
Posted
技术标签:
【中文标题】在 Windows/Linux/Mac 上的 Java 程序中对全局热键做出反应?【英文标题】:React on global hotkey in a Java program on Windows/Linux/Mac? 【发布时间】:2010-09-09 22:17:44 【问题描述】:Java6 应用程序位于系统托盘中。它需要使用热键(例如 Super-G 或 Ctrl-Shift-L 等)激活并执行某些操作(例如显示输入框)。
我该怎么做:
Windows(XP 或 Vista) 操作系统/X Linux(Gnome 或 KDE)【问题讨论】:
Spehan:你在 OSX 上成功了吗? 【参考方案1】:我已经使用 JNA 为 java 中的全局热键编译了一个库。它目前支持 Windows、Linux 和 Mac OSX。它还支持 windows 和 linux 上的媒体键。
如果有人有兴趣,试试https://github.com/tulskiy/jkeymaster
如有任何反馈,我将不胜感激。
谢谢。
【讨论】:
不再工作(Windows 10,最新的 jna 版本)【参考方案2】:对于 Linux (X11) 有 JXGrabKey:http://sourceforge.net/projects/jxgrabkey/
还有一个在Linux上抓取全局热键的教程:http://ubuntuforums.org/showthread.php?t=864566
我还没有找到适用于 OS X 的解决方案。
要为所有 3 个平台构建一些东西,我建议将 JIntellitype(它是 Apache 许可证)剥离为它的全局热键功能并使用 OS X 和 X11 功能扩展它...
【讨论】:
更新:我已经开始开发自己的跨平台全局热键库,称为 OsSupport。我已在 Apache 2.0 许可下将代码上传到 BitBucket:bitbucket.org/agynamix/ossupport-connector。目前 OsSupport 仅支持 Mac,因为其他现有的 Windows 和 Linux 解决方案。然而,该库被设计为跨平台,并且还支持热键以外的其他东西。例如,OsSupport 可以向系统发送按键事件以模拟按键。 Torsten,有兴趣加入 Windows Jintellitype 代码吗?我是该代码的作者,我希望看到一个包含 Linux、Windows、Mac 的统一库。 谢谢托斯滕!但是我无法弄清楚如何在 Mac 上使用它。你能提供一个自述文件或其他东西吗?我主要对捕获媒体密钥感兴趣。【参考方案3】:如果不使用本机接口,这似乎无法以跨平台方式实现。
在 Windows 上,您可以使用免费的 JIntellitype 库。
【讨论】:
【参考方案4】:如果有人想做 OSX 或 Linux 版本的 Jintellitype 的 JNI 部分,我非常乐意将它们添加到 JIntellitype 库中。
Melloware
http://www.melloware.com
【讨论】:
【参考方案5】:我发现this 解决方案在 Windows 上工作得很好。它不需要您安装任何软件,例如 JIntelliType。请注意,这是 32 位 dll,您可以为 64 位 JVM 重新编译是需要的。所有功劳归于博客的原作者。
【讨论】:
【参考方案6】:我在这里为全局键/鼠标事件编写了一个 Java 库。这适用于 Windows、Linux X11 和 OSX。
https://github.com/repeats/SimpleNativeHooks
【讨论】:
以上是关于在 Windows/Linux/Mac 上的 Java 程序中对全局热键做出反应?的主要内容,如果未能解决你的问题,请参考以下文章
在 C/C++ 程序中,系统(windows、linux、mac OS X)如何调用 main() 函数?
Maven的安装文字版(Windows/Linux/Mac)(转)
C#搞跨平台UI,封装Cef作为Cpf的控件支持Windows,Linux,Mac
python3解析库lxml的windows/Linux/Mac三大平台安装教程