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