0

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

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

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

4

1 回答 1

0

我发现了问题所在,我不得不使用:

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

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

于 2012-07-28T02:10:44.750 回答