13

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

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

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

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

谢谢。


我发现的热键教程之一是http://dbachrach.com/blog/2005/11/program-global-hotkeys-in-cocoa-easily/供任何感兴趣的人使用。

4

2 回答 2

16

如果你的目标是 10.6+,有一些新的 APINSEvent可以做全局热键。有关更多信息,请查看这篇很棒的博客文章:http ://cocoakids.net/global-hotkeys-in-cocoa-on-snow-leopard

编辑(很久以后)

有点自吹自擂:我永远无法让 PTHotKey 和其他库之类的东西按我期望的方式工作,所以我最终放弃并编写了自己的 HotKey 包装器。它有一个非常简单的 API(你给它一个键码、修饰符、一个目标和一个动作),甚至支持有趣的东西,比如 10.6 的块。你可以在这里下载源代码:http: //github.com/davedelong/DDHotKey

于 2009-11-01T19:28:29.637 回答
10

一个实际的热键 API,它仍然存在于 Snow Leopard 中,并且提供 64 位版本。它是专门为此目的而设计的,与 NSEvent 方法不同,NSEvent 方法本质上只是一个基于块的 CGEventTaps 包装器。

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

于 2009-11-01T19:47:07.337 回答