Matrixtastatur wäre auch mein Vorschlag gewesen. Bei einer Tastatur mit 12 Tasten braucht man aber immer noch 7 Anschlüsse.

Ich hab mal sowas mit einer 16er Tastatur gemacht.
Die 4 Spalten wurden mit Pull Up Widerständen auf high gelegt und die Zeilen per Controller nacheinander auf low.
Dabei wurde nach jeder Zeilenumschaltung der Zustand der Spalteneingänge abgefragt.
War eine Taste gedrückt geht dieser Eingang auf low und das konnte man auswerten.
Diese Prozedur hab ich dann 2 mal widerholt mit einer kurzen Pause dazwischen. War beide male die gleiche Taste aktiv wurde der Wert übernommen. Das mit dem 2mal Auswerten ist für die Entprellung der Tasten gedacht.