AutoHotkey might not be necessary at all:
https://www.gog.com/forum/cyberpunk_2077/cannot_rebind_move_forward/post30 "You need to edit both config files. That is if you also want to change all the prompts, like interacting with things, to a different button than F.
These are the files:
UserSettings.json in the folder C:/Users/%USERNAME%/AppData/Local/CD Projekt RED/Cyberpunk 2077 (replace %USERNAME% with your Windows username)
inputUserMappings.xml in the folder C:/Games/Cyberpunk 2077/r6/config (or wherever you installed the game)
The UserSettings.json file is for all in-game bindable keys. Here you can make sure your ESDF keys are bound properly, including F which refuses to bind in-game. Same deal if you want arrow keys, or something else that refuses to bind in-game.
The InputUserMappings.xml file hosts all keybinds. That includes functions that can't be bound in-game at all, like interact prompts.
Open in Notepad. Use Ctrl+F to search for the key you want to replace "F" interact prompts with. In my case I want Q to be interact, so I search for "IK_Q". Replace all instances with different buttons, in my case IK_W (W), as it should be free.
Then look for all instances of "IK_F". There are dozens of these. Replace them with your interact key of choice, in this case "IK_Q" for Q.
Note that you don't have to do any functions that already have a "overridableUI" value. These are all bindable in-game and controlled from the UserSettings.json file. So might as well ignore them here.
The game now properly has ESDF movement while responding to Q for interact and other prompts. Interesting to note: now Q does not rebind in-game, but it's fine as the binds are good now. Obviously you can also do the same for arrow keys and a different interact button.
Note that the inputUserMappings.XML file in the game folder may be quite likely to be replaced on updates. And there's hundreds of hardcoded binds with no bind options in-game.
This may take a while for them to fix."