Eine Idee: Bei den Interrupt-Pins (Inputs) den Pullup einschalten.
Die anderen (Zeilen) als Ausgang und auf Low schalten.
Wird eine Taste gedrückt, reagiert der Interrupt.

Im Interrupt jetzt das ganze umdrehen: Zeilen als Eingang mit aktivem Pullup, den entsprechenden Interrupt als Ausgang und Low.
Und jetzt einfach die 4 Zeilen-Pins einlesen und schauen, welcher low ist => der gedrückte.