Cocoa NSStatusBar Global HotKey

时间:2009-11-01 16:59:52

标签: cocoa hotkeys

我已经创建了一个位于系统状态栏中的NSStatusBar cocoa应用程序。

我想分配一个热键,这样当按下它时切换我的应用程序并显示菜单。

这可能吗?,在我的搜索和实验中,我找到了一些不同的方法来分配全局热键,当你的应用程序在后台时可以按下但我找不到任何方法有问题使菜单显示

这可能吗?,如果有人认为分配全球热键的方式最好,请发布。

感谢。


我找到的热门教程之一是http://dbachrach.com/blog/2005/11/program-global-hotkeys-in-cocoa-easily/对任何感兴趣的人。

2 个答案:

答案 0 :(得分:17)

如果你的目标是10.6+,那么NSEvent有一些可以执行全局热键的新API。有关更多信息,请查看这篇精彩的博文:http://cocoakids.net/global-hotkeys-in-cocoa-on-snow-leopard

编辑(很久以后)

稍微嘟嘟一声:我永远无法像PTHotKey和其他库这样的东西以我期望的方式工作,所以我最终放弃并编写了自己的HotKey包装器。它有一个非常简单的API(你给它一个关键代码,修饰符,一个目标和一个动作),甚至支持像10.6块这样的有趣的东西。您可以在此处下载资源:http://github.com/davedelong/DDHotKey

答案 1 :(得分:11)

an actual hotkey API,它仍然存在于Snow Leopard中,并且以64位格式提供。它专门为此目的而设计,与NSEvent方法不同,NSEvent方法基本上只是围绕CGEventTaps的基于块的包装。

不同之处在于,NSEvent方法(或直接使用CGEventTaps)会让您查看每个事件,而热键API仅在用户按下您的时调用您的函数em> hotkey。