如何在 Windows 10 中自定义游戏手柄控制器操纵杆输出灵敏度
Posted
技术标签:
【中文标题】如何在 Windows 10 中自定义游戏手柄控制器操纵杆输出灵敏度【英文标题】:How to customize gamepad controller joystick output sensitivity in Windows 10 【发布时间】:2021-05-07 21:46:07 【问题描述】:我一直在广泛寻找一种方法来改变 Windows 中我的游戏手柄的灵敏度。 在大多数游戏中,操纵杆的灵敏度太高,所以除非我非常小心轻柔地按下操纵杆,否则它总是会发送最大输出,因此我的角色将始终全速移动。
我尝试使用 AutoHotKey 动态更改输出,但事实证明您需要一个特殊的驱动程序来更改输出。
然后我尝试使用 Windows Gamepad Calibration 菜单进行思考,但 25 y/o 控制面板没有提供任何调整灵敏度的选项。
接下来我想到的是进入校准文件并手动更改值以降低灵敏度,但我只能找到this reference document,在其中我试图查看是否可以访问和更改与校准,但我什至在我的注册表中找不到“GameInput”文件夹。
将从注册表中的此位置读取具有供应商 ID (VID) VVVV、产品 ID (PID) PPPP、使用页面 UUUU 和使用 ID XXXX 的设备的映射:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\VVVVPPPPUUUUXXXX
你们有没有找到解决这个问题的方法?我很惊讶我的搜索结果如此之少。
如果有必要,我愿意做一些 AHK/Python/Powershell 编码来解决这个问题。
提前致谢!
【问题讨论】:
相关问题:***.com/questions/51404353/…和superuser.com/questions/1486752/… 【参考方案1】:简答
考虑使用仿真软件(x360、DS4Windows 等),它可以使您的输入命令通过易于配置的软件层。此类软件往往允许调整灵敏度、死区和其他选项。请参见下面 x360ce(右)和 DS4Windows(左)的屏幕截图。
x360ce:https://www.x360ce.com/ DS4Windows:https://github.com/Ryochan7/DS4Windows/releases长答案
根据游戏的编码方式,它可以通过多种方式读取操纵杆输入。虽然操纵杆处理大多是标准化的,但流行的标准包括 XInput、DInput(旧版)、Steam Input(如果使用 Steam)或直接作为 USB 设备(不确定这有多普遍,但我见过)。
Windows 内置的 joy.cpl 校准工具会影响使用 XInput/DInput 技术的控制器,并且某些游戏会忽略这些设置。它的校准功能也相当有限,所以我会推荐上面简短回答中提到的工具,但可以手动调整这些设置。
在继续之前,我建议阅读我对类似问题的回答,其中包含有关这些特定注册表项的详细信息:https://superuser.com/a/1699020/322062
不过,在较高级别上,要手动校准 Windows joy.cpl,请执行以下操作:
导航到相应控制器的注册表项,
HKEY_CURRENT_USER\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\DirectInput\VID_<VendorID>&PID_<ProductID>\Calibration\0\Type\Axes\<NUM>
。如果您无法识别哪个键对应于您的控制器,我会推荐 Nirsoft 的一款名为“USBDeview”的工具。
修改映射为 12 字节二进制值的 Calibration
键(编码为 <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 函数,同时也修复了校准问题。
【讨论】:
以上是关于如何在 Windows 10 中自定义游戏手柄控制器操纵杆输出灵敏度的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 中禁用游戏手柄/操纵杆上的按钮/轴?