Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


KeyCode en android es siempre 229

En mi pestaña 4 de Samsung Galaxy (Android 4.4.2, Chrome: 49.0.2623.105) me encontré con una situación donde el keyCode siempre es 229.

He configurado una prueba simple para dos situaciones

<div contenteditable="true"></div> <input> <span id="keycode"></span> 

guión:

 $('div, input').on('keydown', function (e) { $('#keycode').html(e.keyCode); }); 

MANIFESTACIÓN

Afortunadamente puedo encontrar posts sobre esto, pero no pude encontrar uno con una solución de trabajo. Alguien sugirió utilizar keyup en keyup lugar o utilizar el evento textInput , pero que sólo se dispara en blur .

Ahora, para colmo, esto no sucede con el navegador de valores predeterminado 🙁

¡Cualquier ayuda sería apreciada!

ACTUALIZACIÓN: Si resulta que esto no es posible todavía puedo agarrar el char antes del caret: post

  • Leer eventos de teclado en Android WebView
  • ¿Es posible crear un servicio Android que escuche las pulsaciones de teclas de hardware?
  • ¿Qué desencadena (o genera) KeyEvent.ACTION_MULTIPLE?
  • Iniciar chat de vídeo sin interacción del usuario - Android
  • No se puede capturar el evento del botón Volver de Android
  • Permiso: INJECT_EVENTS para Instrumenation a otras aplicaciones
  • EditText no recibe eventos clave TAB - stock soft vk
  • Fake KeyEvent no funciona * exactamente * como el botón "real". ¿Por qué?
  • 4 Solutions collect form web for “KeyCode en android es siempre 229”

    Normal keypress evento no da keyCode en el dispositivo android. Ya ha habido una gran discusión sobre esto.

    Si desea capturar la presión de space bar o special chars , puede utilizar el evento textInput .

     $('input').on('textInput', e => { var keyCode = e.originalEvent.data.charCodeAt(0); // keyCode is ASCII of character entered. }) 

    Nota: textInput no se activa en alfabetos, números, retroceso, entrada y otras pocas teclas.

    Correr en el mismo problema, sólo ocurre con el teclado de Samsung stock en Android. Un trabajo alrededor era apagar las predicciones del teclado, que fijaron la entrada. Todavía analizando más lejos para ver si un trabajo alrededor se puede encontrar en tierra de JS.

    Edit: He conseguido encontrar una solución para nuestro caso. Lo que estaba sucediendo, es que teníamos una lista blanca de caracteres permitidos que un usuario podía ingresar en nuestro cuadro de entrada. Estos eran caracteres alfanuméricos más algunos caracteres de control en la lista blanca (por ejemplo, entrar, esc, arriba / abajo). Cualquier otra entrada de caracteres tendría impedido el evento predeterminado.

    Lo que sucedió es que se evitaban todos los eventos con el código de clave 229, y como resultado no se ingresó ningún texto. Una vez que agregamos el código clave 229 a la lista blanca, todo volvió a funcionar bien.

    Por lo tanto, si está utilizando algún tipo de componente de control de entrada de formulario personalizado o de terceros, asegúrese de comprobar que el código de clave 229 está en la lista blanca / permitido y no se impide por defecto.

    Espero que esto ayude a alguien.

    Yo estaba teniendo el mismo problema en los teléfonos Samsung S7. Resuelto reemplazando el evento de keydown a keypress .

     $("div, input").keypress(function (e) { $("#keycode").html(e.which); }); 

    JQuery normaliza estas cosas, por lo que no hay necesidad de utilizar otra cosa que e.which https://stackoverflow.com/a/302161/259881

    Prueba e.which lugar de e.keyCode

    Para obtener más información sobre esta propiedad, consulte https://api.jquery.com/event.which/

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.