Hola, no se si te sirve esta idea, que aplique en una oportunidad con buen resultado..
emplear diodos en cada pulsador, creando un array en numeros binarios...
por ejemplo, con 4 lineas tienes 15 posibilidades
el pulsador 1 tiene solo un diodo a la linea a
el pulsador 2 tiene un diodo a la linea B
el 3 emplea dos diodos, linea A y B
y asi continuas como una cuenta en binario
a b c d
0 0 0 0
0 0 0 1 ----> pulsador 1
0 0 1 0 p 2
0 0 1 1 p3
0 1 0 0 ---> pulsador 4
0 1 0 1 p5
0 1 1 0
0 1 1 1
1 0 0 0 p 8
etc etc
espero se entienda...
Suerte
Norberto