Yeah, it's pretty easy. It can even be done with events. Something like this:
@>Conditional Branch: The X Button Is Being Pressed
@>Set Move Route: Player
: : Move Left
@>Wait: 3 Frames
@>Else
@>Conditional Branch: The Y Button is Being Pressed
@>Set Move Route: Player
: : Move Down
@>Wait: 3 Frames
@>Else
@>Conditional Branch: The Z Button is Being Pressed
@>Set Move Route: Player
: : Move Right
@>Wait: 3 Frames
@>Else
@>Conditional Branch: The R Button is being pressed
@>Set Move Route: Player
: : Move Up
@>Wait: 3 Frames
@>Branch End
@>Branch End
@>Branch End
@>Branch End
@>Wait: 1 Frame
At least, that will work if you have default buttons. Otherwise you might have to edit the buttons in the menu that pops up when you press F1 during Test Play.
The Scripting Solution would be similarly very easy. I will give you a hint. Movement is controlled in the update method of Game_Player and you will need to rewrite the case statement which currently controls it.