macos - cocoa 全局监视修改键按下

标签 macos cocoa keypress keyboard-events globalevent

使用 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/

相关文章:

cocoa - 为什么这个应用程序不能在 PowerPC G4 上运行

javascript - 使用 jQuery 在 contenteditable 元素上模拟按键

c - OpenGL 在 OSX 上出现段错误,但在 Raspberry Pi 上运行良好

objective-c - 使用 NSWorkspace launchApplicationAtURL 启动应用程序后获取退出状态

swift - 如何在 Swift 中将自生成的 ssl 证书与 NSStream(s) 一起使用

css - OS X 搞乱了我的 css,如何修复

cocoa - NSOutlineView 轮廓 View SelectionDidChange

macos - Cocoa WebView (MacApp) - 如何使用自定义字体?

jquery - 如何使用 JQuery 发送 Escape 键

c# - 在 WPF 应用程序中按下 Return 时如何模拟 Tab 键按下?