Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

168
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda