可可全球观察修饰键按键

时间:2013-08-29 03:47:30

标签: macos cocoa keypress keyboard-events globalevent

使用addGlobalMonitorForEventsMatchingMask,我可以检查按下的键。当一个事件被触发时,我可以检查修饰符标志以查看是否结合使用了任何修饰符。

但是我需要知道是否按下了修改器而没有按下另一个键。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您正在寻找kCGEventFlagsChanged类型的事件:

CGEventMask eventMask = (1 << kCGEventFlagsChanged);
CFMachPortRef eventTap = CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, kCGEventTapOptionDefault, eventMask, cgEventCallback, NULL);

...


CGEventRef cgEventCallback(CGEventTapProxy proxy, CGEventType type, CGEventRef cgEvent, void *refcon)
{
    NSEvent *event = [NSEvent eventWithCGEvent:cgEvent];
    if (event.type == kCGEventFlagsChanged) {
        NSLog(@"modifier key!");
    }
}