How can I move controller bindings between DCS on different PCs?

Solution 1:

DCS stores controller profiles in Saved Games\DCS\Config\Input\[aircraft]\joystick\. (All of Saved Games\DCS can be copied between computers, which will also retain Mods and trackfiles. The Saved Games folder can be moved/have different names, but by default is in %userprofile%)

The filenames (.diff.lua files) in the joystick folders contain a device GUID that will differ between computers, so you'll need to determine the new GUIDs and rename them. One way to find the new GUIDs is to plug in (and turn on, if applicable) all the controllers you'll be using, open DCS on the new computer, go to the Options / Controls window, and click "Make HTML." This will open an explorer window to Saved Games\DCS\InputLayoutsTxt\, where there will be [device name with GUID].html files for all the devices that DCS detected. Those are the new names.

Now you do the the following to update the .diff.lua file names:

  • Open a command window for the Saved Games\DCS\Config\Input, either by running "cmd" and using "cd" to change the directory there, or navigating there in Explorer and typing "cmd" into the path bar
  • Run this DOS command, replacing [old filename] with the ones currently in the copied directory, and [new filename] with the names you found out from the HTML above
FOR /d %x IN (*) DO rename "%x\joystick\[old filename].diff.lua" "[new filename].diff.lua"

If you placed a modifier on the controllers, every aircraft directory also has a modifiers.lua file where you'll need to replace the old controller name with the new one inside of a "device" key field. The format is exactly the same as the [old filename] [new filename] pairs above; most modern text editors have some way to do multi-file find and replace (e.g. Sublime Text has that as part of "Find in Files..."). Replace [old filename] with [new filename] in those files and your modifiers will work.