我正在制作一个应用程序,使用 Mac OS X (10.7.3) 游戏 handle 上的模拟摇杆来控制鼠标。 目前运行得很好,我可以在桌面和大多数游戏中控制光标。但是在军团要塞2中,我无法控制目标,但可以在菜单中控制光标。鼠标滚轮和点击操作随处可用。 另一个奇怪的事情是,当我移动真实鼠标时,目标在正常瞄准之前“跳跃”了我的“虚拟鼠标”的行进距离,因此它在某种程度上接收了事件。
游戏选项“原始鼠标输入”被禁用(我认为 osx 甚至不支持它)。类似的应用程序可以成功控制目标。
我怀疑游戏正在寻找“增量移动”或“相对移动”事件或任何类似的事件,但我的代码使用绝对位置设置光标的位置。不知道如何改变这个。
以下是用于发送 mouseMoved 事件的代码片段:
编辑:删除了蹩脚代码!
。 编辑:
另外,因为我这样做了,所以我需要手动检查屏幕边界以防止光标疯狂。因此,在多屏设置中,当用户更改分辨率时,情况会变得更糟。 如果我可以发送移动量并让操作系统负责约束光标,那就更好了。
.
问题是: 我以错误的方式执行鼠标移动事件?
如何解决这个问题?
编辑2: 所以,这只是一个愚蠢的错误,抱歉=P
最佳答案
我只是忘记用增量值调用 CGSetIntegerValueField(kCGEventMouseDeltaX, ...) (和 Y)... =P
关于macos - Cocoa:如何发送正确的鼠标增量事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10402797/