Несколько ключевых входов не работают после 4 нажатий клавиш - PullRequest
1 голос
/ 12 апреля 2019

Вроде нового в программировании, сделал тестовую демонстрацию, чтобы выяснить, как работают ключевые входы Демо выглядело хорошо, пока я не заметил, что некоторые ключи не регистрируются. Я просто нажал и удерживал q -> w -> e -> r -> t, и t не появлялся в выводе, пока я не отпустил другие клавиши. Вот мой код, он довольно простой.

var p1 = document.getElementById("p1");
var keys = [];

document.addEventListener("keydown", function(e) {
  keys[e.keyCode] = true;
  update();
});

document.addEventListener("keyup", function(e) {
  keys[e.keyCode] = false;
  update();
});

function update() {
  console.log(keys);

  p1.innerText = "";

  for (i = 0; i < keys.length; i++) { //checks the entire array and outputs the arr position, which is the keycode, if true
    if (keys[i]) {
      p1.innerText += i + " | ";
    }
  }
}
<p id="p1">testing</p>

Есть идеи, почему 5-й вход иногда не отображается? Есть ли способы обойти это?

1 Ответ

1 голос
/ 12 апреля 2019

Это зависит от аппаратного обеспечения и зависит от ограничений "rollover" , налагаемых вашей ОС, клавиатурой и, возможно, соответствующим программным обеспечением (браузером). Например, в моей системе ваш код корректно срабатывает для q + w + e + r + t + y, но не для седьмого ключа. Итак, кажется, что ваш максимум 4, а у меня 6.

Чтобы ответить на ваши конкретные вопросы:

Есть идеи, почему пятый вход иногда не отображается?

Короче говоря, потому что что-то - вероятно, сама клавиатура, но, возможно, другое оборудование на вашем компьютере или программное обеспечение - игнорирует дополнительные клавиши.

Есть ли способы обойти это?

Ненадежно, в том смысле, что он может работать для некоторых пользователей, но вы не можете развернуть подобный код в Интернете и ожидать, что он будет работать для всех пользователей. Некоторое старое оборудование может поддерживать только 2 ключа одновременно.

...