简体   繁体   中英

How to customize gamepad controller joystick output sensitivity in Windows 10

I've been searching extensively for a way to change the sensitivity of my gamepads in Windows. In most games the joystick sensitivity is too high, so unless I very carefully and gently press the joystick, it's always sending a maxed output so my characters will always move at full speed.

I tried to change the output dynamically with AutoHotKey , but it turns out you need a special driver to alter the output.

I then tried to thinker with the Windows Gamepad Calibration menu, but that 25 y/o control panel doesn't give any option to adjust sensitivity.

Next thing I thought of was to go within the calibration file and manually change values to reduce sensitivity, but all I could find was this reference document in which I tried to see if I could access and change the registry values associated with the calibration, but I can't even find the "GameInput" folder within my registry.

Mappings for a device with Vendor ID (VID) VVVV, Product ID (PID) PPPP, Usage Page UUUU, and Usage ID XXXX, will be read out from this location in the registry:

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

Has any of you ever found a way to work around this? I'm quite surprised that my searches came up with so little relevant information.

I'd be comfortable doing a bit of AHK/Python/Powershell coding to solve that issue if necessary.

Thanks in advance!

Short Answer

Consider using an emulation software (x360, DS4Windows, etc) which causes your input commands to go through an easy to configure software layer. Such software tend to allow tweaking of sensitivity, deadzones, and other options. See below screenshot of x360ce (right) and DS4Windows (left).

DS4Windows,x360ce

Long Answer

Depending on how a game is coded, it can read joystick input via several ways. Though joystick handling is mostly standardized, with popular standards including XInput, DInput (legacy), Steam Input (if using Steam), or directly as a USB device (not sure how common this but I've seen this).

The Windows built-in joy.cpl calibration tool affects controllers that use XInput/DInput technology, and some games do ignore these settings. Its calibration functionality is rather limited too, so I would recommend the tools mentioned in the short answer above, but it is possible to manually tweak these settings.

Before proceeding further, I would recommend reading my answer to a similar question which contains details about these particular registry keys: https://superuser.com/a/1699020/322062

At a high level though, to manually calibrate Windows joy.cpl, do the following:

  1. Navigate to the registry keys of the respective controller, HKEY_CURRENT_USER\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\DirectInput\VID_<VendorID>&PID_<ProductID>\Calibration\0\Type\Axes\<NUM> . If you are unable to identify which key corresponds to your controller, I would recommend a tool called "USBDeview" by Nirsoft.

  2. Modify the Calibration key which is mapped to a 12 byte binary value (encoded as <MIN> <MID> <MAX> ). So for instance, suppose we wanted the y-axis Calibration to be from 30-70 for a defective analog stick, with 45 centered stick. Then we Calibration mapped 12 bytes should be set to <1E 00 00 00> <2D 00 00 00> <46 00 00 00>

Bonus

For those curious, you can find out how a game is reading controller input by hooking a debugger to it and inspecting the DLLs loaded and setting breakpoints.

I was having issues with my controller when playing Star Wars Jedi: Fallen Order , and found that the game loads XInput.dll, DInput.dll, HID.dll files. Interestingly, HID.dll is invoked when a PS4 joystick is used, thus the Windows joy.cpl calibration settings are ignored. Using DS4Windows causes the XInput.dll functions to be invoked instead, also fixing calibration issues.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM