Sunday, December 18, 2011

Battlefield 3 Key Binding issue fix, specifically the jet.

UPDATE: http://bf3.realmware.co.uk/settings-editor/downloads since update 2.3 released on January 5th it pretty much does everything now.

First of all I have to thank 2 specific blog entries as they were very helpful
http://expfist.blogspot.com/2011/10/battlefield-3-key-bindings-issue-fix.html
http://www.tumblr.com/tagged/q+spotting
In fact the second was nice benefit as I use ‘E’ to spot and ‘Q’ is how I enter/exit vehicles. The key binding issue in Battlefield 3 comes down to they didn’t necessarily hard code the controls, they just didn’t have the rebind function, do all the commands it should. You can clearly see this in the ‘q’ spotting article. Now the reason I had to write this key binding article the jets. So when I bind a key to decelerate other than ‘s’ you will see that ‘s’ will still decelerate, even if it’s bound to something else. I use a variation of an old quake config that I can’t play first person shooters any other way. [Space=forward, a=backwards, s=strafe left, d=strafe right]. So for me ‘s’ is going to be yaw left which it did, however it would also decelerate. And if I set ‘A’ to throttle down, it did nothing, unless you were in SU-39 Frogfoot which if you were in third person you can see the air brakes deployed. Yet in first person you can clearly see they are not slowing you down with your speed on the

GstKeyBinding.jet.ConceptBrake.0.axis 0
GstKeyBinding.jet.ConceptBrake.0.button 30
GstKeyBinding.jet.ConceptBrake.0.negate 0
GstKeyBinding.jet.ConceptBrake.0.type 0
^this is the only thing the keybinding from the gui does.
This is your throttle up
GstKeyBinding.jet.ConceptMoveFB.1.axis 0
GstKeyBinding.jet.ConceptMoveFB.1.button 57
GstKeyBinding.jet.ConceptMoveFB.1.negate 0
GstKeyBinding.jet.ConceptMoveFB.1.type 0
When binding the throttle down BF3 needs to be patched so it actually binds the following, which You can add into the config.
GstKeyBinding.jet.ConceptMoveFB.2.axis 0
GstKeyBinding.jet.ConceptMoveFB.2.button 30
GstKeyBinding.jet.ConceptMoveFB.2.negate 1
GstKeyBinding.jet.ConceptMoveFB.2.type 0
^this is the throttle down that will actually help.
Cool so I did all this and I should be good to go, ‘A’ will not decelerate, but ‘S’ is still slowing me down as well. That brings me to my next discovery that “GstKeyBinding.gunner” keys actually affect the jet.
So I needed to do the following
GstKeyBinding.gunner.ConceptMoveFB.2.axis 0
GstKeyBinding.gunner.ConceptMoveFB.2.button 30
GstKeyBinding.gunner.ConceptMoveFB.2.negate 1
GstKeyBinding.gunner.ConceptMoveFB.2.type 0
I didn’t have to bother rebinding the rest of the gunner as far as I know, I have not had it break anything.

That’s My story, now like the blog entry above that talks about config fixes I am going to explanation to how BF3 config actually works.

GstKeyBinding.gunner.ConceptMoveFB.2.axis 0
GstKeyBinding.gunner.ConceptMoveFB.2.button 30
GstKeyBinding.gunner.ConceptMoveFB.2.negate 1
GstKeyBinding.gunner.ConceptMoveFB.2.type 0

So let us break this down.
GstKeyBindng = letting the game know this is a key binding
Gunner/vehicle/jet/infantry/etc. = This lets the game know what instance to use this binding in
ConceptMoveFB = This lets the game know what kind of binding it is (side note: FB, most likely stands for forward Back)
2 = it’s the 3rd (because the count starts at 0) key that is bound to do this action
Axis/button/negate/type: a little more explanation needs to go here.
Axis = This is where I am not at a full understanding, this is more for editing mouse movements, joysticks, and controllers. Since this article is focused on keyboard/mouse, axis 0 should suffice.
Button = they key, or joystick button that the action is bound to i.e. 30 on the keyboard is ‘a’
Negate = for FB 0 is forward because it’s not negated, and if its negated with ‘1’ its backwards. And for LR(left right) or YAW, 0 is right, and left is 1.

The keyboard buttons, it starts at tilde which is ‘1’ which 2 is ‘1’ also based on full keyboard.
And it counts from there, however it doesn’t appear to count all the keys in order either.
So I do some work to figure out the keys

Actual Key Button #
`[tilde] 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
0 11
- 12
= 13
[backspace] 14
[tab] 15
q 16
w 17
e 18
r 19
t 20
y 21
u 22
i 23
o 24
p 25
[ 26
] 27
[enter] 28
[left control] 29
a 30
s 31
d 32
f 33
g 34
h 35
j 36
k 37
l 38
; 39
[left Shift] 42
\ 43
z 44
x 45
c 46
v 47
b 48
n 49
m 50
, 51
. 52
/ 53
[right shift] 54
NUM* 55
[left alt] 56
[space] 57
[caps lock] 58
F1 59
F2 60
F3 61
F4 62
F5 63
F6 64
F7 65
F8 66
F9 67
F10 68
NULOCK 69
NUM7 71
NUM8 72
NUM9 73
NUM- 74
NUM4 75
NUM5 76
NUM6 77
NUM+ 78
NUM1 79
NUM2 80
NUM3 81
NUM0 82
NUMDEL 83
F11 87
F12 88
NUMENTER 156
[right control] 157
NUM/ 181
[right alt] 184
HOME 199
[up arrow] 200
PAGEUP 201
[left arrow] 203
[right arrow] 205
END 207
[down arrow] 208
PAGEDOWN 209
INS 210
DEL 211
[left windows] 219
[right windows] 220
[application key] 221
[unbound] 255