将MouseEvents发布到OSX中的应用程序

时间:2012-07-26 23:53:11

标签: c++ macos macos-carbon

我正在尝试将鼠标事件发送到不支持游戏手柄的(我认为是SDL / OpenGL)游戏。我知道我可以使用许多Gamepad到键盘/鼠标应用程序之一,但我认为编写自己的应用程序会很有趣。以下代码正常运行,除非游戏正在运行:

// 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);

有了这个,我可以将光标移动到我的桌面上,甚至可以在游戏菜单中移动,但是在实际游戏中游戏获得它的唯一时间就是当我移动我的物理鼠标时。发送键盘事件在游戏中运行良好,所以我不知道问题是什么

1 个答案:

答案 0 :(得分:0)

我发现问题是什么,我不得不使用:

CGEventSetIntegerValueField(event, kCGMouseEventDeltaX, dX);
CGEventSetIntegerValueField(event, kCGMouseEventDeltaY, dY);

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