可可全球观察修改键按下



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

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

我该怎么做?

您正在查找类型为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!");
    }
}

最新更新