3つのキーを同時押しすると意図しないキーコードが出力されるワケ

 DTXManiaの領分からは外れてしまいますが、 3つのキーを同時に押したときの問題についてきちんと説明しているサイトが少ない・・・というか、ざっと調べたところまったく見当たらなかった・・・ので、この場をお借りして作ってみることにしました。
(概要レベルの説明ではありますが。)


 まず、キーボードはどのようにして人間のキー入力を判別しているのでしょうか。

 キーボードの中では、大雑把に言って、格子状(マトリクス状)に配線がされています。縦の配線と横の配線が交わる部分にはそれぞれひとつのキーが割り当てられていて、「キーを押すと、縦の配線と横の配線がつながる」ようになっています。

 下図は、一例として、キーボードの左端の部分を模式的に表現したものです。「1」というキーを押すと、該当する部分の配線が接続されます。このとき(i)という「横の配線」に電流を流すと、「1」のところで「縦の配線」に電流が流れ、 (α)に電流が流れることが分かります。

(注: この例では、マトリクスの交点と、一般的なキーボードの物理配置を一致させていますが、実際には、キーボードの機種ごとにこのマトリクスの組み方は異なります。)

 キーボードは、(i), (ii), (iii), ... と1本ずつ順番に電流を流してみて、それぞれ(α), (β), (γ), ... の部分に反応がないかをその都度確認することで、キー入力を確認しています。

 このやり方ですと、「1」と「2」のキーを同時に押した場合や、「1」と「Q」を同時に押した場合でも、同時押しを正しく判定できることがわかると思います。


 さてここで、キーボードの「1」「2」「Q」を押している状態だとどうでしょうか。 (i)に電流を流すと、(α)と(β)に電流が流れ、「1」と「2」が押されていることが分かります。ところが、次に(ii)に電流を流すと・・・(α)だけでなく(β)にも電流が流れます。つまり、あたかも「W」が押されているように見えるのです。

 これが、「意図しないキーが入力されたように見える」理由です。


 原因をよくよく考えてみると、「1」のところで、「縦の配線から横の配線に」「電流が逆流している」ところがポイントだと気づきます。したがって、ハード的には、「すべてのキーに対して、横の配線から縦の配線へと電流が一方通行になるような仕組みを入れる」ようにすれば解決できます。 (具体的には、ダイオードを入れるということです)

 ところが、近年のキーボードは、「コストダウン」の御旗の下、この手の対策を必要最小限の箇所・・・SHIFTキーやALTキーなど・・・に絞り込んでいます。そのため、 [CTRL]-[ALT]-[DEL] といった「3つのキーの組み合わせ」は まずどのキーボードでも問題なく動作しますが、メインキーの「3つのキーの組み合わせ」は、そうでない・・・ということが多々あります。

 なおもちろん、この「ダイオードの入れ方」や「マトリクスの組み方」は、各キーボード開発会社が色々と工夫して、コストダウンと違和感ないキータイプ(うっかり入力しがちな3つキー同時入力が無効にならないようにする)をなるべく両立させるようにしていますが、いわゆる音ゲーなど「故意に複数のキーを同時に押す」必要があるようなアプリケーションでは、問題が発生してしまうようです。


DTXMania Q&A - DTXMania がちゃんと動かない篇?