Thanks for the suggestion! Since I posted that, I started using an Autohotkey script to make sprint into a toggle instead of having to hold it down, and also you can use the same idea to make an auto-run key. It's working well, although it would be nice if it was part of the base game.
Here's the script if anyone is interested:
z::
KeyDown := !KeyDown
If KeyDown
SendInput {v down}
Else
SendInput {v up}
Return
Substitute "z" and "v" for the relevant keys
taken from here: https://www.autohotkey.com/boards/viewtopic.php?t=11938