I have to hold right way too long to get him to move. I think you're falling victim to the repeat event on the button. What you should be doing is have a bool be set when the button is pressed, and have it unset when that button is released. That way you don't have to wait for the OS's repeated button press event, which will be different based on each user's settings.