Wie wärs damit:

Du nimmst einen 1 aus 20 Encoder ( kann man auch aus 3 Stück 1 aus 8 Encodern machen ).
Dieser Encoder braucht 5 Adressleitungen.
Die Taster werden an den Ausgängen dieser Encoder angeschlossen und ein Eingang des Controllers über Pullup Widerstand mit den anderen Anschlüssen aller Taster verbunden.
Ist ein Taster gedrückt, wird bei entsprechenden Adresse des Encoders der Eingang auf LOW gezogen.

Man braucht bei dieser Methode also 6 Portpins.
Das System ist natürlich wieder ein Polling.

Alternativ könnte man die Adressierung der Matrix über einen Binärzähler realisieren.
Dann könnte man wieder die Methode mit den 2 Interrupts am Controller verwenden.
Allerdings muß man dann dafür sorgen, das zumindest einmal pro Durchlauf ein Interrupt stattfindet - Zum Beispiel wenn kein Taster gedrückt ist, oder alle gedrückt sind.
Die Adressleitungen dieses Zählers müssten aber trotzdem mit dem 1284 verbunden werden, damit man weiß, welche Taste gerade addressiert wurde.

Ein externer Controller, der über eine Matrix die Tasten überwacht und bei einer Änderung die Daten per SPI an den Steuercontroller übergibt dürfte aber vom Hardwareaufwand und der Portpin Anzahl die günstigere Methode sein.
Der Tastaturcontroller wäre dann der SPI Master, weil dann die Tastenübergaberoutine am 1284 wieder im Interrupt laufen kann.