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

173
Vistas
Detección de teclas modificadoras en KeyDown y KeyUp con evento de desplazamiento

Similar a esta solución, ¿cómo puedo reutilizar el código para incluir eventos keyDown y keyUp? Agregué uno incluso para KeyUp y KeyDown pero hay problemas cuando el usuario mantiene presionada y suelta una tecla y los eventos del evento keyUp original ya no se activan continuamente.

Ejemplo:

  • El usuario presiona y mantiene presionadas las teclas Ctrl + Shift para que KeyDown se dispare continuamente y se imprima Ctrl + Shift.
  • El usuario suelta Shift mientras aún mantiene presionada la tecla Ctrl, por lo que KeyUp se activa una vez, pero KeyDown para Ctrl ya no continúa activando

¿Cómo puedo mejorar esto? El objetivo es emparejar esto con un evento de rueda de desplazamiento del ratón. Si ctrl + rueda del mouse, escala el gráfico a lo largo del eje x. Si Alt+moussewheel entonces se escala a lo largo del eje Y de la estrategia. Si ambos o ninguno, entonces escala X e Y. Por último, ¿cómo puedo emparejar este evento modificador de tecla con la rueda de desplazamiento del mouse que proporcioné para que responda? Me doy cuenta de que hay momentos en los que los eventos clave bloquearán el evento de desplazamiento.

 var scrollDelta = 0; $(document).on("keydown", reportKeyEvent("Pressed") ); $(document).on("keyup", reportKeyEvent("Released") ); $(document).bind("wheel", updateScroll); function reportKeyEvent (e, eventName) { var keyStr = ["Control", "Shift", "Alt"].includes(e.key) ? "" : e.key + " "; var out = eventName + " " + ( e.ctrlKey ? "Control " : "" ) + ( e.shiftKey ? "Shift " : "" ) + ( e.altKey ? "Alt " : "" ) + keyStr + "key(s)" ; console.log(out) ctrlKeyPressed = e.ctrlkey; shiftKeyPressed = e.shiftkey; altKeyPressed = e.altkey; // add shift+scroll? // add ctrl+scroll? e.stopPropagation (); e.preventDefault () }
 function updateScroll(e){ if(e.deltaY < 0){ scrollDelta +=50; }else if (e.delaY > 0){ scrollDelta -=50; }else{ scrollDelta = 0; } }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede mantener su función reportKeyEvent. Simplemente cambie para usar el intervalo en lugar del evento

 var keydownIntervalID; var keys = new Set(); $(document).keyDown(function(e) { keys.add(e.keyCode); if (!keydownIntervalID) { keydownIntervalID = setTimeout(reportKeyEvent, 50); } }); $(document).keyUp(function(e) { keys.delete(e.keyCode); if (keys.size === 0) { clearInterval(keydownIntervalID); keydownIntervalID = undefined; } });
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