使用 AutoHotkey 控制操纵杆轴

Controlling joystick axes using AutoHotkey

我很快就会得到一个用于 Kerbal Space 程序的飞行棒,并希望像我在计算机上使用的所有其他外围设备一样对其进行 AHK 化。我知道如何重新映射操纵杆按钮,以及如何获取飞行杆和油门轴的读数,但我不确定如何使用 AutoHotkey 虚拟地 控制 轴。我已经看到一些提到与 vJoy 和其他程序集成的库,但这些看起来很复杂,我还没有弄清楚如何使用它们。是否可以在纯 AHK v1.1 中操纵操纵杆轴?

不,无法使用任何 第三方软件更改物理操纵杆的报告方式,更不用说 AutoHotkey 了。

但是,X360CE 可以改变游戏对 XBox pad 的看法,因为它将伪造的 XInput DLL 插入到游戏文件夹中,因此当游戏进行 XInput 调用时,它会拦截它们。

显然,如果操纵杆带有驱动程序,则该软件可以改变操纵杆的报告方式。

但是,有一个解决方法:
安装Shaul's vJoy,然后你可以创建一个假的"virtual"棒。
然后,您从物理摇杆读取输入,并将(更改后的)状态写入虚拟 vJoy 摇杆。

我编写了一个名为 CvJoyInterface 的库,它使从 AHK 访问 vJoy 变得非常简单。

这个方法的问题是物理摇杆对游戏仍然可见,所以你需要强制游戏从虚拟摇杆而不是物理摇杆获取输入。这可能很难,因为在游戏的绑定屏幕中,当您移动物理摇杆时,游戏会先看到虚拟摇杆的移动,然后再绑定到虚拟摇杆。

如果您希望能够在不借助编码的情况下进行这种重新映射,我编写了一个基于 AutoHotkey 的应用程序,名为 UCR,它可以为您完成所有这些工作。
UCR 还包含一个 "GameBind" 功能,它允许您在所有重映射中插入延迟,以便您可以移动摇杆,然后在游戏中单击绑定,并等待 UCR 在延迟后移动摇杆,所以游戏只能看到虚拟摇杆移动。
在游戏中完成所有绑定后,关闭 GameBind。

正在编写一套名为 ViGEm 的新应用程序,其中一个组件称为 HidGuardian。完成后,这应该允许我们对除重新映射应用程序(如 UCR)之外的所有内容隐藏物理棒,使我们能够进行适当的重新映射,而不必诉诸延迟输入等。