Hey re ur question. i would advise a relatively small PIC with internal EEPROM where u could store ur code, if its a dedicated PIC on a small one off jobbie (ie, ur home) then i would recomend getting a numeric keypad that is a 1*12 latice on maby a 16F870
KISS phylisophy at play, its much simpler to code that, as on a standard numeric keypad! using portB and Cs interupt feature enabled on all pins, would make detecting a keypress simple the large 12bit counter with overflow to do that "no one has pressed a key, start looking for a code from the begging again" using the EEPROM as a simple lookup on each key press, using the EEPROM managements own indirection, ie. key press 0 would simple have to equal the byte stored at memory addres 0 for port B and memory address 1 for port C, a bit wastefull but when u have 128 bytes off it, a 64 key code would be long enough for anyone!