我有一个应用程序,其中我将LSUIElement键设置为1,以便它在后台运行,并且不在Dock中显示图标。我的意愿是让应用程序对击键或鼠标事件做出响应。实际上,只有当应用程序启动时,主窗口才会出现。在主窗口可见的情况下,击键被正确处理,但是如果我关闭它,就没有办法再次显示它(因此击键被忽略)。我希望我的应用程序在我按下特定组合键的任何时候都能响应(就像Scribblet对知道它的人所做的那样)。谁能告诉我在哪里可以找到有关如何做到这一点的信息?
发布于 2011-04-29 06:37:32
状态栏应用程序仅处于活动状态,因此您的应用程序只能在窗口或菜单已经打开时接收事件。
您的应用程序可以通过设置Event Tap来实现“热键”
CGEventTapCreate(kCGSessionEventTap,
kCGTailAppendEventTap,
kCGEventTapOptionDefault,
kCGEventKeyDown
myEventTapCallback,
NULL);这将允许您的应用程序在将keyDown事件路由到其他应用程序之前检查这些事件。有关回调函数的外观和行为,请参见Callbacks。
在GitHub上还有一个由Dave DeLong编写的可能更易于使用的Cocoa类:DDHotKey。
https://stackoverflow.com/questions/5825684
复制相似问题