1. Create/Edit an xml file somewhere safe (not under the USER folder)
1b. You can name this file whatever you want (no spaces) and can create multiple files if you want to be able to switch between mappings
2. Customize the xml however you want for mappings (tutorial link and examples below)
2b. The CustomisationUIHeader element and definition are required for in-game GUI import
3b. Save a copy of the file to .\Starcitizen\CitizenClient\USER\Controls\Mappings and launch the game
4. Select and import your custom rebinding via in-game settings menus.
4b. Optionally, use pp_rebindkeys to load it. This will also load options such as inversions and custom curves whereas the in-game GUI will not.
Delete the USER folder and re-launch.
You may need to unbind an existing action/input before binding that input to a new action unless you want both the new and previous action to both trigger on that input. This can be done via input="kb1_ " or input="js1_ " (the space is required), using defaultInput="#" depending on whether the original binding has one or two bindings. You can find full unbind XML in the XML Examples section.
To export your current in-game rebinds to a file that you can later load, use console command 'pp_rebindkeys export [device]' where [device] is keyboard, xboxpad, or joystick. The file will be created in .\Starcitizen\CitizenClient\USER\Controls\Mappings .
The configuration import GUI allows you to select which devices to map to which devices in your custom rebinding file.
Some players have shared their custom binding xml files, but so far no joy for MS FFB or CH, the two fekking controllers I have...