使用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!");
    }
}

关于macos - cocoa 全局观察修饰键按下,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18501955/

10-11 21:07