我有一个应用程序,我将LSUIElement键设置为1,以便它在后台运行,并且不会在Dock中显示图标。 我的意思是使应用程序响应击键或鼠标事件。实际上,主窗口仅在应用程序启动时出现。在主窗口可见的情况下,击键被正确处理,但是如果我关闭它就无法再次显示它(因此忽略击键)。我希望我的应用程序在推送特定组合键时能够响应(就像Scribblet为那些知道它的人做的那样)。 谁能告诉我在哪里可以找到有关如何做到这一点的信息?
答案 0 :(得分:3)
状态栏应用程序仅处于活动状态,因此您的应用程序只能在窗口或菜单已打开时接收事件。
您的应用可以通过设置Event Tap:
来实现“热键”CGEventTapCreate(kCGSessionEventTap,
kCGTailAppendEventTap,
kCGEventTapOptionDefault,
kCGEventKeyDown
myEventTapCallback,
NULL);
这将允许您的应用程序在将keyDown
事件路由到其他应用程序之前检查它们。有关回调函数的外观和行为方式,请参阅Callbacks。
Dave DeLong在GitHub上提供了一个可能更容易使用的Cocoa类:DDHotKey。