Crear teclado personalizado en Android

Me gustaría escribir un teclado personalizado que debería funcionar en todos los dispositivos que ejecutan Android 4.0 y superiores. Así que primero busqué en la red pero no encontré nada sobre eso. Entonces, ¿cómo puedo crear una aplicación que reemplace el teclado estándar de Android?

Lo que me gustaría saber:

¿Hay un buen tutorial por ahí? ¿Ustedes tienen código de muestra?¿Necesito root para hacer esto?¿Cuál es la estructura detrás de ella? (¿Es solo una actividad regular con un servicio?)¿Es posible leer el Inputbox dentro del teclado?

Respuestas a la pregunta(3)

Su respuesta a la pregunta