// https://forum.arduino.cc/t/wiring-buttons-to-arduino/1000048


uint8_t const outPins[] {5, 4, 3, 2};
uint8_t const inPins[] {9, 8, 7, 6};
bool state[sizeof(outPins)][sizeof(inPins)] {};


void setup() {
  Serial.begin(9600);

  for (uint8_t const& pin: outPins) {
    pinMode(pin, INPUT);
    digitalWrite(pin, LOW);
  }
  for (uint8_t const& pin: inPins) {
    pinMode(pin, INPUT_PULLUP);
  }
}

void loop() {
  for (size_t i {0}; i < sizeof(outPins); i++) {
    pinMode(outPins[i], OUTPUT);

    for (size_t j {0}; j < sizeof(inPins); j++) {
      bool s {digitalRead(inPins[j])};
      if (s == state[i][j]) {
        Serial.print("Button ");
        Serial.print(j);
        Serial.print(i);
        if (s) {
          Serial.println(" released.");
        }
        else {
          Serial.println(" pressed.");
        }
        state[i][j] = not s;
      }
    }

    pinMode(outPins[i], INPUT);
  }
}