You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS Ventura 13.4.1下CGEventTapCreate返回NULL问题求助

macOS Ventura 13.4.1下CGEventTapCreate返回NULL的问题排查

在macOS上拦截按键一直是棘手的问题。我4年前编写的代码原本可用,系统更新后失效,此前已修复过,如今在macOS Ventura 13.4.1下再次出现CGEventTapCreate返回NULL的情况。

相关代码

NSLog(@"🔹 Creating event tap");
eventTap = CGEventTapCreate( kCGHIDEventTap,           // Event tap is placed at point where HID system events enter window server.
                            kCGHeadInsertEventTap,     // Insert tap BEFORE any pre-existing event taps at the same location.
                            kCGEventTapOptionDefault,  // Active filter, not passive listener.
                            CGEventMaskBit( NSEventTypeKeyDown )
                            | CGEventMaskBit( NSEventTypeKeyUp )
                            | CGEventMaskBit( NSEventTypeMouseMoved )
                            | CGEventMaskBit( NSEventTypeFlagsChanged )
                            | CGEventMaskBit( NSEventTypeSystemDefined ),
                            (CGEventTapCallBack)tap_callback,
                            (__bridge void *)(self));
if ( eventTap == NULL ) {
    NSLog( @"Unable to create event tap. Run as root or `SysPrefs->Security&Privacy->Privacy->{check mapper app}" );
    NSLog( @"👋");
    [NSApp terminate:nil];  // or: exit( 1 );
}
NSLog(@"🔹 Enabling tap");
// :

补充信息

  • 我制作了一个最小测试项目,目标实现a/z按键互换,但无法运行,已提交Issue。
  • 已解决CLI版本的问题,但XCode中的项目仍无法创建EventTap。
  • 苹果工程师提供了可运行的Swift代码,我尝试过刷新配置、重置钥匙串、调整权限等多种方法,均无效果,恳请帮忙排查。
  • 资料显示仅root用户可在HID事件入口创建事件tap,且已有开发者在Ventura上实现EventTap功能。

内容的提问来源于stack exchange,提问作者P i

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 01:37:23