Make an event with Auto-Start, set any other conditions you want and put it somewhere on the map. Then, do something like this:
<>Label: 1 (We want this to go on a loop, so let's set a label here)
<>KeyInputProc: [GetKeyPress] (Set some variable to get only the arrow keys, also set to Wait Until Key Pressed)
<>Branch if Var [GetKeyPress] is 1 (Meaning down key pressed)
<>Move Event: Hero, Move Down
<>Variable Oper: [GetKeyPress] Set, 0 (This way the game thinks the key isn't pressed anymore and you have to press it again)
<>
: End
<>Branch if Var [GetKeyPress] is 2 (Meaning left key pressed)
<>Move Event: Hero, Move Left
<>Variable Oper: [GetKeyPress] Set, 0
<>
: End
<>Branch if Var [GetKeyPress] is 3 (Meaning right key pressed)
<>Move Event: Hero, Move Right
<>Variable Oper: [GetKeyPress] Set, 0
<>
: End
<>Branch if Var [GetKeyPress] is 4 (Meaning up key pressed)
<>Move Event: Hero, Move Up
<>Variable Oper: [GetKeyPress] Set, 0
<>
: End
<>Jump to Label: 1 (When we jump to the label, we go back to the beginning and button checking start again)
<>
And there you go!
Just remember that this pretty much fucks everything else up because you can't check other events with Enter/Spacebar/Z or use Esc/Backspace/X/C/V/B/N to go to the menu during this because it's an Auto-Start event. That is, unless you use Paraller Process events to check stuff.
I hope this helped!