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

×
As of now it is impossible to completely remap every key, so if you really struggle to adjust your playing style (or you are left handed), this might help you to enjoy the game until it gets fixed.

1. Download Autohotkey, a free scripting program
2. Install and run
3. Close the readme if you just want to get this sorted in two minutes
4. Right click on your desktop, New->AutoHotKey Script
5. Name it, right click, Edit
6. This is a very basic script, lets you use IJKL instead of WASD. Note that the keys are not swapped, so W will still be W unless you specify otherwise. To make it dead simple,

key you want to use instead::key you want to swap

So let's say you don't like E being hardwired. You simply use

f::e

now you can loot with the F key.

So the code is

#NoEnv

i::w
j::a
k::s
l::d

7. Save, run script
8. Play the game as you should have from the start

NB: I tried swapping the mouse buttons but it doesn't work as it should, I'll try to find some solution.
Post edited May 25, 2015 by mmarci
Any chance you know enough scripting on AutoHotKey to make a script for instant casting sign on keypress ?

Like, making it so when I press "1", it will switch to Aard, and then the script will press "Q" automatically ?
avatar
Maydawn: Any chance you know enough scripting on AutoHotKey to make a script for instant casting sign on keypress ?

Like, making it so when I press "1", it will switch to Aard, and then the script will press "Q" automatically ?
Sure.

*1::
send {1}
sleep 50
send {Q}
return

And that's it.
Thanks mmarci for this! A question, is it possible to make it smaller in code by writing some like "1,2,3,4,5" and then send {1,2,3,4,5} or do you have to copy the entire part and write it 5 times?
avatar
Nirth: Thanks mmarci for this! A question, is it possible to make it smaller in code by writing some like "1,2,3,4,5" and then send {1,2,3,4,5} or do you have to copy the entire part and write it 5 times?
You'd have to do it individually for each key (using my basic understanding of AHK):

*1::
send {1}
sleep 50
send {Q}
return

*2::
send {2}
sleep 50
send {Q}
return

And so on..

It doesn't take long to do and it doesn't make the script behave slower or anything..
Post edited May 21, 2015 by light487
Just out of curiosity, why does it need "sleep 50"? My assumption is that "send" just fires commands without awaiting for a response, so 50 milliseconds delay allows to make sure subsequent commands will be processed later. If that's so, why 50?
avatar
green.anger: Just out of curiosity, why does it need "sleep 50"? My assumption is that "send" just fires commands without awaiting for a response, so 50 milliseconds delay allows to make sure subsequent commands will be processed later. If that's so, why 50?
50ms delay.

This is to stop being so fast that the game can't process the second command. 50ms is a very short time for you and me.. unnoticeable.. but to a computer, 0ms is simply too fast :) hehe.. 50ms is plenty of time between command though :)

I've tried smaller values for when it actually matters, and it really depends on so many factors whether it will allow it.. so to play it safe I never go below 50ms and in many cases I'll eve increase it to 100 or 200 ms when it doesn't matter about the delay.
Post edited May 21, 2015 by light487
avatar
green.anger: Just out of curiosity, why does it need "sleep 50"? My assumption is that "send" just fires commands without awaiting for a response, so 50 milliseconds delay allows to make sure subsequent commands will be processed later. If that's so, why 50?
avatar
light487: 50ms delay.

This is to stop being so fast that the game can't process the second command. 50ms is a very short time for you and me.. unnoticeable.. but to a computer, 0ms is simply too fast :) hehe.. 50ms is plenty of time between command though :)

I've tried smaller values for when it actually matters, and it really depends on so many factors whether it will allow it.. so to play it safe I never go below 50ms and in many cases I'll eve increase it to 100 or 200 ms when it doesn't matter about the delay.
As I thought. Thank you! 200 just seems too much delay for Geralt, 50 is more reasonable.
avatar
Nirth: Thanks mmarci for this! A question, is it possible to make it smaller in code by writing some like "1,2,3,4,5" and then send {1,2,3,4,5} or do you have to copy the entire part and write it 5 times?
Probably, but I have no idea how to do it :)

Feel free to post if you guys have any more queries, also if someone found a solution for swapping the mouse buttons so they will actually work in-game, let me know please.
Could you do something like this:

f1::toggle := !toggle


#if !toggle
LButton::RButton
RButton::Lbutton
return
#if

Pick a different key to F1 of course if it causes trouble.. but no reason why that shouldn't work.. I haven't got time to test right now
avatar
light487: Could you do something like this:

f1::toggle := !toggle

#if !toggle
LButton::RButton
RButton::Lbutton
return
#if

Pick a different key to F1 of course if it causes trouble.. but no reason why that shouldn't work.. I haven't got time to test right now
Weird thing about this one (I tried something similar myself) is that it only works till the very first keystroke. As soon as you right-click once in the menu to select something, it reverts back to default. Once in game, RButton functionality is completely missing, both buttons act as LButton except in menus, where both buttons act RButton. I couldn't figure out why.
Can you change the mouse key assignments in the windows control panel?
avatar
light487: Can you change the mouse key assignments in the windows control panel?
That's completely disregarded in-game.
avatar
light487: Can you change the mouse key assignments in the windows control panel?
avatar
mmarci: That's completely disregarded in-game.
Few if any games ever use windows text mode for input. It's too slow and too difficult to cater for all the differences. Usually raw input events (or even the deprecated DirectInput) are used, pretty similar to the USB HID events.
So any effective key mapping needs to take place early in the input processing chain. Forget about the user panel.
Software for mapping (like the oft-mentioned AutoHotKey), mapping at driver level, and on the device itself will work.
avatar
foo_: Few if any games ever use windows text mode for input. It's too slow and too difficult to cater for all the differences. Usually raw input events (or even the deprecated DirectInput) are used, pretty similar to the USB HID events.
So any effective key mapping needs to take place early in the input processing chain. Forget about the user panel.
Software for mapping (like the oft-mentioned AutoHotKey), mapping at driver level, and on the device itself will work.
The problem here is that the game overrides these for an odd reason, in a very unusual way. Every key works except for the mouse buttons. What can be the explanation for it works on the main menu screen once you start the game, but as soon as you go to any of the sub-menus, it reverts back to default? Why would it assign LButton to both buttons in-game, and RButton to both buttons in the in-game menu?