Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

174
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!