Jump to content

Recommended Posts

Posted (edited)

Circular analog input devices aren't translated correctly in Windows. It isn't possible to achieve 100% yaw/pitch/roll on the diagonal in the default configuration (calibration), only 70.7%. Affects all circular analog controllers, unless somehow supported by driver or software natively.

 

The only workaround is to recalibrate the device, but that reduces the range of motion available to the controller, effectively making 29.3% of the range worthless if you want 100% yaw/pitch/roll on the diagonal.

 

VJoy, Autohotkey, etc... cannot solve this issue. Actually possible with x360ce (assuming it works in DCS), but only by editing the source code and compiling (questionable example): https://www.ngemu.com/threads/circle-to-square-analog-mapping.155968/ Maybe also Joystick Gremlin, but not sure, and I don't do Python scripting: https://whitemagic.github.io/JoystickGremlin/user_plugins_code/

 

The only real in-game solution would be something like this (may introduce input lag and require pre-calculated tables instead): http://theinstructionlimit.com/squaring-the-thumbsticks I thought there was an option to fix this issue in-game, but apparently not. Not sure in which game/application I saw an option like this previously.

 

attachment.php?attachmentid=223918

 

Calibration can be done programmatically through Control Panel, or by setting Axis Saturation X (not Y) values in DCS configuration.

 

HKCU\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\DirectInput\VID_045E&PID_028E\Calibration\0\Type\Axes

 

Axis 0 (x): 00 0f 00 00 00 80 00 00 00 f0 00 00

Axis 1 (y): 00 0f 00 00 00 80 00 00 00 f0 00 00

Axis 2 (z): 80 0f 00 00 80 80 00 00 80 f0 00 00

Axis 3 (rx): ff 0f 00 00 ff 80 00 00 ff f0 00 00

Axis 4 (ry): ff 0f 00 00 ff 80 00 00 ff f0 00 00

 

Axis identifier: 00 (x/y), 80 (z), ff (rx/ry)

Axis range: 0f (15 min), 80 (128 center), f0 (240 max)

Unknown: 00 00

 

Will set the saturation (of controller input motion range) to 87.5% for example (or set Axis Saturation X to 87.5% in DCS config). 16/128 (half range, full 0-255) = 12.5%. To reset calibration, delete the reg_binary values or use control panel to reset joystick calibration (same effect). To populate reg values, calibrate it.

xbox360-analog.jpg.38bee87d46598a548b947ece0777b41f.jpg

Edited by betatrash
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...