#include <Joystick.h>

// constexpr auto HID_ID;

constexpr uint8_t N_BUTTON = 25;

Joystick_ joystick;


const static uint8_t PIN_MAP[N_BUTTON] = {
  D0,
  D1,
  D2,
  D3,
  D4,
  D5,
  D6,
  D7,
  D8,
  D9,
  D10,
  D11,
  D12,
  D13,
  D14,
  D15,
  D16,
  D17,
  D18,
  D19,
  D20,
  D21,
  D22,
  D26,
  D27,
};

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

  for (auto pin : PIN_MAP) pinMode(pin, INPUT_PULLUP);

  joystick.begin();
}

void loop() {
    for (auto i = 0; i < N_BUTTON; i++) {
        auto pin = PIN_MAP[i];
        auto state = !digitalRead(pin);

        joystick.setButton(i, state);
    }
}
