I'll get this out of the way first: the in-game Options editor is primitive, difficult to navigate, and confusing. There's no doubt that it could be improved in many ways. That's not the focus of this post, however. This post is about living with what we have.
The bindings file and error log
Your bindings file is stored in your Windows user folder at [SYSTEM DRIVE]/users/[YOUR USER NAME]/AppData/Local/Frontier Developments/Elite Dangerous/Options/Bindings/.
There are several preset bindings files, any of which might be overwritten during a large update.
You may sometimes find that your bindings seem to have disappeared in-game: this often means that the game failed to find one of your devices on startup, and so it prevents you from loading that file. Fortunately there is another file in that folder (BindingLoadingErrors.log) which reports this as well as syntax errors.
If a device wasn't found the log file will contain an entry like this
If your bindings have disappeared from the game your first recourse is to check the BindingLoadingErrors.log to see what happened.
* It's kind of fractal that “There where” is itself an error.
Editing bindings as text
I would strongly recommend that PC users create and edit their own bindings with a text editor. Any editor will do, but you're best off using one that displays line numbers. If there was a problem with your bindings file you'll see an error in BindingLoadingErrors.log which gives the line number.
The editor I use is CodeLobster, but there are many good ones.
A bindings file has a unique file name that includes its version number. This file name is also repeated at the beginning of the file. If your bindings file is called Special Bindings.3.0.binds, the beginning of the file should look like this:
It's very important that these names match just as I've shown; and although it's possible to have more than one version I recommend that you stick with MajorVersion 3 and MinorVersion 0.
This is an XML file, so its entries have open and close tags (<SOME VALUE> and </SOME VALUE>). If there is more than one entry in a category each one will have an open and close tag within the tags for its parent, like:
If you make a mistake in this structure and try to load the file this will result in an entry in the BindingLoadingErrors.log that indicates the line number for the error. This is why you want to use an editor that displays line numbers.
Why use a text editor?
The first reason for using a text editor is that this is the only way I know to create a uniquely named bindings file that can't be overwritten during a large update to the game.
But since you're using a text editor you can also do what text editors do best: edit text.
If you are adding a new throttle, but you want to keep all the rest of your stick and keyboard bindings, you can perform a search for the throttle name to remove all references to that device from your bindings. You would turn this:
… into this:
… and once you'd done this to every entry that referenced the old throttle you could plug in your new and much better throttle, start the game, and then select the new bindings file from the drop-down menu in the Options editor. From there you could set all the new throttle's bindings in-game while keeping all your other bindings.
It's also possible to do things in a text editor that the in-game editor won't allow. For example, I like to bind Deploy/Retract Hardpoints to the same button as Enter/Exit FSS. Since you can only deploy your hardpoints while in normal flight, and you can only use the FSS while in supercruise, this isn't a real conflict: but the in-game editor still won't allow you to set the two functions to the same button. It's very easy to do that in a text editor, though.
I've just done the same thing to my throttle and thruster controls because I don't normally use forward and reverse thrusters when I have Flight Assist on, and can't use throttle when Flight Assist is off. But binding those all those things to the Y axis of my left-hand stick means that all my motion is controlled in a similar way, regardless of the flight mode. Hey, that might not work well for some reason, but by editing my bindings as text I can try it and see. (It works so far.)
Other notes
Always back up your bindings file to another folder, because paranoid people have fewer unpleasant surprises.
Entries in the bindings file have different types of content. You will see things like:
and
Just don't replace one with the other, and you'll be fine.
Once again: if something didn't load, check BindingLoadingErrors.log first!
The bindings file and error log
Your bindings file is stored in your Windows user folder at [SYSTEM DRIVE]/users/[YOUR USER NAME]/AppData/Local/Frontier Developments/Elite Dangerous/Options/Bindings/.
There are several preset bindings files, any of which might be overwritten during a large update.
You may sometimes find that your bindings seem to have disappeared in-game: this often means that the game failed to find one of your devices on startup, and so it prevents you from loading that file. Fortunately there is another file in that folder (BindingLoadingErrors.log) which reports this as well as syntax errors.
If a device wasn't found the log file will contain an entry like this
There where errors* when loading preset file: [CUSTOM FILENAME].binds
Missing devices: [NAMES OF MISSING DEVICES]
If your bindings have disappeared from the game your first recourse is to check the BindingLoadingErrors.log to see what happened.
* It's kind of fractal that “There where” is itself an error.
Editing bindings as text
I would strongly recommend that PC users create and edit their own bindings with a text editor. Any editor will do, but you're best off using one that displays line numbers. If there was a problem with your bindings file you'll see an error in BindingLoadingErrors.log which gives the line number.
The editor I use is CodeLobster, but there are many good ones.
A bindings file has a unique file name that includes its version number. This file name is also repeated at the beginning of the file. If your bindings file is called Special Bindings.3.0.binds, the beginning of the file should look like this:
<?xml version="1.0" encoding="UTF-8" ?>
<Root PresetName="Special Bindings" MajorVersion="3" MinorVersion="0">
It's very important that these names match just as I've shown; and although it's possible to have more than one version I recommend that you stick with MajorVersion 3 and MinorVersion 0.
This is an XML file, so its entries have open and close tags (<SOME VALUE> and </SOME VALUE>). If there is more than one entry in a category each one will have an open and close tag within the tags for its parent, like:
<CATEGORY>
<FIRST CONTROL>
</FIRST CONTROL>
<SECOND CONTROL>
</SECOND CONTROL>
</CATEGORY>
If you make a mistake in this structure and try to load the file this will result in an entry in the BindingLoadingErrors.log that indicates the line number for the error. This is why you want to use an editor that displays line numbers.
Why use a text editor?
The first reason for using a text editor is that this is the only way I know to create a uniquely named bindings file that can't be overwritten during a large update to the game.
But since you're using a text editor you can also do what text editors do best: edit text.
If you are adding a new throttle, but you want to keep all the rest of your stick and keyboard bindings, you can perform a search for the throttle name to remove all references to that device from your bindings. You would turn this:
<DownThrustButton>
<Primary Device="T16000MTHROTTLE" Key="Pos_Joy_YAxis" />
<Secondary Device="{NoDevice}" Key="" />
</DownThrustButton>
… into this:
<DownThrustButton>
<Primary Device="{NoDevice}" Key="" />
<Secondary Device="{NoDevice}" Key="" />
</DownThrustButton>
… and once you'd done this to every entry that referenced the old throttle you could plug in your new and much better throttle, start the game, and then select the new bindings file from the drop-down menu in the Options editor. From there you could set all the new throttle's bindings in-game while keeping all your other bindings.
It's also possible to do things in a text editor that the in-game editor won't allow. For example, I like to bind Deploy/Retract Hardpoints to the same button as Enter/Exit FSS. Since you can only deploy your hardpoints while in normal flight, and you can only use the FSS while in supercruise, this isn't a real conflict: but the in-game editor still won't allow you to set the two functions to the same button. It's very easy to do that in a text editor, though.
I've just done the same thing to my throttle and thruster controls because I don't normally use forward and reverse thrusters when I have Flight Assist on, and can't use throttle when Flight Assist is off. But binding those all those things to the Y axis of my left-hand stick means that all my motion is controlled in a similar way, regardless of the flight mode. Hey, that might not work well for some reason, but by editing my bindings as text I can try it and see. (It works so far.)
Other notes
Always back up your bindings file to another folder, because paranoid people have fewer unpleasant surprises.
Entries in the bindings file have different types of content. You will see things like:
<UI_Right>
<Primary Device="231D0200" Key="Joy_POV1Right" />
<Secondary Device="{NoDevice}" Key="" />
</UI_Right>
and
<SAAThirdPersonYawAxisRaw>
<Binding Device="231D0200" Key="Joy_XAxis" />
<Inverted Value="0" />
<Deadzone Value="0.00000000" />
</SAAThirdPersonYawAxisRaw>
Just don't replace one with the other, and you'll be fine.
Once again: if something didn't load, check BindingLoadingErrors.log first!