gpt4 book ai didi

cocoa - CGEventTapCreate 神秘崩溃并出现 "key down"事件

转载 作者:行者123 更新时间:2023-12-03 16:08:31 24 4
gpt4 key购买 nike

我正在使用CGEventTapCreate当我的应用程序运行时,从 iTunes 中“窃取”媒体 key 。我传递给 CGEventTapCreate 的回调内部的代码检查该事件,如果发现它是媒体键之一,则将适当的通知发布到默认通知中心。

现在,如果我发布“key up”事件的通知,效果就很好。如果我对“按键按下”事件执行此操作,最终我的应用程序将停止获取媒体按键事件并由 iTunes 接管。关于可能导致这种情况的原因有什么想法吗?相关部分代码如下

enum { 
...
PlayPauseKeyDown = 0x100A00,
PlayPauseKeyUp = 0x100B00,
...
};

static CGEventRef event_tap_callback(CGEventTapProxy proxy,
CGEventType type,
CGEventRef event,
void *refcon)
{
if (!(type == NX_SYSDEFINED) || (type == NX_KEYUP) || (type == NX_KEYDOWN))
return event;

NSEvent* keyEvent = [NSEvent eventWithCGEvent: event];
if (keyEvent.type != NSSystemDefined) return event;

switch(keyEvent.data1)
{
case PlayPauseKeyUp: // <--- this works reliably
//case PlayPauseKeyDown: // <--- this will break eventually
post_notification(@"PlayPauseMediaKeyPressed", nil, nil);
return NULL;

... and so on ...

最佳答案

Does something kill my event tap if the callback takes too long?

有些人怀疑 Snow Leopard 有一个错误,有时会禁用事件点击,即使它们不需要太长时间。要处理此问题,您可以监视事件类型 kCGEventTapDisabledByTimeout,并通过使用 CGEventTapEnable 重新启用点击来进行响应。

关于cocoa - CGEventTapCreate 神秘崩溃并出现 "key down"事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2969110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com