如何在 Windows 10 中自定义游戏手柄控制器操纵杆输出灵敏度

问题描述 投票:0回答:2

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

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

然后我尝试使用 Windows 游戏手柄校准菜单进行思考,但 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 编码来解决该问题。

提前致谢!

calibration gamepad remap gamepad-api
2个回答
2
投票

简短回答

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

DS4Windows, x360ce

长答案

根据游戏的编码方式,它可以通过多种方式读取操纵杆输入。虽然操纵杆处理大多是标准化的,流行的标准包括 XInput、DInput(旧版)、Steam 输入(如果使用 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 并设置断点来了解游戏如何读取控制器输入。

我在玩“星球大战绝地:陨落的武士团”时遇到了控制器问题,发现游戏加载了 XInput.dll、DInput.dll、HID.dll 文件。有趣的是,当使用 PS4 操纵杆时会调用 HID.dll,因此 Windows Joy.cpl 校准设置将被忽略。使用 DS4Windows 会导致调用 XInput.dll 函数,同时也修复了校准问题。


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.