I'll throw in my 2 cents...
I have a similar shield (NuElectronics LCD+Keypad shield). The 5 buttons are connected together, and produce different readings on analog channel 0 when pressed. If no key is pressed, AD0 will read 1023.
The sketch has two sections: keyboard scanning and debouncing, and motor control.
First you analogRead(0) and map that value to a key symbol.
Then you process that pressed key information through an antidebounce mechanism.
Finally, you decide to how to change motor status (i.e. start/stop it or change its direction) based on the debouced-key information.
The stepper method to move the motor is repeatedly called at appropriate intervals (or not called if the motor is stopped) based on what the two status variables say: start/stop and direction.
I suggest you take a look at the "timing" section in the Playground. There you'll find libraries that simplify calling functions at defined time intervals.