2017-11-27 17 views
0

シンプルなゲームでは、キーボードの6つのキーを同時に押すと、Webアプリケーションのドキュメントでkeydownイベントとkeyupイベントを捕捉することに気付きました。予測不能になる。次のコードスニペットでは、リストに表示されているキーが6つのキーの後に表示されなくなることがあります。JavaScriptを使用して6つ以上のキーを同時に押す

<!DOCTYPE html> 
<html> 
<head> 
    <title>Keyboard test</title> 
</head> 
<body> 
    <div id="target"></div> 

<script> 

var target = document.getElementById('target'); 
var keyInventory = {}; 
var REFRESH_RATE = 1000/60; 

document.addEventListener('keyup', function(e) { 
    keyInventory['Key code ' + e.keyCode] = false; 
}); 

document.addEventListener('keydown', function(e) { 
    keyInventory['Key code ' + e.keyCode] = true; 
}); 

setInterval(function() { 
    target.innerHTML = JSON.stringify(keyInventory).replace(/,/g, '<br />'); 
}, REFRESH_RATE); 

</script> 
</body> 
</html> 

ブラウザはいくつかの組み合わせをブロックしていますか、ブラウザは 'keyup'と 'keydown'イベントで6行目を描画していますか?いくつかの既定の動作を防止する必要がありますか?それはすべてのブラウザで同じですか? 6つ以上のキーの組み合わせを登録する方法はありますか?

+6

キーボードの同時キー入力に制限がありますか? –

+0

あなたは正しいようです! Macのキーボードビューアでは、一度に6つのキーしか処理されません。私はそれがOSの問題であるとは思わなかった。私はずっと古いコンピュータのキーボードで2人プレイのゲームをプレイしたことを覚えています...今は私の記憶に疑問を抱いています。 –

答えて

1

これはおそらくキーボードの問題です。 IIRC、USBは、同時に6つのキープレスをサポートすることができます。 (USBキーボードではなく、、つまり、 USBプロトコル)。この制限のため、多くのコンシューマキーボードは6つの同時キーもサポートしています。

これ以上のもの(N-KRO)が必要な場合は、それをサポートするキーボードを購入する必要があります。また、PS/2を使用する可能性があります。なぜなら、PS/2は奇妙なハッキングからUSBプロトコルへの唯一のものなので、無限のキープレスをサポートしているからです。

実際にはあなたのメモリはおそらく正しいでしょう。ほとんどのキーボードはすべてPS/2だったので、理論的にはすべてがN-KROをサポートすることができました。

+0

これはJavaScriptやブラウザの問題ではなく、ハードウェアの問題であることが判明しています。 –

関連する問題