0

我一直在广泛寻找一种方法来改变我的游戏手柄在 Windows 中的灵敏度。在大多数游戏中,操纵杆的灵敏度太高,所以除非我非常小心轻柔地按下操纵杆,否则它总是会发送最大输出,因此我的角色将始终全速移动。

我尝试使用AutoHotKey动态更改输出,但事实证明您需要一个特殊的驱动程序来更改输出。

然后我尝试使用 Windows Gamepad Calibration 菜单进行思考,但是 25 y/o 控制面板没有提供任何调整灵敏度的选项。

接下来我想到的是进入校准文件并手动更改值以降低灵敏度,但我能找到的只是这个参考文档,我试图在其中查看是否可以访问和更改与校准相关的注册表值,但是我什至在我的注册表中找不到“GameInput”文件夹。

具有供应商 ID (VID) VVVV、产品 ID (PID) PPPP、使用页面 UUUU 和使用 ID XXXX 的设备的映射将从注册表中的此位置读取:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\VVVVPPPPUUUUXXXX

你们有没有人找到解决这个问题的方法?我很惊讶我的搜索结果如此之少。

如果有必要,我会很乐意做一些AHK/Python/Powershell编码来解决这个问题。

提前致谢!

4

1 回答 1

1

简答

考虑使用仿真软件(x360、DS4Windows 等),它会使您的输入命令通过易于配置的软件层。此类软件往往允许调整灵敏度、死区和其他选项。请参见下面的 x360ce(​​右)和 DS4Windows(左)的屏幕截图。

DS4Windows,x360ce

长答案

根据游戏的编码方式,它可以通过多种方式读取操纵杆输入。虽然操纵杆处理大部分是标准化的,但流行的标准包括 XInput、DInput(旧版)、Steam Input(如果使用 Steam)或直接作为 USB 设备(不确定这有多普遍,但我已经看到了)。

Windows 内置的 joy.cpl 校准工具会影响使用 XInput/DInput 技术的控制器,并且某些游戏会忽略这些设置。它的校准功能也相当有限,所以我会推荐上面简短回答中提到的工具,但可以手动调整这些设置。

在继续之前,我建议阅读我对类似问题的回答,其中包含有关这些特定注册表项的详细信息:https ://superuser.com/a/1699020/322062

但是,在较高级别上,要手动校准 Windows joy.cpl,请执行以下操作:

  1. 导航到相应控制器的注册表项, HKEY_CURRENT_USER\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\DirectInput\VID_<VendorID>&PID_<ProductID>\Calibration\0\Type\Axes\<NUM>. 如果您无法确定哪个键对应于您的控制器,我会推荐 Nirsoft 的一款名为“USBDeview”的工具。

  2. 修改Calibration映射为 12 字节二进制值(编码为<MIN> <MID> <MAX>)的键。因此,例如,假设我们希望 y 轴Calibration在 30-70 之间,用于有缺陷的模拟摇杆,摇杆为 45 居中。然后我们Calibration映射的12个字节应该设置为<1E 00 00 00> <2D 00 00 00> <46 00 00 00>

奖金

对于那些好奇的人,您可以通过将调试器连接到游戏并检查加载的 DLL 并设置断点来了解游戏如何读取控制器输入。

在玩Star Wars Jedi: Fallen Order时,我的控制器出现问题,发现游戏加载了 XInput.dll、DInput.dll、HID.dll 文件。有趣的是,使用 PS4 游戏杆时会调用 HID.dll,因此会忽略 Windows joy.cpl 校准设置。使用 DS4Windows 会导致调用 XInput.dll 函数,同时修复校准问题。

于 2022-01-13T14:51:02.443 回答