Pues ya he resuelto el problema, era lo que decían, faltaban resistencias de pull-up en los pines del puerto del PCA, yo le había puestos resistencias de 10K pero se ve que no son suficientes y la verdad me fije en lo que ponía el fabricante pero como no tenía a mano las de 100K le pude de 10K creyendo que no tendría mucha importancia...ignorante de mi...
fue poner las resistencias de 100K y perfecto, lo que he tenido que ponerlas tanto en los pines de entrada como de salida si no no tiraba bien.
todas las explicaciones así como el driver como un proyecto de ejemplo lo he puesto en este
Blogespero no haber cometido algún error.
a cualquiera que le haga falta un teclado por I2C pues se puede aprovechar del que he subido, funciona realmente bien.
gracias a todos por la ayuda