It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
Before any of you go any further and start modifying files, do note that a tool called autohotkey will probably provide an easier and safer solution for modifying the controls. [url=]http://www.gog.com/forum/tex_murphy_series/tex_murphy_tesla_effect_change_controls_mod/post11[/url] describes a setup that worked for that person and hopefully should work for you too. I'll keep the below instructions for anyone out there who would rather not use 3rd party applications.

When playing Tesla Effect I noticed that there were no options for changing the controls scheme of the game. Since I use dvorak as my default control scheme I figured I'd go and try and see if I could fix this nagging issue. Thankfully, since the game is built upon Unity, the process wasn't all too hard . If the control scheme bothers you as much as it did me and you don't mind using a hex editor, here are the locations and values you need to modify to change the control scheme.

(NOTE: MAKE SURE YOU MAKE A BACKUP OF THESE FILES!!!)

(Additional note: as the game gets patched the locations may change. I'll update this list as I have time. If the hex strings don't match what I posted here it's probably best to back away slowly. For the time being the hex strings appear only once in the file so a find and replace may work but do at your own peril)

(I included the dvorak control scheme since that what I used)

(UPDATED: May 16, 2014)

Tesla Effect\TeslaEffect_Data\Managed\Assembly-CSharp.dll:

w - 119(0x77): , - 44 (0x2c) @ 0x369C8 = 1F 77 80 D1 07 00 04
s - 115(0x73): o - 111(0x6f) @ 0x369CF = 1F 73 80 D2 07 00 04
d - 100(0x64): e - 101(0x65) @ 0x369D6 = 1F 64 80 D3 07 00 04
a - 97 (0x61): a - 97 (0x61) @ 0x369DD = 1F 61 80 D4 07 00 04
f - 102(0x66): u - 117(0x75) @ 0x369E4 = 1F 66 80 D5 07 00 04
e - 113(0x65): . - 46 (0x2E) @ 0x369EB = 1F 65 80 D6 07 00 04

The second value in these strings of hex characters is the keycode so in my case the values are changes as below:
@ 0x369C8 = 1F 2C 80 D1 07 00 04
@ 0x369CF = 1F 6F 80 D2 07 00 04
@ 0x369D6 = 1F 65 80 D3 07 00 04
@ 0x369DD = 1F 61 80 D4 07 00 04
@ 0x369E4 = 1F 75 80 D5 07 00 04
@ 0x369EB = 1F 2E 80 D6 07 00 04

And just to bring up a key binding from a lower post:
Esc - 27 (0x1B) @ 0x3698B = 1F 1B 80 CA 07 00 04

As jcasetnl pointed out the original keys are still mapped in addition to the ones we just remapped. This is due to the wasd keys being mapped to directions twice in the game so we need to change both occurrences. There is another file that needs to be modified in order to properly remap the keys.

Tesla Effect\TeslaEffect_Data\mainData

Search in the file for the string "Joystick Left Horizontal" and a bit further down will be the letters 'a' and 'd'. Change these to whatever key bindings you have setup in the Assembly-CSharp.dll

The next part should be pretty obvious at this point. Search for "Joystick Left Vertical" and behold there is our w and s. Match these to what you have set in the dll file and you should have no more overlapping key mappings.

Happy Gaming!

PS. if you want a different control scheme just replace the characters with the lower case ascii equivalent. Windows Character map or google can help you look up these values.

P.S. Here is a list of all the potential keycodes usable by this remapping method

None = 0x00
Backspace = 0x08
Tab = 0x09
Clear = 0x0C
Return = 0x0D
Pause = 0x13
Escape = 0x1B
Space = 0x20
Exclaim = 0x21
DoubleQuote = 0x22
Hash = 0x23
Dollar = 0x24
Ampersand = 0x26
Quote = 0x27
LeftParen = 0x28
RightParen = 0x29
Asterisk = 0x2A
Plus = 0x2B
Comma = 0x2C
Minus = 0x2D
Period = 0x2E
Slash = 0x2F
Alpha0 = 0x30
Alpha1 = 0x31
Alpha2 = 0x32
Alpha3 = 0x33
Alpha4 = 0x34
Alpha5 = 0x35
Alpha6 = 0x36
Alpha7 = 0x37
Alpha8 = 0x38
Alpha9 = 0x39
Colon = 0x3A
Semicolon = 0x3B
Less = 0x3C
Equals = 0x3D
Greater = 0x3E
Question = 0x3F
At = 0x40
LeftBracket = 0x5B
Backslash = 0x5C
RightBracket = 0x5D
Caret = 0x5E
Underscore = 0x5F
BackQuote = 0x60
A = 0x61
B = 0x62
C = 0x63
D = 0x64
E = 0x65
F = 0x66
G = 0x67
H = 0x68
I = 0x69
J = 0x6A
K = 0x6B
L = 0x6C
M = 0x6D
N = 0x6E
O = 0x6F
P = 0x70
Q = 0x71
R = 0x72
S = 0x73
T = 0x74
U = 0x75
V = 0x76
W = 0x77
X = 0x78
Y = 0x79
Z = 0x7A
Delete = 0x7F
Post edited May 16, 2014 by pb1866
Hey, thanks! This was something the backers really pushed for, but it was not a fight we won.
Thanks for the info! I will try this.

What code should I use for the rest of the keys? I would like to make my middle mouse button do something in the game, such as open the Esc menu.
Changing a keyboard binding to a mouse binding is a bit trickier from the way I changed the settings. The process for setting up a keyboard key uses a single byte to store the keycode value in. Bytes go from values 0-255. Now for changing between keys this isn't an issue since most Unity keycodes are less than 255. However, Mouse bindings are in the 300's which is well beyond the limit of a byte. This you can't just replace the value in there. You would have to change several lines of code which will cause all sorts of problems and is way more trouble than it's worth imo.
We did hear everybody's requests for Key-binding, but other more important issues took priority before release. We have not ruled out key binding in a future update, so please don't think we have ignored the issue. It will likely come later on in a patch. But we wanted to ensure that we delivered a stellar gaming experience first and foremost, and then these wish-list items can certainly come soon!

...Including a few other nice surprises too! ;)
If the key-binding does indeed get added to the game I'm certainly looking forward to it. I realize things can get rather hectic before the release of a title so I'm sorry for my overly harsh tone in my original post. I do appreciate that you guys are listening to our comments and taking them into consideration. Hopefully it won't be too long before this stopgap method isn't needed anymore.
avatar
pb1866: When playing Tesla Effect I noticed that there were no options for changing the controls scheme of the game. Since I use dvorak as my default control scheme I figured I'd go and try and see if I could fix this nagging issue. Thankfully, since the game is built upon Unity, the process wasn't all too hard . If the control scheme bothers you as much as it did me and you don't mind using a hex editor, here are the locations and values you need to modify to change the control scheme.

(NOTE: MAKE SURE YOU MAKE A BACKUP OF THE FILE!!!)

(Additional note: as the game gets patched the locations may change so if the hex strings don't match what I posted here it's probably best to back away slowly)

(I included the dvorak control scheme since that what I used)

Tesla Effect\TeslaEffect_Data\Managed\Assembly-CSharp.dll:

w - 119(0x77): , - 44 (0x2c) @ 0x3696C = 1F 77 80 D1 07 00 04
s - 115(0x73): o - 111(0x6f) @ 0x36973 = 1F 73 80 D2 07 00 04
d - 100(0x64): e - 101(0x65) @ 0x3697A = 1F 64 80 D3 07 00 04
a - 97 (0x61): a - 97 (0x61) @ 0x36981 = 1F 61 80 D4 07 00 04
f - 102(0x66): u - 117(0x75) @ 0x36988 = 1F 66 80 D5 07 00 04
e - 113(0x65): . - 46 (0x2E) @ 0x3698F = 1F 65 80 D6 07 00 04

The second value in these strings of hex characters is the keycode so in my case the values are changes as below:
@ 0x3696C = 1F 2C 80 D1 07 00 04
@ 0x36973 = 1F 6F 80 D2 07 00 04
@ 0x3697A = 1F 65 80 D3 07 00 04
@ 0x36981 = 1F 61 80 D4 07 00 04
@ 0x36988 = 1F 75 80 D5 07 00 04
@ 0x3698F = 1F 2E 80 D6 07 00 04

Happy Gaming!

[snip]
Hmm... when I tried this I got strange results. I prefer a RSDF layout since it's a bit more ergonomic.

Using HxD I searched for the offsets. Next I copied the entire string into Find/Replace, changed the second value to the one I wanted and then did a replace.

The results were that Left became Left-Back. Down because Down-Right. Right, worked fine. And forward worked Fine.

Since I was re-using two keys from the original WASD scheme (S and D), I think these keys must have references elsewhere in the file or maybe in another file.

EDIT:

Played around with it a bit more. No matter how I remap WASD, those keys still work for directions, in addition to whatever other keys I map. So if I change the value for W to say, K, both W and K will work for Forward. I don't know how to unbind W, in other words.

The problem is if I reuse any of the WASD keys. Like in my scheme, I prefer S to be Left (not Back) and D to be Down (not right), but if I try to re-map those keys, I get the combination of the original WASD scheme and my scheme, so Down-Left and Down-Right (i.e. diagonal backwards).

E and F (Use and Flashlight) appear to remap with no problems/conflicts.

I ended up just remapping W to E. Slightly more ergonomic and doesn't break other things. (technically, both W and E now work to move forward).

I think the originator of this thread didn't have these kinds of issues because in switching to the Dvorak layout, there don't appear to be any conflict keys. He kept A on A, and E is safe to re-map. (Not criticizing, his info was very helpful, just explaining).

Of course, I'm one of like 5 people on the planet that doesn't like WASD on regular keyboards so...
Post edited May 11, 2014 by jcasetnl
what about gamepad support ? Can we expect this in a patch ?
Ah... this is indeed a problem. since none of the keys overlapped I had no problems so I assumed the job was done. I'll take another look at it to see if there are any straggler key bindings.
So apparently the controls are binded twice in the game itself... once in "Assembly-CSharp.dll" as well as the file "mainData" one directory up from there. The first one is setting up the keymapping itself while the second is setting up some sort of joystick emulation mapped to keys. If you change one or the other then both keys will register as movement.

thankfully fixing the second file is much easier:

Open the following file in a hex editor
Tesla Effect\TeslaEffect_Data\mainData

Search in the file for the string "Joystick Left Horizontal" and a bit further down will be the letters 'a' and 'd'. Change these to whatever key bindings you have setup in the Assembly-CSharp.dll

The next part should be pretty obvious at this point. Search for "Joystick Left Vertical" and behold there is our w and s. Match these to what you have set in the dll file and you should have no more overlapping key mappings.

Since it's just the directions that are getting mapped twice there shouldn't be any issues with any other keys. Hope this helps!
OR you could just download Autohotkey and create an autohotkey profile to bind the keys for you, then just run that profile prior to running the game.

It's a lot easier (and safer!) than messing around with hex editors and DLL files. You can use Autohotkey to bind directly to mouse buttons, joysticks and gamepads as well.

This little program has helped me out with key bindings on numerous games over the years.

The example snippet below binds movement in this game to arrow keys, Flashlight to Numpad3 and Look/examine to Numpad2 (since those two keys are configured as extra buttons on my mouse - saves me having to reconfigure my mouse for every game).

; TESLA Effect - movement and stuff

;movement
Left::a
Right::d
Up::w
Down::s

;Run
RShift::LShift

; Flashlight (Ultra-Left Mouse Button)
Numpad3::F

; Look/Examine item in game world
Numpad2::Space

; LClick - interact/select
; RClick - smart Alex
Post edited May 12, 2014 by squid830
This is going to be a strange sounding request, but I'm looking to change the esc key to a key on the right of the keyboard like ' / ; or . (I prefer using arrows vs wasd). Would it be easier to use Autohotkey or the hex editor? I have done some hex editing before but that always makes me nervous...
I have no experience with autohotkey but if it does as squid830 says it would probably be the ideal solution. That being said I looked up the esc key anyway:


@ 0x3692F = 1F 1B 80 CA 07 00 04 <-- this is the location and hex string for the escape button

just like before if you replace the second character (1B) with whatever key you want it will remap it to that key. for example if you wanted to change it to backspace you would change it to this:

@ 0x3692F = 1F 08 80 CA 07 00 04

if the locations don't match up it, it should be in the same general area. At least in my file there is only one occurrence of this hex string so you should be able to find and replace.
avatar
pb1866: I have no experience with autohotkey but if it does as squid830 says it would probably be the ideal solution. That being said I looked up the esc key anyway:

@ 0x3692F = 1F 1B 80 CA 07 00 04 <-- this is the location and hex string for the escape button

just like before if you replace the second character (1B) with whatever key you want it will remap it to that key. for example if you wanted to change it to backspace you would change it to this:

@ 0x3692F = 1F 08 80 CA 07 00 04

if the locations don't match up it, it should be in the same general area. At least in my file there is only one occurrence of this hex string so you should be able to find and replace.
Thanks! I might try this, not having luck with autohotkey. Would I have to change this in 2 files like you mentioned above for the other keys?
avatar
pb1866: I have no experience with autohotkey but if it does as squid830 says it would probably be the ideal solution. That being said I looked up the esc key anyway:

@ 0x3692F = 1F 1B 80 CA 07 00 04 <-- this is the location and hex string for the escape button

just like before if you replace the second character (1B) with whatever key you want it will remap it to that key. for example if you wanted to change it to backspace you would change it to this:

@ 0x3692F = 1F 08 80 CA 07 00 04

if the locations don't match up it, it should be in the same general area. At least in my file there is only one occurrence of this hex string so you should be able to find and replace.
avatar
The_Tick: Thanks! I might try this, not having luck with autohotkey. Would I have to change this in 2 files like you mentioned above for the other keys?
I sent you a PM RE autohotkey, so hopefully it'll help you out. You'll hopefully realise how incredibly easy it is, once you know where the files are and how the Autohotkey syntax works.

Looked at the tutorial that comes with it again just now, and I can understand why you're confused. That tutorial goes into all this crap that you don't need for simple key-mapping, and I remember having to wade through a fair bit of the documentation to actually find the bit where it shows simple key mapping... ;)