Full unsupported gamepad compability - solution
I'd like to write a small step by step instruction how to use any gamepad to play Need For Speed 2015. If you're having an issue, where buttons A and B of gamepad would act as opening the hub and phone menu, this one is for you.
Setting up Xbox360ce
First thing you need to do is emulate your gamepad, so that the game sees it as Xbox 360 gamepad. Download the xbox360ce_x64.exe (for 64 bit executables). Put it in the game folder and run it. You'll get the message to create the "xinput.dll" file. Bind your buttons to xbox360 equivalents and click the save button.
At this point, it is possible that the game recognises your gamepad, but no matter what you bind to A and B button, they'll act as menu opening buttons.
If your game doesn't recognise your gamepad yet, do the following: (this solution was intended for NFS:Rivals, but those 2 games run same engine)
1. Open your game folder and locate "xinput1_3.dll"
2. Change the name of file to "xinput9_1_0.dll"
3. Open the x360ce.ini file and under [InputHook] paste the following:
[InputHook]
HookMode=1
HookLL=0
HookCOM=1
HookSA=0
HookWT=0
HookDI=1
HookPIDVID=1
HookName=1
Your gamepad should work properly right now, but you still can't use A and B buttons.
Enabling A and B buttons
To make your gamepad usable in menus with working and bindable A and B button, do the following:
1. Go to Documents/Need for Speed/settings
2. Open "PROFILEOPTIONS_profile" with a notepad
3. Look for GstKeyBinding lines. The look like this:
GstKeyBinding.racevehicle.ConceptGearDown.0.axis 24
GstKeyBinding.racevehicle.ConceptGearDown.0.button 6
GstKeyBinding.racevehicle.ConceptGearDown.0.negate 0
GstKeyBinding.racevehicle.ConceptGearDown.0.type 2
Every GstKeyBinding command consists of 4 elements: axis, button, negate and type. Delete every GstKeyBinding that relates to TYPE 3. This means deleting all 4 lines of code that are ending with "type 3". Type 3 is a wheel binding. Type 0 is keyboard and type 2 is your gamepad.
4. Save the file and run the game.
5. Go to key settings and change the tab to customize "custom wheel"
6. Change all bindings from top to bottom to 1 single key on gamepad. This will result in 1 keybinding being the gamepad button (I used the Right POV, so all my bindings are empty except the "song change" that is right POV).
7. Go to advanced wheel options and set all deadzones to 100%.
Now your gamepad should fully work as intended. A and B button are bindable to whatever you want. You can navigate through options with your left stick, accept with A and go back with B.
If anyone tries this method, please let me now if it worked for you too.