将鼠标事件发布到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); 

设置的相对坐标鼠标移动。我认为这是因为游戏将鼠标翘曲到游戏窗口的中心,而我的应用程序没有从中获取鼠标移动事件。