You will need to check your output files, but I suppose it's possible that interrupts are being disabled during some critical code section in your keypad routines. I can't think of any reason why they would do it that way though.
It is much more likely you are missing something else, like incorrect banking, stack overflowing, or incorrect paging etc, maybe even accidentally disabling the interrupt by some other method, like forgetting to put a return at the end of your code section etc. Run the code on a simulator, watch where it goes wrong, then work from there...I'm sure it will become blindingly obvious to you where the problem lies, as soon as you see your code execute.