one way to do it:
make a que data structure
every input event, if the player presses a movement key, it gets added to the end of the data structure
every "turn", if the data structure has any keys in it, it pops off the first one, and does that turn
so if i rapidly press 81616416494816 in less than a second, I can sit back and watch as the player character slowly does all those moves.
you can add limits do this, like only allowing the que to have a max of like 3.