その他のファイル
キーボードの「ロールオーバー」や「同時押し」を調べるツール
4Gamer Keyboard Checker
4Gamer Keyboard Checkerの実行ファイル |
zipファイル内には,実行ファイルとテキストファイルを用意してある |
4Gamer Keyboard Checkerは,一言でまとめると,PC用キーボードの「ロールオーバー」と「同時押し」をチェックできるソフトウェアだ。似たようなツールは海外の有志などが公開していたりもするが,4Gamer Keyboard CheckerはDirectXの入力用API「DirectInput」を用い,ゲームプレイ時のキーボード性能をチェックできるようになっているのが特徴といえる。
対応OSは32/64bit版のWindows 7&VistaおよびWindows XPで,必須APIはDirectX 9.0c。使い方は簡単で,ダウンロードしたzipファイルから実行ファイル「4Gkeyboardchecker.exe」を任意のフォルダへ解凍し,ダブルクリックして実行するだけである。
下に示したのは,起動後,[A]キーを押下し,その状態を維持しているところだ。押しているキーに対応した文字の色が変わり,「押されている」ことが分かる仕組みになっている。同時に複数のキーを押し,画面上で確認できるキーの数を数えれば,テスト対象となるキーボードが,同時に何個のキー押下を認識できるか,すなわち,「同時押し数が何個か」を確認できるというわけだ。
メインウインドウの左下には「N key(s) on」(※Nには数字が入る)として,その時点で「押されている」と検出されたキーの数も示すようにした。なので,さまざまな組み合わせを試してみて,表示された最大や最小の数が,そのキーボードで同時押し可能なキーの最大/最小数ということになる。
4Gamer Keyboard Checkerは起動後のキーボード操作を記録したログファイル「4Gkeyboardchecker.log」を,実行ファイルがあるディレクトリに作成し,4Gamer Keyboard Checker終了時に,そこまでのキーボード操作をログへと出力する。このログファイルを使うと,ロールオーバーや同時押し周りを正確に検証可能だ。
ちなみにログはテキストファイルで,次のような形式で記録されている。
A down
G down
G up
A down
3 down
3 up
Numpad 1 down
Numpad 1 up
Keyboard type : Japanese 106 keyboard / DirectX
ここでは,「down」がキーを押したこと,「up」はキーが離されたことをそれぞれ意味している。また,メインキーの英数字はシンプルに「A」「G」「3」といった1文字で表すことにし,10キーパッドの数字や記号の場合は「Numpad」という文字列を行頭に挿入することで,区別できるようにしている(※最終行はソフトウェアによるキーボードの認識結果だ)。
画面上で確認できた同時押しの数に関係なく,同時に押したすべてのキーの「down」がログファイル上で記録されていれば,そのキーはNキーロールオーバーと判断できる。
ところで,日本語配列になっている4Gamer Keyboard Checkerのスクリーンショットを見て,「自分のキーボードは英語配列なんだけど」と思った人もいると思うが,安心してほしい。4Gamer Keyboard CheckerはWindowsで設定されているキーボード配列を自動的に判定するようになっているため,英語キーボードを接続し,Windowsから英語キーボードを使うよう設定してあれば,自動的に英語配列モードで起動する。
具体的には,ショートカットのプロパティから,「リンク先」欄の実行ファイル名の後ろに半角スペースを挿入しつつ,以下のように追記すればいい。
- 4Gkeyboardchecker.exe /jp :日本語キーボード配列表示に固定
- 4Gkeyboardchecker.exe /en :英語キーボード配列表示に固定
主な使い方は以上だ。バージョンアップが入った場合には,適宜本稿のアップデートでお知らせし,さらに,zipファイル内のテキストファイルにも説明を加えていきたいと考えている。
ダウンロードボタンは本稿の最後に用意してあるので,そちらを利用してもらえればと思う。
そもそも「ロールオーバー」「同時押し」とは何か
……と,ここまで読み進めて,「ロールオーバーとか同時押しというのは結局何なの?」と疑問に思った読者も少なくないのではなかろうか。
ゲームでは複数のキーを同時に押すケースが多く,ゲーム用のキーボードでは,「複数のキーが同時に押されたとき,それを正確に認識できること」が重要だ。「同時押し」とか「全キー同時押し」,あるいは「ロールオーバー」(Rollover)や「Nキーロールオーバー」という言葉は,それへの対応状況を説明するときに用いられるものだが,それぞれに意味するところは異なるので,4Gamer Keyboard Checkerを使いこなしてもらうためにも,このあたりの言葉が持つ意味を,ここでちょっと説明しておきたい。
●キーボードの仕組みと「ロールオーバー」
というわけで,まずはキーボードの仕組みから整理してみよう。
キーボードにおいて,キーの下には1つ1つスイッチがある。キーボード内にはCPUが組み込まれており,そのCPUは,スイッチのオン/オフを検出して,キーの押下/押上情報を取得し,PCへと転送するのだ。
ただ,日本語フルキーボードの場合,キーの数はざっと100個以上あり,キー1つ1つをすべて個別にCPUと配線するというのは物理的にもコスト的にも難しい。そこでキーボードでは,格子状にスイッチをつなぐ「キーマトリックス」(Key Matrix)という手法を採用し,それによってスイッチのオン/オフを検出するようになっている。
キーマトリックスにおいては,「A」→「B」→「A」……の順で電圧をかけていき,「1」「2」に現れる電圧でキースイッチのオン/オフを判断する。たとえば,ユーザーが「SW1」の上にあるキーを押下したとき,「A」のラインに電圧がかかって「1」に電圧が現れるが,キーボードのCPUからは,「『A』に電圧をかけたとき『1』に電圧が現れたので,『SW1』が押されている」と判断できる,というわけである。
上の図ではたった4つのキースイッチしかないが,108キーなら11×11(=121)のキーマトリックスを組んで,「A」から「K」まで11本あるラインへ順番に電圧をかけ,それぞれで「1」から「11」まで11本あるラインで電圧が現れる(=キースイッチがオンになっている)かどうかを調べるという動作が繰り返される。この動作を「キースキャン」(Key Scanning)といい,一般的なキーボードでは10ms前後,ゲーマー向けキーボードなどではおよそ1ms刻みでスキャンを繰り返し,PCへ信号を送っているのだ。
右の図がその例だが,たとえば「SW1」「SW2」「SW4」が同時に押下された状態で「A」のラインに電圧をかけたときには,波線のような感じで電流が流れることとなる。「SW2」がオンになっているため,「B」のラインにも電流が乗って,結果,「1」「2」がいずれもオンになってしまう。
結果,キーボードのCPUからは「『A』に電圧をかけたところ『2』のラインでスイッチがオンになった」状態,つまり「SW3」がオンになったと見えてしまい,結果,「SW3」のところにあるキーが押されたのか,はたまた「SW4」のところなのか,区別できなくなってしまうのだ。
このように,複数のスイッチが同時にオンになると,オンになったスイッチを通じて別のラインに電流が流れてオン/オフの判定に影響が生じ,複数のキーが同時に押されたことをうまく検出できない状況に陥る。今回の例では,オンになっていない「SW3」のところのキー押下が検出されてしまうわけだが,「押されていないのに押されたと判断されるキー」のことを,ゲーマー向けキーボードのメーカーでは「ゴースト」(Ghost)と呼ぶことが多い。
ゴーストは「入力していないキーが入力される」わけで,発生時の“ダメージ”が大きい。そこで,一般的なキーボードにおいては,ゴーストの発生する状況が検出されたときはキーの押下そのものの判断をスキップするような仕様になっている。一般的なキーボードで複数のキーを同時に押下したとき,入力されるキーが2〜3個に留まることがあるのは,これが理由だ。
対して,ゲーマー向けに「複数のキーを同時に押しても入力される」ことを謳うキーボードでは,このゴースト対策――メーカーによっては「アンチゴースト」(Anti-Ghosting)と呼ぶところもある――に工夫を凝らしている。
ゴースト対策でよく見られるのは,電圧をかけるとき,ほかのラインへ電流が流れないよう,逆流防止材としてのダイオードを挿入するというものだ。すべてのラインにダイオードを入れると,コストが高くつくうえに,キーボードの設計が難しくなることから,[W/A/S/D]キー周辺など,ゲームをプレイするうえで重要な一部のキーの周りだけダイオードを搭載しているような製品も少なくない。
また,多くはないものの,中にはコストがかかるのを覚悟のうえで,マトリックスを組み替え,複数のキーが同時に押されても問題なく入力できるようにしてある製品もあるようだ。
そういった工夫の結果,たとえば「どんな組み合わせであっても6キーまでは同時に入力されたキーを検出できるようになっている」キーボードが誕生すると,それは「6キーロールオーバー」仕様ということになる。つまり「ロールオーバー」というのは,複数個のキーを押したとき,「押下された」ことを確実に検出できるのが何個までかを示すものなのだ。
さらに,マトリックスの最適化や,逆流防止ダイオードの搭載によって,キーボード上に搭載されるすべてのキーを押しても問題なく入力を検出できるようになっていることを,「Nキーロールオーバー」もしくは「全キーロールオーバー」と呼ぶ。
「Nキー」の「N」は数学用語における自然数全体から来ているので,本来の意味から外れてしまっているのだが,Nキーロールオーバーと書かれる場合,全キーロールオーバーの意味となるのが慣例となっている。4Gamerでも,この慣例に従って書くことが多いので,憶えておいてもらえれば幸いだ。
●「同時押し」は接続インタフェースに起因する仕様
キーボードの製品検証を難しくしているのは,ロールオーバーとは別に,「同時押し」という概念が存在していることだ。これは,「一度に複数のキーを同時に押下したとき,それが同時にPCへ転送されるか」という意味で,「同時押し対応は6キーまで」といった表現で使われることが多い。
なぜ同時押しなどという概念があるのか。これは,PS/2とUSBという,キーボードとPCとの2大接続インタフェースの間にある仕様の違いが原因となっている(※Bluetoothもあるが,Bluetooth接続のゲーマー向けキーボードは今のところ存在しない)。
まず,とても古い規格であるPS/2からだが,これはシリアル信号を使ってキー押下/押上の情報をPCに送信する仕様になっている。1ポートあたり1台のデバイスしか接続できない弱点を抱える一方で,キーのデータは連続して転送可能で,データ量の制限もない。なので,Nキーロールオーバーに対応したキーボードであれば,原則的に,同時に押下したすべてのキー情報が同時にPCへ送られることになる。
一方,複数のデバイスを接続する前提のUSBでは,「インタラプト転送」(Interrupted Transfers)という転送方式が採用されている。インタラプト転送は「情報量は少ないが,断続的に送る必要がある」ようなデータに向いた転送方式なので,まさにキーボードやマウスのために用意されたものといっていいだろう。
ただ,このインタラプト転送では,一度に送れるデータサイズが8bytesに固定されているという制限がある。そして,キーボードではそのうち2bytesが制御に用いられるため,実際には[Shift]や[Ctrl][Alt]といった修飾キーを除く6キー(=6bytes)分しか使えない。
したがって,ゲーマー向けかどうかに関わらず,インタラプト転送を採用するUSBキーボードには,「一度にPCへ送れるキーの数は,修飾キーを除いて6キー」という制限がある。「Nキーロールオーバーだが,同時押し対応は6キーまで」という,少々ややこしい説明の必要なキーボードが存在するのは,こうした理由からだ。
「同時押し対応が6キーまでなら6キーロールオーバーと呼ぶべきでは?」と思うかもしれないが,それは残念ながら誤りである。
「Nキーロールオーバーだが同時押し対応は6キーまで」というキーボードにおける具体的な挙動を,4Gamer Keyboard Checkerで見てみよう。
今回は,[A]キーから右へ[S][D][F][G]……といった具合に,同時押しするキーの数を増やしていく(≒押下したキーから指を離さないまま,押下するキーを増やしていく)。すると,7番めのキーである[J]を押したときに,最初に押下して,そのまま押し続けている[A]の色が元に戻り,「入力されていない」状態になるのだ。
Nキーロールオーバーなので,入力したキーが検出されることは保証されるが,同時には入力できない。これが「Nキーロールオーバーだが同時押し対応数に制限がある」ということである。
[A]から順に[S][D][F][G][H]と6個のキーを押していったところ。ここまでは「6キー同時押し対応」というキーボード仕様の範囲内で同時押しを検出できている |
7個めのキー[J]を押す。[A]キーも押下したままだが,USBの仕様上限を超えたため,最初に押した[A]キーが押し上げられたと認識され,新たに[J]キーがオンになった |
ちなみに,もしキーボードが6キーロールオーバー仕様だった場合,7番めに押下した[J]キーは検出されない。その意味で,「Nキーロールオーバーだが同時押し数に制限がある」製品のNキーロールオーバーには意味があるわけだ。
ログを使うと詳しい検査が可能
では,前節の例で7個のキーを1つ1つ順番に押していくのではなく,同時に押したらどうなるだろう?
人間の操作なので,完全に7個のキーを同時に押すのは極めて難しく,どうしても若干の時間差はつくが,その時間差がキースキャンの所要時間未満に収まれば,Nキーロールオーバー対応製品であっても,オンになったスイッチを検出できない現象は起こり得る。だが,そこまでの瞬間的なオン/オフを,4Gamer Keyboard Checkerのメインウインドウを見るだけで判断するのは不可能だ。
そこで利用するのがログファイルである。
4Gamer Keyboard Checkerを起動した状態で,7個のキーを同時に押し,4Gamer Key Checkerを閉じる。そして,4Gamer Keyboard Checkerと同じフォルダに作られた4Gkeychecker.logを開いてみてほしい。前節のテスト条件に従うなら,以下のようなログが残っているはずだ。
A down
S down
D down
F down
G down
H down
A up
J down
……以下略
6キーが押下されたあと,7キーめが押下されたときに,一番古いキーが押上扱いになっているため,押された[A]から[J]キーが余すことなく認識されていると確認できる,といった具合である。
以上,「ちょっと」にしては長くなってしまったが,4Gamer Keyboard Checkerは,ゲーマー向けキーボードで重要なキーワードとなる,これらロールオーバーや同時押し周りをチェックするために役立つはずのものだ。普段使っているキーボードでどこまでゲーム用途に応えられるか検証する目的ではもちろん,ゲーマー向けキーボードの購入後に,仕様を確認する目的など,さまざまに活用していってもらえればと思う。
<<免責事項>> ■本記事の内容および攻略,インストール,操作方法などについての質問は,一切お受けしておりません ■体験版ファイルを使用したことによる損害やトラブルに関しては,一切責任を負いません。取り扱いは,自己の責任の範囲内で行ってください ■当サイトに掲載したゲーム画面および文章の,無許諾での転載は固くお断りいたします
- この記事のURL: