blcrusher: I can't rebind the Tab key. Why is that ?
Download the utility AutoHotKey.
It can fix all kinds of problems with games --- not just making unbindable keys/buttons bindable, but even things like changing Toggle Aim/Crouch to Hold Aim/Crouch (or vice versa) or fixing aim/zoom problems that result from raising the FoV.
You don't have to learn the scripting language. If you understand logic you can simply piece together scripts from the freely available information online.
EDIT:
This is the script I use for BioShock: Infinite, in which <Tab> by default performs the same function as <Esc>, for whatever ridiculous reason, and is not rebindable in-game:
$tab::
Send {p}
Return
The script maps an otherwise unused key (in this case <P>) to <Tab>. A function can then be bound to <P>, which will be sent whenever the <Tab> key is pressed. Pretty simple.
If this is all you need to do for a game, the entire script file will look like this:
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
#IfWinActive, ahk_exe YourGame.exe
$tab::
Send {p}
Return
Change 'YourGame.exe' to the name of your game's .exe file. Then copy this text into a Notepad file and change the extension from '.txt' to '.afk'. After installing AutoHotKey just double-click on the .afk file to run the script before launching your game.