【问题标题】:Controlling joystick axes using AutoHotkey使用 AutoHotkey 控制操纵杆轴
【发布时间】:2015-08-14 03:29:54
【问题描述】:
我很快就会得到一个用于 Kerbal Space Program 的飞行棒,并希望像我在计算机上使用的所有其他外围设备一样对其进行 AHK 化。我知道如何重新映射操纵杆按钮,以及如何获取飞行杆和油门轴的读数,但我不确定如何控制使用 AutoHotkey 虚拟地控制轴。我已经看到一些关于与 vJoy 和其他程序集成的库的提及,但这些看起来很复杂,我还没有弄清楚如何使用它们。是否可以在纯 AHK v1.1 中操作操纵杆轴?
【问题讨论】:
标签:
autohotkey
axis
axes
joystick
remap
【解决方案1】:
不,使用任何第三方软件无法更改物理操纵杆的报告方式,更不用说 AutoHotkey。
但是,X360CE 可以改变游戏对 XBox pad 的显示方式,因为它将伪造的 XInput DLL 插入到游戏文件夹中,因此当游戏进行 XInput 调用时,它会拦截它们。
显然,如果操纵杆带有驱动程序,软件可以改变操纵杆的报告方式。
但是,有一个解决方法:
安装Shaul's vJoy,然后你可以创建一个假的“虚拟”棒。
然后,您从物理摇杆读取输入,并将(更改的)状态写入虚拟 vJoy 摇杆。
我编写了一个名为CvJoyInterface 的库,它使从AHK 访问vJoy 变得非常简单。
这种方法的问题是物理摇杆对游戏仍然可见,因此您需要强制游戏从虚拟摇杆而不是物理摇杆获取输入。这可能很难,因为在游戏的绑定屏幕中,当您移动物理摇杆时,游戏将看到该移动在虚拟摇杆之前,而是与之绑定。
如果您希望能够在不借助编码的情况下进行这种重新映射,我编写了一个名为 UCR 的基于 AutoHotkey 的应用程序,它可以为您完成所有这些工作。
UCR 还包括一个“GameBind”功能,它允许您在所有重映射中插入延迟,这样您就可以移动摇杆,然后在游戏中单击绑定,并等待 UCR 在延迟后移动摇杆,因此游戏只看到虚拟摇杆移动。
在游戏中完成所有绑定后,关闭 GameBind。
正在编写一套名为 ViGEm 的新应用程序,其中一个组件称为 HidGuardian。完成后,这应该允许我们隐藏除重新映射应用程序(如 UCR)之外的所有东西的物理棒,使我们能够进行适当的重新映射,而不必诉诸延迟输入等。