キーマトリクス

キーマトリクスとか同時押しで検索してくる人が多いので
そういう人達のためにリンクをはっておいてあげよう(偉そう)。

  • http://www.sugilab.net/jk/joho-kiki/1304/ これの1304-2-Aの動画がキーマトリクスの仕組みだ
  • http://fpc.misumi.co.jp/catalogue/VOL6/HTML/Membrain_SW.htm ここでもキーマトリクスの説明がされている。3キー同時押しで問題が発生するのもここで解説されている。要するにキーマトリクスで長方形を構成する4つのキーのうちの3キーを同時に押すと残りの1つのキーも同時に押されてしまったように検出される。
  • 誤検出を防止する最も完璧な方法は、http://www.kochi-tech.ac.jp/library/ron/2003/2003ele/1040171.pdfの図5.4にあるように逆流防止ダイオードを入れる方法だ。しかしコストとか重量とかの問題でこれを入れることを嫌がる場合も多いと思う。ダイオードが1個0.1gだったとしても20個キーのある携帯電話では2gの増加になる。やってられん。
  • そんな場合に誤検出を防ぐにはどうすればいいか。3キーが全く同時に押されることはほとんどないと考えて、最初に押された2キーまでは正しく認識して、それ以上のキーが押されても無視してしまうやり方がある。そうすると3キーの同時押しが全く検出できなくなる。携帯電話のゲームとかで斜めを押しながらパワーアップができない、とかはこれが原因である。
  • もうちょっと賢くなれば、3キー目がそれまで押されていた2キーと長方形を構成するような場合にのみ3キー目を無視する(そういう時には4キー目も押されたと検知してしまっているわけだが)ようにする。これでキーマトリクスを工夫しておけば大抵の場合は大丈夫である。大抵のPCキーボードでは、ShiftとかCtrlとかALTとかの同時押しによく使われそうなキーは、それと同じ列または行に他のキーがないような配置になるよう工夫してある。これがゲームなどでShiftとかCtrlとかが良く使われる理由である。なにも考えずにZとかXとかを使ってはいけないのだ。
  • もっと賢いやりかたはhttp://retropc.net/x68000/software/system/key/keywitch/kwtech.htm。ゲームなどでは意味がないが通常の文章とかの入力ではすごい威力を発揮してくれる。最初に見たときには感動した。