好的,所以我正在使用 LEAP Motion,如果您之前没有听说过它,它是一种发射激光的设备,通过电缆发送图像并处理该图像以产生手指、手等数量的结果. 它每毫秒左右通过帧拍摄这些数据(我认为)。
所以我正在做的是检测 Leap 上方是否有一根手指,然后我使用以下代码:
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
吗?