hola, en realida a ese tipo de funcion no se le pasa el valor de la tecla presionada , sino un codigo numerico de tecla q en este caso conviene q sea de 0 a 15 o algo asi.
y lo q hace la rutina es asignar el verdadero valor de esa tecla, por ej # o * o una letra.
normalmente la tabla se construye solo con RETLW xx donde xx es el dato a retornar para ese valor de la matriz.
tienes q tener en cuenta en el addwf PCL para q micro lo haces, ya q saltara de a una word siempre y para la serie 18 esto son 2 bytes..
ademas los codigos de devolucion no pueden cruzar una pagina de memoria, sino tendras problemas y la rutina es bastante mas compleja.
espero te sirva y te diria q busques en microchip algun AN q maneje teclado y veras como se construye en forma completa
Suerte.