

ウィキペディアでキーロールオーバーとは何かわかりましたが実際３つ以上のキーの同時押しは検出できないとして、３つ以上のキーを認識したいときはどうすればいいのでしょうか？

複数のキーでひとつのコマンドとしているゲームはsteamやwebで多くみかけますが、ゲームの対応環境にキーロールオーバーが３キー以上でなければ使えませんのような注意書きは見たことがありません  
なので何か対処ができると思ったのですがソフトウェア側で対応可能でしょうか？

<https://ja.wikipedia.org/wiki/N%E3%82%AD%E3%83%BC%E3%83%AD%E3%83%BC%E3%83%AB%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC>


CC BY-SA 4.0
2019-11-28T18:56:58.443
60928
2019-11-29T23:43:44.923
36839
question
game-development
キーロールオーバーに対応するには？


３キーロールオーバーってのは、要するに押されていないキーが押されたように見える（ハードウエアレベルで信号が入力される）わけっす。

例：キー１とキー２とキー３を同時押しすると、押されていないキー４が押されたように見える組み合わせがある（ハードウエア上信号が発せられるのでソフトウエアで工夫しても無理）

これを回避するにはキーボードハードウエア上に追加部品が必要（コストアップ）。でも、他キーと同時押しする前提の `SHIFT` や `Ctrl`
には最初から部品（ダイオード１本）が入っているわけっす。

ゲームデザイン上はこの「キー４」に対して何も機能を割り振らなければよいだけ。つまり、移動や発射などの注目すべき特定キー以外の入力はすべて無視すればよいだけのことで、だから特に注意書きもいらないしソフト側で特別な対応もいらないです。


CC BY-SA 4.0
2019-11-29T00:43:45.820
60933
2019-11-29T00:43:45.820
8589
60928
answer


nキーロールオーバーというのは、キーボードの物理的仕様の話です。  
ゲーミングキーボードなんかは８キーロールオーバーだったりするので、キーボードをそういうのに買い換える、というのが回答となります

＃ヤスモンキーボードはもれなく２キーですね

まあ、ShiftとかCtrlキーは別立てとなるので、このキーには勘定にははいりません。  
また、２キーと言っても、確実に認識できるのが最低２キーってことなんで、組み合わせによっては３キーとか４キー認識できる場合もあります


CC BY-SA 4.0
2019-11-29T01:57:31.403
60936
2019-11-29T02:52:09.927
2019-11-29T02:52:09.927
27481
27481
60928
answer


「実際３つ以上のキーの同時押しは検出できないとして」と質問していますが、Wikipedia記事にも書いてあるようにUSB
HIDプロトコル上は6個のキーの同時押しまでは対応しているわけで、6個までで良いのなら必要なキーボード仕様を明記するとか、質問が来たら買い替えるか/買い足すかして変更してくださいと答える状況でしょう。

@774RRさん・@わわいさん回答にあるようにハードウェア側の仕様の問題であり、そういったことも含めて「ゲーミングキーボード」という宣伝文句・商品分野が成立しているのだと思われます。

ソフトウェア(ゲーム)側は、素直に6個のキーの同時押しがあることを想定して作成すれば良いだけです。

それ以上のキーの同時押しが必要なら、キーボード操作は諦めて、ゲーミングコントローラーに対応するのが良いでしょう。  
Windows系ならばDirectInputが128個、XBox系ならばXinputが10個までの同時押しに対応しているようです。

キーボードのことも含めて、以下の記事が参考になるでしょう。  
[ゲームパッド買う前に調べると良いこと - 知って得するゲーミングデバイスの選び方](https://www.pc-
koubou.jp/magazine/13788#section05-02)

ゲームもキーボードも決まっていて変更できないが、その間に何か潜り込ませて対処できないか？ と考えているのであれば、USB
HIDのデバイスドライバスタックに何か手を加えれば出来るかもしれません。

しかし、Windowsならデバイスドライバにデジタル署名が必要なように、個人の趣味で何かしようという場合はハードルが高いですね。仕事でも費用対効果が見込めないでしょう。  
敢えてその道を進むのならば、そういうものの同好の士(や場所)を探してみて頑張ってください、というのが感想です。


CC BY-SA 4.0
2019-11-29T23:43:44.923
60949
2019-11-29T23:43:44.923
26370
60928
answer