将鼠标事件发布到OSX中的应用程序
问题描述:
我正在尝试将鼠标事件发送到不支持手柄的(我认为是SDL/OpenGL)游戏。我知道我可以使用众多游戏手柄中的一种来提供键盘/鼠标应用程序,但我认为自己编写应用程序会很有趣。将鼠标事件发布到OSX中的应用程序
// point is a CGPoint that is set earlier on...
CGEventRef event = CGEventCreateMouseEvent(NULL,kCGEventMouseMoved , point, 0);
CGEventSetType(event, kCGEventMouseMoved);// apparently there is a apple bug that requires this...
CGEventPost(kCGHIDEventTap, event);
CFRelease(event);
有了这个,我可以移动光标我的桌面上,甚至在游戏菜单的,不过唯一一次在游戏中实际得到它,而:当游戏运行下面的代码工作,除了罚款游戏是当我移动我的物理鼠标。发送键盘事件在游戏中正常工作,所以我不知道是什么问题
答
我发现了什么问题,我不得不使用:
CGEventSetIntegerValueField(event, kCGMouseEventDeltaX, dX);
CGEventSetIntegerValueField(event, kCGMouseEventDeltaY, dY);
设置的相对坐标鼠标移动。我认为这是因为游戏将鼠标翘曲到游戏窗口的中心,而我的应用程序没有从中获取鼠标移动事件。