On PC I managed to configure my steering wheel as I wanted.
I had to find the file in which the keys profiles are saved. Not so easy, because files have no extension, and names are randomized at each launch. I sorted files by last save date and opened them all in a text editor. The keys layout file is an XML file looking like ths : <KeyboardProfile Version=“3” …
File shold be located here :
C:\Users[username]\AppData\Local\Packages\Microsoft.624F8B84B80_8wekyb3d8bbwe\SystemAppData\wgs[some random numbers]
… in one of the subfolders (sort them by last modification date)
Then I had to figure out how the file was organized, and how to assign my keys.
I edited the 1st custom wheel profile. It looks like this :
<RawGameControllerInputMappingProfile Version=“3” Id=“9600c3da-05af-4c08-9f55-8d920f181470” UserFacingName=“IDS_CustomWheelProfile_1” IsDefaultProfile=“0” PrimaryDeviceVidPid=“74302031”
I guess the device VidPid is unique for each wheel (74302031 means Logitech G29 i presume).
The key assignements are organized in different contexts :
Context=“INPUTCONTEXT_RACING”
Context Version=“3” Context="INPUTCONTEXT_RACING_UI
Context Context=“INPUTCONTEXT_TELEMETRY_UI”
That means you can customize different keys for different contexts.
For instance I managed to use the +/- keys on the G29 to radio station +/- in freeroam, and to telemetry page +/- when telemetry is activated.
This is how assignments look :
<Value Key="INPUTCMD_LOOK_BACK">
<InputCmdLow VidPid="74302031" InputType="Button" Index="0" IsPrimary="1"/>
</Value>
<Value Key="INPUTCMD_LOOK_LEFT">
<InputCmdLow VidPid="74302031" InputType="Button" Index="1" IsPrimary="1"/>
</Value>
<Value Key="INPUTCMD_LOOK_RIGHT">
<InputCmdLow VidPid="74302031" InputType="Button" Index="2" IsPrimary="1"/>
</Value>
<Value Key="INPUTCMD_SWITCH_CAMERA">
<InputCmdLow VidPid="74302031" InputType="Button" Index="8" IsPrimary="1"/>
</Value>
<Value Key="INPUTCMD_MULLIGAN">
<InputCmdLow VidPid="74302031" InputType="Button" Index="10" IsPrimary="1"/>
</Value>
<Value Key="INPUTCMD_ACTIVATE">
<InputCmdLow VidPid="74302031" InputType="Button" Index="6" IsPrimary="1"/>
</Value>
<Value Key="INPUTCMD_OPEN_MAP">
<InputCmdLow VidPid="74302031" InputType="Button" Index="7" IsPrimary="1"/>
</Value>
You have to change the number for the Index value to the desired value. And sometimes set IsPrimary to 0.
Values for G29 :
0 cross 3 triangle 1 square 2 circle
8 share, 9 option, 24 Playstation
6 R2, 7 L2, 10 R3, 11 L3
20 -, 19 +
23 rotary enter, 21/22 rotary but it sens double input
For D-pad it’s even more complex
InputType=“Switch” Index=“0” SwitchPosition=“Up” IsPrimary=“1”
SwitchPosition can take values : Up, Down, Left, Right
It was really painful but I was able to configure everything I wanted.
I think with this method and by you using the VidPid parameter, you can configure so that multiple controllers can be used at the same time (logitech wheel + thrustmaster shifter + chinese handbrake for instance).