So the 2.0 Update didn’t seem to fix issues with input mapping for some devices, I had a play around yesterday to try and find a fix and managed to find a workaround for this issue.
Disclaimer: I’m not sure whether the game looks down upon those who change these files, so do this at your own risk.
For those with the problem, essentially when you change input mapping in-game, it will create a new custom profile for you based on whatever preset you chose, with whatever changes you have made, however when you next restart the game, it will default to a particular profile based on your input device.
Note: This is for the Windows Store version, someone may want to provide alternative locations for the Steam version
- Start Forza Motorsport, then exit through the menu once you have entered the main menu
- Open Windows Explorer and navigate to the following folder
%LOCALAPPDATA%\Packages\Microsoft.ForzaMotorsport_8wekyb3d8bbwe\LocalCache\Local\User_GamingLocalStorageDirectory\ConnectedStorage\InputTranslationManager
- You should see a file here called ‘LastUsedProfile’, open this in a text editor of your choice
- The contents of this file should look something like this
<ProfileChoices Version="2" KeyboardProfile="c8941d47-c0bc-4a46-993e-f273a1599f5e" ControllerProfile="c5213f1a-ca1e-4f84-a5f4-477dacca1062" RawGameControllerProfile="c87ed1d2-7350-479b-9190-1cb3224595c1"/>
Depending on the input device you are having a problem with, highlight the contents of the profile you want to fix and copy it somewhere or to clipboard, in my case it’s the wheel profile “RawGameControllerProfile”, so I have kept note of “c87ed1d2-7350-479b-9190-1cb3224595c1”.
5. Navigate to your Forza Motorsport install directory, specifically the following path
INSTALLDIR\Forza Motorsport\Content\media\base\inputmappingprofiles
- You are now looking for the file of the profile that matches the Id you took note of previously, if you have an editor like vscode, this is much easier because you can do a “find in files” search across the whole directory. Each file should have a first line similar to the following
<RawGameControllerInputMappingProfile Version="1" Id="c87ed1d2-7350-479b-9190-1cb3224595c1" UserFacingName="IDS_T300Ferrari" IsDefaultProfile="1" PrimaryDeviceVidPid="72332910" FFBDeviceVidPid="72332910" FFBMotorIndex="0">
You are looking for the file which has the “Id” property matching the one you took a note of, in my case (with a T300 Ferrari wheel), it matched to “DefaultRawGameControllerMappingProfileThrustmasterT300Ferrari.xml”
7. Important: Backup this file
8. Open the file in your chosen text editor
9. Depending on what input you want to change/add, your strategy may differ, but essentially you want to create a new entry in here in the section within the Xml that has the “” comment, as an example, I want to re-map the look left/right buttons to the left and right-most buttons on my wheel base.
10. If you don’t know the number of the button you want to map, you can enter the Input section in the game settings and remap a button to get the number you need, in the file these are 0-based so just -1 from the number shown in game to get the correct Index. In my case this was 10, so 10 - 1 = 9
11. Look through the file for the command you want to map to this button, each mapping has a comment above it which should help, for example
<!-- Key = INPUTCMD_LOOK_LEFT, Thrustmaster T300 Ferrari Button 6 -->
<Value Version="2" Key="11" VidPid="72332910" InputType="Button" Index="6" />
In this case, Key 11 is INPUTCMD_LOOK_LEFT, which is the one I’m looking to re-map.
12. Putting this all together, create a new entry in this file with your desired mapping, for example, I have mapped 2 buttons for look left and right, it’s also a good idea to add a comment to the top of the section to differentiate these.
<!-- Custom Bindings -->
<!-- Key = INPUTCMD_LOOK_LEFT, Thrustmaster T300 Ferrari Button 9 -->
<Value Version="2" Key="11" VidPid="72332910" InputType="Button" Index="9" />
<!-- Key = INPUTCMD_LOOK_RIGHT, Thrustmaster T300 Ferrari Button 2 -->
<Value Version="2" Key="12" VidPid="72332910" InputType="Button" Index="8" />
The “Version” and “VidPid” values you should copy from the existing mapping of the button with the same Index.
13. Lastly, just comment out the existing mappings of these buttons (Add “” to the end of the content), for example
<!-- Key = INPUTCMD_LOOK_LEFT, Thrustmaster T300 Ferrari Button 6 -->
<!--<Value Version="2" Key="11" VidPid="72332910" InputType="Button" Index="6" />-->
<!-- Key = INPUTCMD_LOOK_RIGHT, Thrustmaster T300 Ferrari Button 7 -->
<!--<Value Version="2" Key="12" VidPid="72332910" InputType="Button" Index="7" />-->
<!-- Key = INPUTCMD_LOOK_STRAIGHT_BACK, Thrustmaster T300 Ferrari Button 2 -->
14. Boot the game up, and in the Input menu you should see your buttons are now mapped how you would like them!