我正在制作一个应用程序,使用游戏手柄上的模拟杆来控制鼠标在Mac OS X(10.7.3)上的移动。
目前它运行得非常好,在桌面和大多数游戏中都可以控制光标。但是在《Team Fortress 2》中,我无法控制瞄准,但可以在菜单中控制光标。鼠标滚轮和点击功能在任何地方都有效。
另一个奇怪的问题是,当我移动真正的鼠标时,“虚拟鼠标”在瞄准之前会“跳跃”旅行的距离,因此它在某种程度上正在接收事件。
游戏选项“原始鼠标输入”已禁用(我认为在osx中甚至不支持)。类似的应用程序可以成功地控制瞄准。
我怀疑游戏正在寻找“增量运动”或“相对运动”事件或任何类似的东西,但我的代码使用绝对位置设置光标的位置。不确定如何更改这个。
以下是用于发送mouseMoved事件的代码片段:
编辑:删除了糟糕的代码!
同时,由于我是这样做的,我需要手动检查屏幕边界以防止光标失控。因此,在多屏幕设置和用户更改分辨率时,情况会变得更糟。如果我可以只发送移动量并让操作系统处理限制光标,那将会好得多。
问题是:我是否以错误的方式进行鼠标移动事件?
我该如何解决这个问题?
编辑2: 所以,那只是一个愚蠢的错误,抱歉=P
游戏选项“原始鼠标输入”已禁用(我认为在osx中甚至不支持)。类似的应用程序可以成功地控制瞄准。
我怀疑游戏正在寻找“增量运动”或“相对运动”事件或任何类似的东西,但我的代码使用绝对位置设置光标的位置。不确定如何更改这个。
以下是用于发送mouseMoved事件的代码片段:
编辑:删除了糟糕的代码!
同时,由于我是这样做的,我需要手动检查屏幕边界以防止光标失控。因此,在多屏幕设置和用户更改分辨率时,情况会变得更糟。如果我可以只发送移动量并让操作系统处理限制光标,那将会好得多。
问题是:我是否以错误的方式进行鼠标移动事件?
我该如何解决这个问题?
编辑2: 所以,那只是一个愚蠢的错误,抱歉=P
CGSetIntegerValueField
和kCGEventMouseDeltaX
只返回此页面和StackOverflow克隆 :( @Rodrigo,如果你还在,请发布一些代码或给出一些文档链接?我也在尝试做基本相同的事情,但几乎毫无头绪! - doctaphred