【发布时间】:2015-10-28 13:17:05
【问题描述】:
Carbon 事件处理在 OS X 10.11 El Capitan 中是否仍然有效?
EventTypeSpec OPNEventType[3];
OPNEventType[0].eventClass = getEventClass();
OPNEventType[0].eventKind = getEventKindInsert();
OPNEventType[1].eventClass = getEventClass();
OPNEventType[1].eventKind = getEventKindRemove();
OPNEventType[2].eventClass = getEventClass();
OPNEventType[2].eventKind = getEventKindDataAvailable();
handlerUPP = NewEventHandlerUPP(CBOpticonHandler);
// create the OPN interface, which is passed to our event handler
interface = CreateOPNInterface();
OSStatus status = InstallApplicationEventHandler(handlerUPP, 3, OPNEventType, interface, NULL);
if ( status != noErr) {
NSLog(@"%s: InstallApplicationEventHandler failed!", __PRETTY_FUNCTION__);
[self stop];
return;
}
升级 OS X 后,此代码似乎不再工作。有什么替代方法?
【问题讨论】:
-
在什么情况下它不起作用?安装处理程序时是否出现错误?如果是这样,什么错误?还是您的处理程序从未被调用?您要处理的实际事件类和种类对是什么?你确定这些正在发生吗?你试过event tracing吗?
-
@KenThomases 永远不会调用处理程序。事件类别:OPTI eventKind:1。这是一个 OPTICON OPN 2001 条码扫描器。由于运行 gdb 时的一些问题(我猜是应用程序签名),我无法跟踪事件。
-
我怀疑 El Capitan 不再支持这种旧扫描仪。但我想有证据证明这一点。
-
您可以使用 lldb 而不是 gdb。此外,如果您从我链接的位置向上滚动一点,有一种方法可以通过设置环境变量来启用对所有 Carbon 事件的跟踪。这不需要任何调试器,但输出非常冗长。综上所述,我怀疑您的扫描仪需要与 El Capitan 不兼容的驱动程序。
-
IIRC 你不能在 /System/Library/Extensions 中安装非 Apple 驱动程序;他们必须在 /Library/Extensions/
标签: macos cocoa macos-carbon osx-elcapitan