首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在每个CGEventPost之间添加分隔符

在每个CGEventPost之间添加分隔符
EN

Stack Overflow用户
提问于 2013-01-27 00:14:40
回答 2查看 133关注 0票数 2

好的,我使用的是LEAP Motion,如果你以前没有听说过它,它是一种发射激光的设备,通过电缆发送图像,它处理图像,给出手指,手等的数量。它每毫秒左右(我认为)通过帧来拍摄数据。

所以我要做的是检测Leap上是否有一根手指,然后我使用这个代码:

代码语言:javascript
复制
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);

CGEventRef pressedDKeyDown = CGEventCreateKeyboardEvent(source, (CGKeyCode)0x02, YES);

CGEventRef pressedDKeyUp = CGEventCreateKeyboardEvent(source, (CGKeyCode)0x02, NO);

CGEventPost(kCGAnnotatedSessionEventTap, pressedDKeyDown);
CGEventPost(kCGAnnotatedSessionEventTap, pressedDKeyUp);

CFRelease(pressedDKeyDown);
CFRelease(pressedDKeyUp);
CFRelease(source);

它模拟了按下“D”键的过程,并且工作正常!但是太多次了!由于LEAP Motion每毫秒左右用帧图像更新一次,因此按下D键的次数太多。我想在每次点击之间添加一个中断,最好是在每个预定事件之间大约0.5秒。

有办法做到这一点吗?我是否应该设置NSTimer

EN

回答 2

Stack Overflow用户

发布于 2013-02-09 23:59:23

您可以从检测到Leap上方的一个手指时调用的方法中调用第二个方法:

代码语言:javascript
复制
[self performSelector:@selector(pressDKey) withObject:nil afterDelay:0.5];

第二个方法称为pressDKey,您可以将发布按键事件的代码放在其中。不要忘了在pressDKey方法中也放入以下内容:

代码语言:javascript
复制
[self cancelPreviousPerformRequestsWithTarget:self selector:@selector(pressDKey) object:nil];
票数 0
EN

Stack Overflow用户

发布于 2013-02-10 04:37:08

为什么不在你发布密钥的时候记录下来。当后续事件到达时,检查当前时间与上一次发布密钥的时间。如果没有足够的时间,只需忽略当前事件。

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

https://stackoverflow.com/questions/14538793

复制
相关文章

相似问题

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