P5.js 一些键码没有响应

P5.js SOME Keycodes not responding

我一直在浏览很多旧的 P5.js 问题,运行 进入这个问题:p5.js code isnt executing when spacebar is pressed in combiniation with up and left 我在编辑器中尝试了一些想法(没有'工作),然后我做了这个小测试程序:

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>

第一个数字是最近一次按键的键码。之后的letters/dashes就是被按下的所有字母表中的字母。

问题

当我按下 a、b 和 c 键时,它们都会出现。但是当我在上面按 d 键时,d 键不显示。这与我链接的 SO 非常相似。奇怪的是你可以按 e 键并且它有效。这也是贯穿其他键组合的模式。这是他们的原因吗?

这与 p5.js 无关,它与您使用的物理键盘和您的 computer/operating system/drivers.

有关

键盘只能传输这么多数据,因此它们限制了在任何给定时间它们报告按下的键数。有时他们对每个区域的 X 个键执行此操作。

观看 Ben Eater 的 How does a USB keyboard work? for more details, as well as How does n-key rollover work?

键盘的接线方式阻止它们检测特定组合中的多个键,因此它会在所谓的 N-key 翻转中忽略额外的键。根本不是p5.js。

你可以看看这个link:

https://www.quora.com/What-is-anti-ghosting-for-a-keyboard