ajuda urgente, como deixar as teclas A e B com ação repetida

Boa noite a todos, eu fiz esse código para controlar um motor de passo, com o teclado matricial, aperto a tecla 'A" ele gira para esquerda, aperto a tecla ‘B’ ele gira para direita, porem, ta acontecendo o seguinte, quando aperto a tecla, ele dá apenas um pulso, mesmo que a tecla permaneça apertada, eu preciso que o motor permaneça girando até que a tecla seja liberada,
esse é o código.

#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
#include <Stepper.h>

const byte ROWS = 4; // Quatro linhas por…
const byte COLS = 4; // Quatro colunas.
char keys[ROWS][COLS] = {
{‘1’,‘2’,‘3’,‘A’},
{‘4’,‘5’,‘6’,‘B’},
{‘7’,‘8’,‘9’,’.’},
{’*’,‘0’,’#’,‘D’}
};
byte rowPins[ROWS] = { 2, 3, 4, 5 };
byte colPins[COLS] = { 6, 7, 8, 9 };
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
Stepper stepper(200, 12, 13);
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
char key = kpd.getKey();
int motor = 0;

void setup() {
stepper.setSpeed(200);
lcd.begin(20, 4);
}

void loop() {

if (motor == 0){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Tecla A Motor gira”);
lcd.setCursor(0, 1);
lcd.print(“para esquerda”);
lcd.setCursor(0, 2);
lcd.print(“Tecla B Motor gira”);
lcd.setCursor(0, 3);
lcd.print(“Para direita”);
lcd.setCursor(0, 2);
while (motor == 0) {
key=kpd.getKey();
switch (key)
{
case ‘A’: // Motor gira para esquerda
stepper.step(200);
break;
case ‘B’: // Motor gira para direita
stepper.step(-200);
break;
}
}
}
}