No hay eventos de pulsación de tecla para ciertas teclas en el navegador de Android

l código de @Below funciona perfectamente en Chrome, Firefox, en iPhone e incluso en navegadores de terceros en Android. Sin embargo, cuando se ejecuta dentro del navegador nativo, los eventos clave para caracteres especiales como Å, Ä y Ö en mi teclado sueco simplemente no se activan.

El ejemplo solo debería permitir al usuario ingresar un solo carácter a la vez. Funciona de maravilla, a menos que en Android presione teclas como Å, Ä o Ö para las cuales puedo ingresar cualquier número de caracteres.

Aquí hay un jsFiddle para cualquiera que desee probarlo:http: //jsfiddle.net/x7H6f. Si no tiene teclas especiales como las suecas impresas en su teclado, caracteres como é (mantenga presionado E) deberían hacer el "truco".

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Key Event test</title>
    </head>
    <body>
        <input type="text" id="a" name="test" />
        <script>
            document.getElementById("a").onkeypress = function(e) {
                e = e || window.event;
                var k = e.keyCode || e.which;
                this.value = String.fromCharCode(k);
                return false;
        }
        </script>
    </body>
</html>

Y no, keydown y keyup tampoco funcionan. ¿Me perdí algo o es un error? ¡Es terriblemente molesto desarrollar aplicaciones suecas en PhoneGap!

¡Gracias

EDITAR Como Manor dice en su respuesta, elinpute puede usar @ event. Aquí hay un violín que demuestra las diferencias entre lakeypress, input ychange eventos:http: //jsfiddle.net/Qxd76 (utilizarhttp: //jsfiddle.net/Qxd76/sho para ver el resultado en un teléfono inteligente).

Respuestas a la pregunta(2)

Su respuesta a la pregunta