Problemas con Launchap 7x8

Hola gente! Soy nuevo acá.

-Proyecto-
La idea que yo tengo es crear unas Matriz de botones de 7x8 (7 Filas y 8 Columnas) esta hecho a base de una vieja botonera de radio que casualmente tenia switches mecánicos que reutilice.
El objetivo es poder utilizar cada botón con una macro, específicamente en OBS (trabajo con él y me facilitaría todo) lo primero que se me ocurrió es que cada botón sea una letra una letra de esas imposibles o innecesarias de formar (básicamente extendiendo el teclado) como ﷲﷴﷺﷻ﷼﷽ que se encuentran en el mapa de caracteres de windows, en mi poca experiencia pensé que esto seria lo mas simple tal vez no lo mejor pero para ser la versión 1 del proyecto estaba bueno.
Mi propuesta fue que las Filas fueran Outputs y las Columnas sean Inputs, siendo que cuando X Columna recibe Y Fila envié a la PC Z carácter y así poder mapearlos en todo OBS

-Problemas-
El primer problema fue que solo tengo un Arduino Nano y no tengo suficientes pines digitales, por lo que investigue y por lo que entendí puedo utilizar Pines Analógicos como Digitales, lo cual me brindaría los pines que me faltan, siendo el A0, A1 y A2, el código que utilice para asignar los pines fue el siguiente

//Digitales
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
//Analogicos
pinMode(14, OUTPUT);
pinMode(15, OUTPUT);
pinMode(16, OUTPUT);

Hasta donde tengo entendido esto esta bien. Lo aclaro para que me digan si estoy haciendo cualquier cosa

Segundo problema no se como enviar mediante USB los caracteres al PC

Este seria el problema que no puedo resolver y el que mas me freno, sobre todo porque cuando busco en internet algo sobre matriz de 8x8 o similar que obligue a usar pines analógicos todos los resultados son sobre la típica matriz led, ya se que puedo utilizar un 74hc595 pero no tendría que desoldar toda la matriz y por el momento no es la idea

Los pines analógicos tambien son digitales, o sea con digitalRead / digitalWrite los lees y escribes como cualquier otro pin.

Usa cualquiera menos A6 y A7 que no se puede cambiar porque solo son pines analógicos.
Otra cosa es que puedes usar Keypad Library y llevararla a tu matriz 7x8 definiendo los caracteres o el mapa de caracteres que desees.

surbyte:
Usa cualquiera menos A6 y A7 que no se puede cambiar porque solo son pines analógicos.
Otra cosa es que puedes usar Keypad Library y llevararla a tu matriz 7x8 definiendo los caracteres o el mapa de caracteres que desees.

Estuve leyendo sobre la librería y no encontré casi nada sobre usar pines analógicos por lo que estuve tocando el código base para el keypad 4x4
Me quedo algo así:

const unsigned long period = 50;
unsigned long prevMillis = 0;

byte iRow = 0, iCol = 0;
const byte countRows = 7;
const byte countColumns = 8;
 
const byte rowsPins[countRows] = { 10, 11, 12, 13, 14, 15, 16 };
const byte columnsPins[countColumns] = { 2, 3, 4, 5, 6, 7, 8, 9 };
 
char keys[countRows][countColumns] = {
  { '1', '2', '3', '4', '5', '6', '7', '8' },
  { '9', '0', 'a', 'b', 'c', 'd', 'e', 'f' },
  { 'h', 'i', 'j', 'k', 'l', 'm', 'n', '*' },
  { 'o', 'p', 'q', 'r', 's', 't', 'u', 'v' },
  { 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D' },
  { 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L' },
  { 'M', 'N', '/', 'O', 'P', 'Q', 'R', 'S' }
};

//Teclado estado
bool readKeypad()
{
  bool rst = false;
 
  // Barrido columnas
  for (byte c = 0; c < countColumns; c++)
  {
    //columnas a LOW
    pinMode(columnsPins[c],OUTPUT);
    digitalWrite(columnsPins[c], LOW);
    
    // Barrer filas
    for (byte r = 0; r < countRows; r++)
    {
      if (digitalRead(columnsPins[r]) == LOW)   
      {
        // Pulsacion detectada, guardar fila y columna
        iRow = r;
        iCol = c;
        rst = true; 
      }
    }
    // Devolver la columna a alta impedancia
    digitalWrite(columnsPins[c], HIGH);
    pinMode(columnsPins[c], INPUT);
  }
  return rst;
}
 
// Inicializacion
void setup()
{

  Serial.begin(9600);

  //Digitales
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(4, INPUT);
  pinMode(5, INPUT);
  pinMode(6, INPUT);
  pinMode(7, INPUT);
  pinMode(8, INPUT);
  pinMode(9, INPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
  //Analogicos
  pinMode(14, OUTPUT);//A0
  pinMode(15, OUTPUT);//A1
  pinMode(16, OUTPUT);//A2


  // Columnas en alta impedancia
  for (byte c = 0; c < countColumns; c++)
  {
    pinMode(columnsPins[c], INPUT);
    digitalWrite(columnsPins[c], HIGH);
  }
 
  // Filas en pullup
  for (byte r = 0; r < countRows; r++)
  {
    pinMode(rowsPins[r], INPUT_PULLUP);
  }

}
 
void loop()
{
  if (millis() - prevMillis > period)   // Espera no bloqueante
  {
    prevMillis = millis();
    if (readKeypad())   // Detección de tecla pulsada
    {
      Serial.println(keys[iRow][iCol]);   // Mostrar tecla
    }
  }
}

No se si están bien ubicados los pinMode, al compilar no me da error, pero me quiero asegurar antes de cargarlo al arduino.
Muchísimas gracias!!

Creo que no entendiste...
Los pines A0 a A5 pueden ser analógicos o digitales. En este caso tu estas usando los pines nombrados A0, A1 y A2 en modo digital. ¿Se entiende?
Entonces perfectamente puedes usar la librería Keypad.