Como alterar a entrada para maiúscula à medida que está sendo digitada

estou usandoonkeyup="this.value=this.value.toUpperCase();"para alterar o valor do texto de entrada em maiúsculas. Isso está funcionando, mas minha necessidade é alterar uma única letra na caixa de entrada sem usar o evento do mouse. Se eu usar a tecla de seta esquerda para mover o cursor para trás, o evento onkeyup será acionado e o cursor se moverá para o final. Como modifico esse script, para que eu possa navegar para trás usando as teclas de seta e modificar um texto em algum lugar no meio

O código atual se parece com isso ...

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

questionAnswers(5)

yourAnswerToTheQuestion