通过在RunLoop中添加观察者来监视键盘事件

时间:2012-07-12 07:28:28

标签: objective-c macos cocoa macos-carbon runloop

我的运行循环观察器编写如下:

void observerCallback(CFRunLoopObserverRef observer,
    CFRunLoopActivity activity, void* info)
{
    println("%u", activity);
}
//----------------------------- 
void InstallObserver()
{
    CFRunLoopObserverRef myObserver = NULL;
    int myActivities = kCFRunLoopEntry;

    myObserver = CFRunLoopObserverCreate(NULL, myActivities, YES,
        /* repeat */ 0, &observerCallback, NULL);

    if (myObserver)
    {
        CFRunLoopAddObserver(CFRunLoopGetCurrent(), myObserver,
            kCFRunLoopCommonModes);
    }
}

每次按我的应用程序中的任何键时, observerCallback 都会被调用4次。 问题是: 如何在 observerCallback 中获取关键代码? 感谢。

1 个答案:

答案 0 :(得分:0)

根据您对问题的评论,您需要一个本地事件监视器,AKA:

+ [NSEvent addLocalMonitorForEventsMatchingMask:handler:]

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSEvent_Class/Reference/Reference.html#//apple_ref/occ/clm/NSEvent/addLocalMonitorForEventsMatchingMask:handler