NKROとゴースティング:NKROキーボードでもキーが落ちる理由

Nキーロールオーバーは、キーボードがファントムキーを発生させずに多数の同時押下を報告できることを意味しますが、あらゆる条件ですべてのキー入力を取りこぼさないことの保証とは別物です。USB HIDレポートディスクリプタが一つのパケットで運べるキーコード数を制限するため、フルNKROをうたう基板でも極端なコード押下でキーを落とすことがあります。ゴースティングはマトリクス配線の制限で、NKROはダイオードによる分離で確かに解決します。激しい同時押下で入力が消えるのは全く別の問題で、通常はレポートパケットの容量かホスト側のスロットリングに起因し、いずれもブラウザベースのキーボードテストで故障と断定する前に確認できます。

ラベルに書かれていること vs 実際に起きていること

箱に書かれていること実際の意味
“Full NKRO”固件は非常に多くの同時キーを報告できる。ただし必ずしもすべてのキーが常に報告されるわけではない。
“No ghosting”真のダイオード絶縁はテストされた組み合わせでゴーストキーを防ぐが、固件の工夫ではすべてのシナリオをカバーできない場合がある。
“どんなゲームでも対応”ボードにはまだHIDディスクリプタの天井とスキャンサイクルがある。非常に大きなコードではキーを失う可能性が残る。
“N-key rollover”Nはボードによって設定される。プロトコルではなく。6KROを謳うボードの実際の天井は6。

仕様は嘘ではないが、完全な描写でもなく。ラベルはボードが設計上何に対処できるかを教えてくれる。ディスクリプタと固件は、あらゆる状況で実際に何を提供できるかを示す。

「フルNKRO」は最も大々的に宣伝されるキーボードのスペックの一つで、通常は絶対にキーを逃さないという保証として提示されます。その表現は半分正確です。NKROはゴースティングを確実かつ完全に解決しますが、すべての条件下ですべてのキー入力を取り込むことを保証するわけではありません。この二つの文のギャップが、かなりの混乱、不要な返品の絶え間ない流れ、そして同じ言葉で異なる問題を記述する人々の間のフォーラムでの論争を生みます。

ゴースティングとロールオーバーは二つの異なる問題

ゴースティング:マトリクス配線の問題

ゴースティングはハードウェアマトリクスのアーティファクトです。キーボードは各スイッチを個別に配線せず、行と列のグリッドとしてキーを走査します。個別配線はコントローラのピン数が非現実的に増えるためです。分離ダイオードのないマトリクスでは、特定の三つのキーを押すと電気的な経路が完成し、コントローラは四つ目の、触れていないキーも押されていると誤認します。このファントム登録がゴースティングで、ファームウェアではなく回路設計の性質です。

ロールオーバー:一度に登録するキー数

ロールオーバー、略してKROは、基板が同時に報告できるキー数を記述します。2KROは一度に2個、6KROは6個、フルNKROは原則としてすべてを意味します。

NKROがゴースティングを排除する仕組み

NKROはゴースティングの解決策で、正しい実装では各スイッチに直列にダイオードを置き、押されていないキーを通じて電流が逆流し、誤った経路ができないようにします。基板が本当にNKROを実装していれば、ファントム押下は電気的に不可能です。マーケティングの主張のこの部分は完全に正確です。

多数のキーを同時に押してフルNキーロールオーバーを実演するキーボードの上からの写真

NKROでも取り除けない限界

マーケティングが一貫して省くのはここからです。USB HIDキーボードは、デバイスのHIDディスクリプタで構造が宣言された固定サイズのレポートパケット内でキーコードを送信します。ブートプロトコルは通常キー6個と修飾ビットを許可します。現代のOSが使う完全なHIDキーボードレポートはパケットあたり同様に有限のキースロット数を許可し、正確な数はファームウェアの実装によります。

一つのレポートウィンドウ内で十分な数のキーを押すと、パケットには余分を置く場所がありません。NKROファームウェアはビットマップ式レポートや複数の論理HIDインターフェースの提示などの技術で、この天井を基本的な6KRO基板よりはるかに高く押し上げますが、ディスクリプタがホストに宣言した容量を超えるファームウェアは存在しません。

その結果、フルNKROをうたう基板でも極端なコードでキーを落とすことがあります。ゴースティングがダイオードで排除された後でも、レポートパケットが容量に達したためです。これは通常使用では本当にまれです。しかし、NKROがあらゆる負荷で無限のキーをゼロ損失で扱うことを意味しない理由でもあります。

ゲーミング基板でまだキーが落ちる理由

高いロールオーバーを持つ基板が実際にキーを落とす場合、原因はほぼ常に次の四つのいずれかです。

  • 上記のような、異常に大きい同時押下時のHIDレポートのオーバーフロー
  • 走査サイクルが綺麗に処理できるより速く入力が発生した時のファームウェアまたはデバウンスの遅延
  • スペックシートが実装された現実を上回る誇張されたNKROの主張
  • 過負荷のUSBコントローラ、不十分なハブ、高負荷時のOS入力処理に起因するホスト側のスロットリング。これらはいずれもキーボードの制御の及ばないものです。

これらを区別するには、ブラウザが実際に受け取った生のイベントコードを記録するテスターが必要です。そうして初めて、どのキーが到着し、どのキーが到着しなかったかを正確に確認できます。キーボードの感触から推測すると、確実に誤診に至ります。

ロールオーバーとポーリングレートは同じものではない

これら二つの仕様は独立しており、混同すると誤ったアップグレードを買うことになります。

  • **ロールオーバー(KRO)**は同時に登録できるキー数を決めます。
  • **ポーリングレート(Hz)**は基板がパソコンに報告する頻度を決め、通常は毎秒125、250、500、1000回です。

1000Hzのポーリングで2KROの基板もあれば、フルNKROで125Hzの基板もあります。高いポーリングは各押下をより速く登録させ、高いロールオーバーはより多くの押下を一緒に登録させます。不満が遅延と感じられるならポーリングレート、フレームタイム、システム遅延を調べてください。不満がコード中にキーが消えることならロールオーバーとHIDレポートの限界を調べてください。一つの仕様として扱うと、本当に必要でなかった方にお金を無駄にします。

本当にどれだけのロールオーバーが必要か

マーケティングの等級ではなく、実際の使用に合わせてください。

  • 文章タイピング: 6KROで過剰なほど十分。高速タイピストでも指の移行時に実際に同時になるキーは3〜4個を超えることはまれです。
  • 主流のゲーミング: 6KROが二つの移動方向に修飾キー、アビリティ割り当てを加えた、最も要求の大きいコードの大半を余裕でカバーします。
  • リズムゲーム、速記、複雑なマクロ構成: フルNKROが費用に見合う価値を持ちます。これらは通常の動作モードとして意図的に大きい同時入力を伴うからです。

小売業者が用途に関わらずフルNKROが不可欠だと主張するなら、それは技術的要件ではなく販売上の立場です。

ラベルを信じずに検証する

当サイトのキーボードテスターは、ライブのキーマップと生のイベントコードのログを並べて表示します。意図的に難しいコードを押し、三つの条件を確認してください。押したすべてのキーが点灯すること、押していないキーが点灯しないこと、押したすべてのキーがイベントログに現れることです。次に、段階的にコードサイズを大きくして何かが失敗するまで進めると、箱の数字ではなく基板の実際の実用上限が分かります。

ゴースティングやロールオーバーの限界を検出するために押したキーを光らせるキーボードテスターウェブアプリを映すパソコン画面

ハブを経由した時だけ、またはシステムが高負荷の時だけキーが落ちる場合、キーボードはおそらく無実で、接続経路かホストの設定に問題があります。ハードウェアについて何かを断定する前に、マザーボードのポートで直接テストしてください。

マトリクス走査サイクル:キーボードが実際にキーを読む仕組み

キーボードがハードウェアレベルでキー押下を検出する仕組みを理解すれば、ゴースティングがなぜ起こるのか、ダイオードがなぜそれを防ぐのか、そして走査レートがロールオーバー仕様と並んで重要な理由が明確になります。プロセスは、ほとんどの人が想像する「キーを押して信号を送る」という単純なモデルより複雑です。

キーボード内部では、スイッチが行と列のグリッドに配置されます。各スイッチは一つの行ラインと一つの列ラインの交点にあります。マイクロコントローラはすべてのキーを同時に読むことはできず、代わりに一度に一つの行ラインをハイに駆動し、すべての列ラインを読んでその行のどのスイッチが押されているかを確認するという走査を高速で行います。次に次の行に移り、繰り返します。6行18列の典型的なキーボードは1ミリ秒未満で全走査を完了し、走査レートは毎秒1000回を超えます。

分離ダイオードのないマトリクスでは、同じ行や列の複数のキーを押すと意図しない電気経路ができることがあります。三つのキーがグリッド上でL字形を形成する場合、アクティブな行からの電流が押されたスイッチを通り、非アクティブな行を逆流し、コントローラはLの角にある四つ目のキーも押されていると信じ込むことがあります。これがゴースティングのメカニズムで、マトリクス設計の直接の結果です。走査は速いものの、電気経路が分離されていません。

各スイッチにダイオードを直列に追加すると、ダイオードは一方向にしか電流を流さないためこれを解決します。ダイオードがあれば押されていないスイッチを通じて電流が逆流できず、ゴースト回路が断たれます。NKROを主張するすべてのキーにはこれらのダイオードがなければなりません。なければ、ファームウェアの品質に関わらず、特定のキーの組み合わせでゴースティングが物理的に不可避です。

走査レートはデバウンスとも相互作用します。メカニカルスイッチが閉じる時、接点は短時間、通常1〜5ミリ秒物理的にバウンドし、高速なオンオフ遷移を生みます。コントローラはバウンドが収まるのを待ってからキー押下を登録しなければならず、各走査サイクルにデバウンスチェックが含まれます。走査サイクルが1ミリ秒、デバウンスウィンドウが5ミリ秒なら、コントローラはイベントを確定する前にキーが押されていることを示す5回の連続した走査を必要とします。このデバウンス遅延は意図的なトレードオフです。短いウィンドウは応答が速いがノイズを登録するリスクがあり、長いウィンドウは安定するが入力遅延を加えます。デバウンスの実装はファームウェアの設計判断で、それが同じスイッチハードウェアを持つ二つのキーボードでもレスポンスが異なり得る理由です。

この走査アーキテクチャは、キーボードが高いポーリングレートを主張しながら激しい同時負荷でキーを落とす理由も説明します。ポーリングレートは確定したキー押下をパソコンに送る速さを決めますが、走査サイクルとデバウンスはそもそもキーを検出する速さを決めます。走査サイクルがすべての押されたキーを一つのレポートウィンドウ内で解決できない場合、一部は次のレポートに保留され、ユーザーがロールオーバーの限界に帰するキー落ちの症状が生じます。

ダイオードがコストを生む理由:NKROの製造経済

ダイオードがゴースティングをこれほど効果的に解決するなら、なぜすべてのキーボードに搭載しないのでしょうか。答えは経済的で、コスト構造を理解すればメーカーの主張をより批判的に読めます。

NKROキーボードの各スイッチにはダイオードが必要で、通常はバルクでセント未満の小信号ダイオードです。87キーのキーボードで、ダイオードの素材費は1ドル未満です。本当の出費は別の場所にあります。各ダイオードを回路に挿入し、はんだ付けし、テストしなければなりません。完全自動化された生産ラインでは、基板あたりの処理時間が加わります。手はんだ付けの小ロット生産ラインでは、人件費が実質的です。PCBもダイオードのパッドを収めるためにより大きな配線で設計する必要があり、基板の複雑さと素材費がわずかに増します。

個別スイッチではなく柔軟なメンブレン上に印刷された導電性パターンを使う予算向けメンブレンキーボードでは、製造プロセスを根本的に再設計しない限りダイオードの追加すら不可能です。メンブレンキーボードは極端な集約で低価格を実現し、マトリクス全体を一回のパスで印刷し、個別部品を持ちません。メンブレン基板でのNKROは、コスト優位性を打ち消すハイブリッド手法を必要とします。

これが生む市場のセグメンテーションは意図的です。プレミアムメカニカルキーボードはNKROを機能として宣伝し、ダイオードコストと組み立ての複雑さが高い価格を正当化するため、それに応じた価格を請求します。予算向けメカニカルキーボードはUSB上のNKROを主張しつつ、ビットマップレポートや複数の論理インターフェースなど、ダイオードを必要とせずにロールオーバー限界を延ばすファームウェアの技法で実装することがよくあります。これらの実装は6個を超えるキーを報告できますが、元のマトリクスにダイオード分離がないため、特定の組み合わせではまだゴースティングを起こす可能性があります。マーケティングの「NKRO」というラベルは、ハードウェアNKRO(ダイオードあり)とファームウェアNKRO(ダイオードなし)を区別しないため、テストが不可欠です。

この経済構造は、6KROが標準として残る理由も説明します。ダイオードのないマトリクスでも、キー配置を慎重に設計し、一般的なゲーミングの組み合わせがゴースティングを起こしやすい交点に落ちないようにすれば、6キーロールオーバーを実現できます。主流のゲーミング市場を狙うメーカーにとって、6KROはフルNKROより低コストで十分な機能を提供し、価格に敏感な買い手は実際の使用で限界にほとんど直面しません。フルNKROのプレミアムは絶対額では控えめで、小売で5〜15ドル程度ですが、キーボードが1ドル単位のマージンで価格競争する市場では、明確な製品ティアを生むのに十分な意味を持ちます。

買い手にとっての実用的な教訓は、NKROの主張を保証ではなく出発点として扱うことです。NKROをうたうキーボードはダイオードを持つかもしれないし、限界を延ばすがあらゆる組み合わせでゴースティングを排除しないファームウェアの技法に依存するかもしれません。知るための唯一の決定的な方法は、段階的に大きいコードでテストし、ファントムキーが現れるかを観察することです。このテストは2分未満で、基板が扱える内容を正確に教え、スペックシートよりはるかに信頼できます。

NKROは買うべきか?

NKROはゴースティングを終わらせますが、USB HIDの制約を廃止するわけではありません。「フルNKRO」を、ファントムキーがなく非常に高い同時押下容量を持つという意味で解釈してください。どんな考えうる負荷の下でも文字通りすべてのキーが常に、という意味ではなく。ラベルを信じる前にご自身の基板をテストし、ロールオーバーの問題をポーリングの問題と区別してください。異なる対処が必要だからです。そして、ハブ経由でのみ、またはシステム負荷時のみ現れるキー落ちが、欠陥のあるキーボードではなくホスト側の故障を示すことが多いことを忘れないでください。

よくある質問

キーボードのNKROとは何ですか?

Nキーロールオーバーは、キーボードが同時に押された多数のキーを、どれも落としたり誤認したりせずに登録できる能力を指します。命名規則は単純で、2KROの基板は2個の同時押下を確実に処理し、6KROは6個、フルNKROは基板上のすべてのキーを一度に処理することを目指します。この仕様は、意識的なコードを押して各キーが独立して報告されることを確認することで検証します。キー入力を重ねる高速タイピストや、移動キーと修飾キー、アビリティ割り当てを同時に押すゲーマーにとって最も重要です。

キーボードのゴースティングとは正確には何ですか?

ゴースティングは、特定のキーの組み合わせを押した時に、触れてもいないキーが押されたとして登録される現象です。原因はマトリクス配線にあります。キーボードは各キーを個別に配線するのではなく、行と列のグリッドに配置されたキーを走査し、分離ダイオードのないマトリクスでは、特定の三つの同時押下が電気的な経路を完成させ、コントローラーが四つ目のキーが押されていると解釈することがあります。安価なメンブレンキーボードや多くのノートパソコンのキーボードではこれが頻繁に起こります。正しく設計された基板はマトリクスにダイオードを配置し、いかなる組み合わせでもファントム回路ができないようにします。

NKROは実際にゴースティングを排除しますか?

はい。これこそNKROが存在して解決する問題です。正しく実装されたNKROマトリクスを持つ基板はダイオード分離を使用し、押されていないスイッチを通じて電流が逆流できないため、どの組み合わせを押してもファントムキーの登録が電気的に不可能になります。NKROをうたうキーボードで本当のゴースティングが観察された場合、三つの可能性があります。マーケティングの主張が偽り、ファームウェアの走査ロジックに欠陥がある、あるいは見ているものはゴースティングではなく、表面的に似たHIDレポートのオーバーフローのような別の故障モードである、のいずれかです。

フルNKROのキーボードでもキーが落ちることはありますか?

はい。この仕様をめぐる混乱の大部分を生む区別です。NKROはマトリクスの問題であるゴースティングに対処しますが、完全に異なる層で動作するプロトコルの制約であるUSB HIDレポートの上限を覆すことはできません。標準的なHIDキーボードのパケットには有限のキーコードスロットがあります。一つのレポートウィンドウ内で十分な数のキーを押すと、パケットに余分を置く場所がなく、一部は保留または消失します。これは通常使用ではまれですが、ストレステストでは完全に再現できます。

USB HIDレポートの制限とは何ですか?

USB HIDキーボードは、デバイスのHIDディスクリプタで構造が定義された固定サイズのレポートパケット内でキーコードを送信します。システム起動時や最小限のBIOS実装で使われるブートプロトコルは、通常キー6個と8ビットの修飾キーを許可します。現代のOSが使う完全なHIDキーボードレポートは通常、パケットあたり同様の有限のキースロット数を許可し、正確な数はファームウェアの実装によります。NKROファームウェアはビットマップレポートや複数の論理インターフェースなどの技術でこれらの制約を回避しますが、ディスクリプタ自体が宣言した容量を超えることは決してできません。

なぜ一部のゲーミングキーボードでまだキーが落ちるのですか?

ほぼすべての現実のケースを四つの原因で説明できます。HIDレポートのオーバーフローは、上記のパケット容量を超える異常に大きいコードが押された時に起こります。ファームウェアやデバウンスの遅延は、走査サイクルが綺麗に処理できるより速く入力が発生した時にイベントを落とします。偽りまたは誇張されたNKROの主張は、マーケティングの数字が実装された現実を上回ることで、メーカーが認めるより多く見られます。ホスト側のスロットリングは、過負荷のUSBコントローラ、不十分なハブ、OSの入力処理が原因で、キーボードの制御の及ばないところでイベントを完全に失うことがあります。これらを区別するには、実際に到着したものをログに記録する必要があります。

NKROとゴースティングを正しくテストするにはどうすればよいですか?

ビジュアルキーマップと生のイベントログを並べて表示するキーボードテスターを使用してください。複数のキーを同時に押し、二つの条件を別々に確認します。第一に、押したすべてのキーがマップ上で点灯するべきで、点灯しないキーがあればロールオーバーまたはレポートの限界を示します。第二に、押していないキーが点灯してはならず、点灯すれば本物のゴースティングです。次に、段階的に大きいコードに進み、基板が実際に報告をやめる場所を見つけます。生のイベントログは、OSが解釈ではなく実際に登録したコードを正確に示すため重要です。

6KROはゲーミングに十分ですか?

大多数のゲームでは、はい。典型的な要求の大きいゲーミングコードは3〜5キーで、二つの移動方向に修飾キー、アビリティ割り当てを加えたもので、6KROの予算に余裕を持って収まります。フルNKROが本当に必要になるのは特定のシナリオのみです。多数の同時入力を要求するリズムゲーム、コード自体が入力方法である速記タイピング、複雑なカスタムキー割り当て構成などです。現在の基板で具体的な限界にすでに直面していない限り、フルNKROにプレミアムを払う意味は限られます。

NKROには特別な接続タイプが必要ですか?

USB上のNKROは、キーボードが6キーのブートプロトコルにフォールバックせず、完全なHIDレポートを使用すること、そしてホストがそのディスクリプタを受け入れることを必要とします。一部の古いBIOS実装やシステムファームウェアは起動時、時に起動後もブートプロトコルを強制し、基板の能力に関わらず6KROに固定します。レガシーなPS/2インターフェースは、キーイベントを固定パケット構造なしで個別に送信したため、NKROをより自然に扱えました。それが昔の愛好家のアドバイスがPS/2を好んだ理由です。現代のUSBでは、結果はファームウェアとディスクリプタの設計に依存します。

NKROはタイピングにも関係しますか、それともゲーミングだけですか?

主にゲーミングと専門用途です。通常の文章タイピングでは、高速でも実際に同時になるキーは3〜4個を超えることはまれで、指の移行時にわずかに重なるだけのため、6KROが事実上すべてのタイピストに十分な余裕を提供します。意味のある恩恵を受けるのは、入力方法自体がコードベースの速記者、特定のキーボードコントローラーを使うミュージシャン、複雑なマクロやキー割り当て構成を走らせるゲーマーです。使用状況に多数の同時押下が関わらないなら、NKROは体験を変えず、購買判断の要因にするべきではありません。

関連記事