Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

299
Vistas
Cómo capturar pulsaciones de teclas de código hexadecimal de código de barras en una etiqueta de entrada

Tengo un escáner de código de barras Datalogic Memor10 que se parece mucho a un teléfono Android, excepto que además tiene un escáner de código de barras en la parte delantera. El escáner de código de barras se puede activar presionando una tecla en el costado del Memor10. También tiene una característica que llama Keyboard Wedge que afortunadamente está habilitada de forma predeterminada, ya que no pude averiguar cómo cambiar su complicada configuración. Aparentemente, Keyboard Wedge hace que cualquier código de barras escaneado también se escriba como pulsaciones de teclas; para que, por ejemplo, cuando tenga una etiqueta de input en una aplicación web, escriba el código de barras en esa entrada como pulsaciones de teclas.

Esto funciona muy bien para códigos de barras simples, sin embargo, el código de barras que me gustaría escanear es un código de barras de licencia de conducir de Sudáfrica que está encriptado con encriptación RSA y, por lo tanto, las pulsaciones de teclas devueltas podrían ser cualquier carácter de byte. Esto es un problema, ya que las pulsaciones de teclas como Tab e Enter dejarían el campo de entrada o enviarían de forma predeterminada.

La etiqueta de formulario incluida es solo para evitar el envío de formularios nativos de Oracle Apex.

Intenté sin éxito evitar esto y solo obtuve los códigos de bytes como caracteres hexadecimales con una pantalla de entrada simple en Oracle Apex. Mi código Javascript/jQuery/HTML es actualmente el siguiente:

Región de contenido estático:

 <form method="POST" action="javascript:void(0);"> <input type="text" id="barcode" name="barcode"> </form>

Al cargar la página:

 /* $("#barcode").on('keyup', function(e) { console.log(e.keyCode.toString(16)); e.preventDefault(); }); */ $("#barcode").keypress(function(event) { console.log(event.which.toString(16)); event.preventDefault(); });

Sin embargo, esto no funciona bien, ya que Tab aún deja el campo de entrada e Enter funciona la primera vez y luego deja de funcionar, solo para comenzar a funcionar nuevamente si presiona otra tecla en el medio. No estoy seguro de qué otros códigos de bytes podrían causar problemas. ¿Qué código puedo usar para capturar con éxito la cadena larga de códigos de bytes enviados como pulsaciones de teclas a la etiqueta de entrada por el escáner de código de barras Memor10? ¿O hay alguna otra forma de lograr esto? Me gustaría que esta fuera una aplicación web y no una aplicación nativa de Android.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El evento de keypress de tecla se activa cuando se presiona el valor de un carácter . Además, está en desuso. Debe usar el evento keydown , que se activa para todas las teclas.

 <form method="POST" action="javascript:void(0);"> <input type="text" id="barcode" name="barcode"> </form> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script> /*$("#barcode").on('keyup', function(e) { console.log(e.keyCode.toString(16)); e.preventDefault(); });*/ $("#barcode").on('keydown',function(event) { console.log(event.which.toString(16)); event.preventDefault(); }); </script>

Este primer fragmento te ayudará a evitar que el tabulador cause daños.

Luego, para ver si hay problemas con otros códigos clave, escribí un script que activará un evento para todos los códigos clave del 0 al 256.

 $("#barcode").on('keydown',function(event) { console.log(event.keyCode.toString(16)); event.preventDefault(); }); const el = document.getElementById('barcode') for (let i = 0; i < 256; ++i) { el.dispatchEvent(new KeyboardEvent('keydown',{'keyCode':i})); }
 <form method="POST" action="javascript:void(0);"> <input type="text" id="barcode" name="barcode"> </form> <script src="https://code.jquery.com/jquery-3.6.0.slim.min.js" integrity="sha256-u7e5khyithlIdTpu22PHhENmPcRdFiHRjhAuHcs05RI=" crossorigin="anonymous"></script>

Parece funcionar. Ahora puede reunir todas las pulsaciones de teclas en una matriz para recomponer su código de barras.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda