首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >事件龙头:使用CGEventPost、kCGSessionEventTap、kCGAnnotatedSessionEventTap、CGEventTapPostEvent的不同结果

事件龙头:使用CGEventPost、kCGSessionEventTap、kCGAnnotatedSessionEventTap、CGEventTapPostEvent的不同结果
EN

Stack Overflow用户
提问于 2009-02-16 13:23:11
回答 1查看 2.3K关注 0票数 5

我遇到了一个棘手的问题,张贴一个事件从事件点击。我正在点击NSSystemDefined在kCGHIDEventTap,然后用一个新的事件取代。我遇到的问题是,根据我发布事件的方式,它只会被一些应用程序看到。我的测试应用程序是Opera、Firefox、Quick银和Xcode。下面是我在事件点击回调中尝试过的不同技术,并给出了结果。我期待一个动作(“正确的反应”)从每个应用程序;“系统哔”意味着什么是绑定到那个关键的系统声音。

  1. 创建一个新事件,并从回调中返回它。Opera:无响应/系统beep,Firefox:无响应/系统beep,Quicksilver:正确响应,Xcode: CGEventPost/system
  2. 创建一个新事件,post到kCGSessionEventTap和CGEventPost,返回null。Opera:无响应/系统beep,Firefox:无响应/系统beep,Quicksilver:正确响应,Xcode: CGEventPost/system
  3. 创建一个新事件,post到kCGAnnotatedSessionEventTap和CGEventPost,返回null。操作系统:正确的响应,火狐:正确的响应,快速的:没有响应/系统的beep,Xcode:无响应/系统beep
  4. 创建一个新的事件,用CGEventTapPostEvent发布,返回null。Opera:没有响应/系统蜂鸣,火狐:没有响应/系统蜂鸣,快速响应:正确的响应,Xcode:无响应/系统beep
  5. 创建一个新事件,用CGEventPost发布到kCGSessionEventTap,并返回新事件。Opera:没有响应/系统蜂鸣,火狐:没有响应/系统蜂鸣,快速响应:正确的响应,Xcode:无响应/系统beep
  6. 创建一个新事件,用CGEventPost发布到kCGAnnotatedSessionEventTap,并返回新事件。操作系统:正确的响应和系统的蜂鸣,火狐:正确的响应和系统的蜂鸣声,快速的:正确的响应和系统的哔声,Xcode:无响应/双系统beep
  7. 创建一个新事件,用CGEventTapPostEvent发布,并返回新事件。操作系统:没有响应/系统蜂鸣,火狐:没有响应/系统蜂鸣音,快速响应:正确响应,Xcode:无响应/系统beep

(6)是最好的,但用户抱怨额外的系统嗡嗡声的正确的反应,我猜这是来自事件的双重张贴。我不确定是否还有其他组合可以尝试,也不确定还能在哪里寻找。有人能提供任何指导吗?有没有办法既可以从我的回调中返回事件,又可以在不同时做这两种操作的情况下将其发布到带注释的点击中?

很抱歉提出这个冗长的问题,我做了很多实验。

提前感谢

Update:这是我用来创建事件点击的代码:

代码语言:javascript
复制
CFMachPortRef eventTap;
eventTap = CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, 0,CGEventMaskBit(NX_SYSDEFINED) | (1 << kCGEventKeyDown) | (1 << kCGEventKeyUp), myCGEventCallback, (void *)hidEventQueue);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-12 22:06:50

我想我修好了。我一直在使用+[NSEvent keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:]创建一个NSEvent,然后返回该事件的-CGEvent。我切换到CGEventCreateKeyboardEvent,使用使用CGEventCreateSourceFromEvent从原始事件创建的事件源,并从回调返回事件。我所有的测试现在都通过了。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/553284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档