Set PORTB to input, place all 8 wires of the PORTB in parrallel with the actual design, and read all 16 keys results to PORTB, write your results to internal EEPROM, LCD or else. That's the only thing i can see. BUT i'm really not 100% sure that the reading of the keys will always be the same... worth to try.

Something like
Code:
TRISB=255
a var byte

start:
     a=PORTB
     LCDOUT $FE,1,"PORTB= ",HEX2 a
     pause 200
     goto start