He estado navegando a través de muchas preguntas antiguas de P5.js y me encontré con esta pregunta: el código p5.js no se ejecuta cuando se presiona la barra espaciadora en combinación con arriba y a la izquierda . Probé algunas de mis ideas en el editor (que no no funciona), luego hice este pequeño programa de prueba:
function setup(){ createCanvas(200, 200); } function draw() { background(220); textAlign(CENTER, CENTER); text( keyCode, width/2, height/2 ); let lettersPressed = ""; let toKeyCode = k => { return 65 + "abcdefghijklmnopqrstuvwxyz".split("").indexOf(k); } "abcdefghijklmnopqrstuvwxyz".split("").forEach(l => { lettersPressed += keyIsDown(toKeyCode(l)) ? l : "-"; }); text(lettersPressed, width/2, height/1.7); } <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.1.9/p5.min.js"></script>El primer número es el código clave de la pulsación de tecla más reciente. Las letras/guiones después de eso son todas las letras del alfabeto que se están presionando.
LA PREGUNTA
Cuando presiono las teclas a, b y c, aparecen todas. Pero cuando presiono la tecla d encima de eso, la tecla d no aparece. Este es un problema muy similar al SO que vinculé. La parte extraña es que puedes presionar la tecla e y funciona. Este es un patrón en otras combinaciones de teclas también. ¿Es su razón para esto?
Esto no tiene nada que ver con p5.js, tiene todo que ver con el teclado físico que está usando y su computadora/sistema operativo/controladores.
Los teclados solo pueden transferir una cantidad limitada de datos, por lo que limitan la cantidad de teclas que informan que se presionaron en un momento dado. A veces hacen esto con X número de llaves por área.
Mira el video de Ben Eater ¿Cómo funciona un teclado USB? para obtener más detalles, así como ¿Cómo funciona el rollover de n-key? .
La forma en que los teclados están cableados evita que detecten varias teclas en ciertas combinaciones, por lo que ignorará las teclas adicionales en lo que se conoce como transferencia de teclas N. No es p5.js en absoluto.
Puedes mirar este enlace: