キーボードのN-Key Rollover(NKRO)とゲーミング入力遅延
要約 (TL;DR)
ストリートファイター6のトレーニングモードで30ドル前後のダイオードなしメンブレンキーボードでリュウの昇龍拳を素早く連続入力していると、「DPモーションは確かに入ったのにキャラクターが棒立ちのまま」という瞬間がよく訪れる。特定の組み合わせを押した瞬間、コントローラが入力をまるごと取り落としたり、別のキーが押されたかのように扱う現象をゴースティング(ghosting)と呼び、それを避けるためにいくつのキーを同時に処理できるかをロールオーバー(rollover)と呼ぶ。安価なメンブレンキーボードは典型的に2–3キーまでしか安定して認識されないことが多く、大半のメカニカルキーボードはUSB HID Boot Protocol基準で6KRO(6キー + 修飾キー)まで保証される。本物のN-Key Rollover(NKRO)は別途のフルHIDレポートを使うか、USBディスクリプタをカスタマイズして実装する。ポーリングレートは125/500/1000/8000Hzが一般的で、ゲーミング環境で1000Hzは事実上の標準だが、それ以上の体感差は人によって異なるので実測で検証する方が良い。この記事では1KRO・6KRO・NKROの区別、ポーリングレートが実遅延に与える範囲、そしてブラウザベースのロールオーバーテスト・ポーリングレートモニタリングで「自分のキーボードの実体」を確認する方法を整理する。
背景・コンセプト
キーボード内部にはスイッチが格子(マトリクス)状に接続されていて、コントローラが行と列を素早くスキャンしてどのスイッチが押されたかを把握する。この構造自体は単純だが、欠点がある。同時に押したキーの組み合わせによって同じ信号経路が交差すると、コントローラが「実際には押されていないキー」まで押されたかのように誤認することがあり、これがゴースティングだ。これを防ぐには各スイッチに一方向にだけ電流が流れるようダイオードを追加する必要があり、ダイオードがない安価キーボードは同時入力対応が構造的に制限される。Wooting 80HEのようなアナログホール効果スイッチキーボードは、最初からキーごとに別途の磁場センサーを付けてマトリクス自体を回避する方式でこの問題を避ける。
USB HID規格にはブート環境でも動作すべきBoot Protocolが定義されており、最大6つの一般キー + 修飾キーをレポートできる固定形式を使う。このためBIOSやブートローダでもよく動く代わりに、それ以上をレポートするにはレポート構造を拡張する必要がある。メーカーは普通2つの方式でNKROを実装する。1つはHID Boot Protocol 6KRO + モードスイッチでNKRO切り替え(物理スイッチかソフトトグル)、もう1つはビットフィールドベースのレポートを既定にする方式。Razer Huntsmanシリーズや Corsair K70は前者寄り、Wootingや一部のカスタムファームウェア(QMK/VIA)キーボードは後者寄りだ。
ポーリングレートはホストがキーボードの状態をどれくらい頻繁に問い合わせるかを意味する。125Hzは8msに1回、1000Hzは1msに1回状態を受け取る。速いほど理論上の遅延は減るが、キースイッチのデバウンス時間とスキャン周期自体の方が大きく影響することが多く、500–1000Hz以上は体感での判断が立ちにくい領域になる。
比較・データ
| 観点 | 1KRO | 6KRO | NKRO |
|---|---|---|---|
| よくある機器 | 安価メンブレン、一部の小型端末 | 大半のUSBキーボードの既定、HID Bootモード | 中高価メカニカル・ゲーミングキーボード |
| 確認方法 | 同時に2–3キー押すだけで一部が取り落とされる | 6個までは安定、7個目から取り落としや修飾キー連動の問題 | 10個以上の同時入力でもすべて報告 |
| ゲーミングの影響 | シューティング・格闘ゲームでコンビ入力の取り落とし頻発 | 大半の一般操作には十分だがカスタムマクロ・修飾キー多重には限界 | 格闘・リズム・RTSなどコンビ入力が多いジャンルに有利 |
ポーリングレートは1KRO/6KRO/NKROと独立した軸だが、遅延を論じるときは一緒に見る必要がある。キースイッチ自体の接点デバウンスがおおむね2–5ms水準なので、1000Hzポーリングが理論上提供する1msよりもデバウンスの方が大きく効く。8000Hzをサポートする最新ゲーミングキーボード(Razer Huntsman V3 Pro、Wooting 80HEなど)はデバウンスとスキャンロジックも一緒にチューニングして実遅延短縮を狙うが、その体感差は入力に敏感な競技ゲーマーの領域だ。僕の経験上、一般事務環境で1000Hzと8000Hzをブラインドで区別するのはほぼ不可能。
実践シナリオ
シナリオ1 — 格闘・リズムゲーム。 方向 + 攻撃 + 修飾キーのようにキーを複数組み合わせるジャンルは、6KROだけでも7個目の入力が必要な複雑なコンボで問題が出る。特に格闘ゲームの「下段ガード + ジャンプキャンセル + 攻撃」のような組み合わせは修飾キー(Shift/Ctrl)が挟まり取り落としが体感される。ストリートファイター6やギルティギア ストライヴでキーボードでプレイするなら、NKROモードがオンになっているかをブラウザベースのキーロールオーバーテストで確認するのが一番速い。
シナリオ2 — 一般タイピング・事務。 人がどんなに速くタイピングしても、同時に6個以上のキーが押されている状況はほぼない。6KRO既定だけでもタイピング品質に問題はなく、ここにポーリングレートを敢えて1000Hzまで上げても文字入力の体感はほぼ変わらない。事務環境ではキータッチ・配列・騒音がロールオーバーよりはるかに大きな差を作る。
シナリオ3 — ストリーミング・マクロ機材。 OBSのショートカットやマクロデバイスは修飾キー組み合わせ(Ctrl+Alt+F12のような)を何度も連続トリガーすることが多く、ポーリングレートとマクロ応答速度が重要な軸になる。この場合も実際のボトルネックはソフトウェア側のショートカット処理であることが多く、キーボード単独のポーリングレートだけ上げても改善が限定的になりうる。
よくある誤解
「メカニカルキーボードは全部NKRO」。 多くのメカニカルキーボードがNKROをサポートするが、全部ではない。6KRO既定 + NKROトグルの形、またはNKROをサポートせず6KROだけ提供する安価ラインも存在する。ファームウェア・ドキュメントに「USB NKRO」が明示されているか確認が必要だ。同じRazerラインアップ内でもモデルごとに違って動作することがあり、箱の表記よりメーカーのスペックページを直接見る方が安全。
「ポーリングレートは無条件に高いほど良い」。 タイピングでは500Hzと1000Hzの体感差はほぼなく、競技ゲーミングでも1000Hzが標準に近いのでそれ以上は限界効用が急速に減る。ポーリングレートを上げたのに体感差がないなら、おかしいのではなく正常だ。8000Hzはディスプレイが240Hz以上、マウスも同じ水準、ゲームエンジンもそれ以上のティックレートのときだけ意味があり、それ以外の環境では体感変化なしにCPU割り込みだけ増やす。
「事務所でキーが抜けるのはNKROがないから」。 事務環境で発生する入力取り落としは、たいていUSBハブ経路・ドライバ・スイッチ汚染・ファームウェア問題側の方がはるかに多い。6KRO制限のせいで抜けることは実使用で稀で、同じ症状が繰り返されるならハブ直結・再起動・清掃・ファームウェア更新を先に試す方が効率的だ。
チェックリスト
- ブラウザのキーロールオーバーテストページを開く。 一度に複数のキーを順に押して画面にすべて表示されるか確認する。
- 1–6個 → 7個以上の段階に拡張する。7個目から表示されなければ6KRO、10個以上までずっと反映されればNKRO。
- NKROがトグル式ならファームウェア・Fnショートカットでオンにして再テスト。
- ポーリングレートモニタリングツールで実ポーリング周期を測る。メーカースペックが1000HzでもホストUSBスタック・ハブ状況によって低く出ることがある。
- ゲーミングジャンルに応じて目標を定義。 シューティング・格闘・リズム → NKRO必須、一般タイピング → 6KROで十分。
- 体感遅延がまだ大きいならディスプレイ・オーディオ・ネットワーク側の遅延も併せて点検する。入力だけの問題ではない場合が多い。
関連ツール
Patrache Studioの キーボード診断ツール はブラウザ内で同時に押されたキーを可視化してロールオーバー上限をその場で確認できる。入力機器診断と一対で組みやすい点検は モニターのドット抜けテスト:原理とメーカー保証基準 で、ゲーミング全体の遅延予算を扱うときは マイク・スピーカーのオーディオ遅延(Latency)測定 のオーディオ側分析を合わせて参照すれば「目 + 手 + 耳」全系統の遅延をバランス良く合わせられる。
参考文献
- USB HID 仕様(公式) — https://www.usb.org/hid
- WootingのNKRO実装参考 — https://wooting.io/
- RTINGS キーボードレビュー — https://www.rtings.com/keyboard