Cómo cambiar la entrada a mayúsculas a medida que se escribe

estoy usandoonkeyup="this.value=this.value.toUpperCase();"para cambiar el valor del texto de entrada en mayúsculas. Esto funciona, pero mi necesidad es cambiar una sola letra en el cuadro de entrada sin usar el evento del mouse. Si uso la tecla de flecha izquierda para mover el cursor hacia atrás, el evento de activación se activa y el cursor se mueve hasta el final. ¿Cómo modifico este script para poder navegar hacia atrás con las teclas de flecha y modificar un texto en algún punto intermedio?

El código actual se ve así ...

<h:inputText value="#{_input.response}" autocomplete="off" onmouseover="this.focus();" onkeyup="this.value=this.value.toUpperCase();"/>