View Single Post
Old 10-16-2011, 12:24 AM
Posts: n/a
Default How IL2 and CLOD assign Joystick IDs. It's lazy and needs to be changed.

I finally discovered how IL2 and a few other games assign joystick IDs. Now that this is known, is it fixable?

Currently, IL2 assigns IDs to joysticks alphabetically via the Vendor/Device ID. In my case, the list is as follows:

VID_044F&PID_0402 - Thrustmaster Warthog Stick
VID_044F&PID_0404 - Thrustmaster Warthog Throttle
VID_046D&PID_C215 - Logitech Extreme 3D Pro
VID_046D&PID_C216 - Logitech Dual Action Gamepad
VID_068E&PID_C0F2 - CH Pro Pedals USB

Because of this you have to remap all of your controls whenever something is removed, or if you replace a device and it doesn't happen to fall alphabetically in to the same assignment.

The proper method is to assign joysticks ID's based on the ID assigned in the following registry key: Joystick ID binary value key for the associated controller, located here:

HKEY_CURRENT_USER\System\CurrentControlSet\Control \MediaProperties\PrivateProperties\DirectInput\<VE NDOR AND DEVICE ID>\Calibration\0

Devices are assigned IDs here as they're installed. It adds to better usability as devices retain their IDs, even as they're unplugged and plugged back in. The order of devices can even be changed by editing the values in this key or by using utilities that do it for you.

The development team needs to start using this registry key to assign joystick IDs in game instead of doing it alphabetically by device. That way people like me who use a lot of different hardware won't have to remap our controls simply because we don't want to have everything plugged in permanently.

Last edited by EvilJoven; 10-20-2011 at 03:32 PM.
Reply With Quote