Arduino barcode scanner PS/2

i found the code that arduino uno barcode scanner with PS/2

but i don’t know why that code print only one word.

that’s why???

#define WAITLOW(pin) while (digitalRead(pin) != 0);
#define WAITHIGH(pin) while (digitalRead(pin) != 1);

int clockPin = 3;
int dataPin = 4;
static volatile uint8_t head;
#define BUFFER_SIZE 45
static volatile uint8_t buffer[BUFFER_SIZE];
unsigned long lastScan = 0;
boolean scanCorrect = true;
int scannedInt = 0;
byte keymap[] = {0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, '`', 0,
        0, 0 /*Lalt*/, 0 /*Lshift*/, 0, 0 /*Lctrl*/, 'q', '1', 0,
        0, 0, 'z', 's', 'a', 'w', '2', 0,
        0, 'c', 'x', 'd', 'e', '4', '3', 0,
        0, ' ', 'v', 'f', 't', 'r', '5', 0,
        0, 'n', 'b', 'h', 'g', 'y', '6', 0,
        0, 0, 'm', 'j', 'u', '7', '8', 0,
        0, ',', 'k', 'i', 'o', '0', '9', 0,
        0, '.', '/', 'l', ';', 'p', '-', 0,
        0, 0, '\'', 0, '[', '=', 0, 0,
        0 /*CapsLock*/, 0 /*Rshift*/, 0 /*Enter*/, ']', 0, '\\', 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0,
        0, '1', 0, '4', '7', 0, 0, 0,
        '0', '.', '2', '5', '6', '8', 0, 0 /*NumLock*/,
        0, '+', '3', '-', '*', '9', 0, 0,
        0, 0, 0, 0 };

void setup() {
  pinMode(clockPin, INPUT_PULLUP);
  pinMode(dataPin, INPUT_PULLUP);
  
  Serial.begin(9600);
  Serial.println("smart kart");
  delay(2000);
}

void loop() {
  WAITLOW(clockPin);
  WAITHIGH(clockPin);
  unsigned char keycode = 0;
  for (uint8_t i = 0; i < 8; i++) {
    WAITLOW(clockPin);
    keycode >>= 1;
    if (digitalRead(dataPin)) {
      keycode |= 0x80;
    }
    WAITHIGH(clockPin);
  }
  buffer[head++] = keycode;
  WAITLOW(clockPin);
  WAITHIGH(clockPin);
  WAITLOW(clockPin);
  WAITHIGH(clockPin);
  unsigned long time = millis();
  scanCorrect = true;
  if (head == 5 && lastScan - time > 2000) {
    scannedInt = keymap[buffer[3]] - '0';
    if (scannedInt > 0) {
      Serial.println();
      Serial.println("***** Detected Scan *******");
      Serial.println(scannedInt);
      Serial.println("*******");
    } else {
      scanCorrect = false;
    }
    head = 0;
    lastScan = time;
    for (int i = 0; i < 5; i++) buffer[i] = 0;
  }
}