【发布时间】:2010-06-01 04:51:46
【问题描述】:
我正在尝试使用此代码注册全局关键事件:
void function()
{
CFMachPortRef keyUpEventTap = CGEventTapCreate(kCGHIDEventTap,kCGHeadInsertEventTap,kCGEventTapOptionListenOnly,CGEventMaskBit(kCGEventKeyUp),&keyUpCallback,NULL);
CFRunLoopSourceRef keyUpRunLoopSourceRef = CFMachPortCreateRunLoopSource(NULL, keyUpEventTap, 0);
CFRelease(keyUpEventTap);
CFRunLoopAddSource(CFRunLoopGetCurrent(), keyUpRunLoopSourceRef, kCFRunLoopDefaultMode);
CFRelease(keyUpRunLoopSourceRef);
}
应用程序在执行 CFMachPortCreateRunLoopSource() 调用时崩溃。我认为崩溃是因为我创建事件点击时的 CGEventMaskBit(kCGEventKeyUp)。
但如果我使用CGEventTapCreate(kCGHIDEventTap,kCGHeadInsertEventTap,kCGEventTapOptionListenOnly,CGEventMaskBit(kCGEventFlagsChanged),&keyUpCallback,NULL) 创建事件点击,则应用程序可以正常工作。它不会崩溃。按下任何修饰键时我都会收到回调。但我需要获取按下删除键的回调。
有什么想法吗?
谢谢,
迪拉吉。
【问题讨论】:
-
您是否尝试过监视按键事件?
-
是的,我也尝试过按键事件。上键和下键都会崩溃。
标签: objective-c cocoa