ロゴ
ToolkitsLabEfficiency Hub
PR広告を含む

HIDレポートビューアー自作キーボード・入力機器のレポート記述子をWebHIDで解析

WebHIDでUSB HID機器に接続し、ベンダーID・プロダクトID・レポート記述子を解析。 流れてくる生のレポートをリアルタイムでHEX表示し、ポーリングレート計測やレポート送信にも対応します。

入力内容は外部に送信されません。

詳しく

デバイス接続

お使いのブラウザはWebHID APIに対応していません。Google ChromeまたはMicrosoft Edge(デスクトップ版)で、HTTPS接続(またはlocalhost)の環境からアクセスしてください。

デバイスを選択すると、レポート記述子とライブモニターが表示されます。

WebHIDでHIDレポートを解析する:自作キーボード開発者のためのデバッグツール

自作キーボードやマクロパッド、ゲーミングデバイスのファームウェアを開発していると、「本当に意図した通りのレポートが送信されているか」「OSに認識されない原因は何か」を、目視で確認したい場面が頻繁にあります。従来はネイティブアプリやUSBキャプチャ機器が必要でしたが、本ツールはブラウザのWebHID APIだけで、USBアナライザに近い情報をその場で確認できます。

本ツールは、接続したHID機器のベンダーID・プロダクトID・レポート記述子(Input/Output/Feature)を自動で解析してツリー表示し、機器を操作した際に流れてくる生のレポートをHEX形式でリアルタイム監視します。前回の値と比較して変化したバイトをハイライト表示するため、「どのキーを押すとどのバイトが変わるか」を一目で把握できます。

既存の「キーボード入力テスト」ツールが押されたキーを視覚的に確認する利用者向けのツールであるのに対し、本ツールはレポートレート(ポーリングレート)の計測やOutput・Featureレポートの送信にも対応した、作る側・デバッグする側のための専用ツールです。

こんなシーンで便利です

QMK・ZMKファームウェア開発中のRaw HIDデバッグ

Vendor Defined(0xFF60等)のUsage Pageを使ったRaw HID通信が、意図した値でやり取りされているかをバイト単位で検証できます。

左手デバイス・マクロパッドの入力確認

試作したマクロパッドのどのスイッチがどのレポートに対応しているかを、押下時のバイト変化から特定し、キーマップ設計の検証に使えます。

ゲーミングデバイスのレポートレート(ポーリングレート)計測

1秒間に届くレポート数をリアルタイムで表示。125Hz・500Hz・1000Hzなど、実際のポーリングレートが設定通りに出ているかを確認できます。

OSに認識されない・誤動作する機器の原因切り分け

ベンダーID・プロダクトIDが正しく認識されているか、レポート記述子に想定外の項目が無いかを確認し、ハードウェア側・ファームウェア側どちらの問題かを切り分けられます。

使い方は簡単 4ステップ

  1. 対応ブラウザ(Chrome・Edgeのデスクトップ版)でこのページを開き、「デバイスを選択」ボタンをクリックします。
  2. ブラウザの許可ダイアログでデバイスを選んで許可すると、ベンダーID・プロダクトID・レポート記述子のツリーが表示されます。
  3. デバイスを操作すると、流れてくるレポートがHEX形式でリアルタイムに表示され、変化したバイトがハイライトされます。
  4. 必要に応じてOutput・Featureレポートの送信や、レポートレート(reports/sec)の確認を行います。

※OS標準のキーボード・マウスなど、一部の保護されたHID機器には仕様上接続できない場合があります。

ご利用時の注意点

  • WebHID APIはGoogle Chrome・Microsoft Edge等のChromium系ブラウザのデスクトップ版のみに対応しています。Firefox・Safariおよびスマートフォンのブラウザでは利用できません。
  • HTTPS接続(またはlocalhost)であることが必須です。HTTP環境ではデバイス選択ボタンが機能しません。
  • OSが標準の入力機器として扱うキーボード・マウスなど、一部のHID機器はセキュリティ上の理由でブラウザからのアクセスが保護されています。
  • Output・Featureレポートの送信は対応デバイスに対してのみ有効です。想定外のレポートIDやバイト数を送信すると、デバイスが反応しない、または意図しない動作をする場合があるため、自己責任でお試しください。
  • 完全無料・安全:取得・送信したデータはブラウザ内処理のみで完結し、当サイトのサーバーへ送信されることはありません。

主要なHID Usage Page(用途ページ)早見表

レポート記述子のツリー表示に出てくる「Usage Page」の数値が、それぞれ何を表すかの早見表です。

Usage Page名称主な用途
0x01Generic Desktop Controlsマウス・ジョイスティック・ポインタ等の汎用入力
0x07Keyboard/Keypadキーボード・キーパッドのキー入力
0x08LEDキーボードのCaps Lock等、LED状態の制御
0x09Buttonボタン入力(マウスクリック・ゲームパッド等)
0x0CConsumer音量・再生停止などのメディアキー
0x0DDigitizerタッチパネル・ペンタブレット等の座標入力
0xFF00〜0xFFFFVendor Defined(ベンダー定義)QMK Raw HID等、メーカー独自の拡張通信

【Vendor Defined(ベンダー定義)について】
自作キーボードのRaw HID通信(QMKの0xFF60等)はこのVendor Definedの範囲に該当します。標準規格では定義されていない独自の通信のため、ファームウェア側のソースコードと照らし合わせて意味を確認する必要があります。

※実際のUsage Page・Usageの割り当ては機器・ファームウェアによって異なります。詳細な仕様はHID Usage Tables(USB-IF公開資料)やファームウェアのソースコードを合わせてご確認ください。

WebHIDとレポート記述子の基礎知識、実務的な読み方

自作キーボード・入力機器のデバッグを始める前に押さえておきたい、WebHIDの仕組みとレポート記述子の読み方を解説します。

結論:WebHIDは、ブラウザからUSB HID機器と直接やり取りできるAPI

WebHID APIは、専用のネイティブアプリやドライバを介さずに、ブラウザから直接USB HID機器と通信できる仕組みです。キーボードやマウスだけでなく、ゲームパッドやカスタムの入力機器も対象になり、ユーザーが明示的に許可したデバイスに限って、レポートの読み書きができます。
これにより、自作キーボードの動作確認や簡易的な設定ツールを、インストール不要のWebページとして提供できるのが最大の利点です。

レポート記述子の構造:Usage Page/Usage/Report Size/Report Countの読み方

レポート記述子はCollection(まとまり)の中に、Input・Output・Featureの3種類のレポートが入れ子になった構造をしています。
各レポートのUsage Pageは大分類(キーボードか、LEDか等)、Usageはより具体的な意味、Report Sizeは1項目あたりのビット数、Report Countはその項目の繰り返し回数を表します。
例えば「Report Size: 1bit × Report Count: 8」であれば、1バイトの中に8個の1ビットフラグ(ON/OFFの状態)が並んでいる、という読み方になります。

レポートレート(ポーリングレート)の計測方法と目安値

レポートレートとは、1秒間にデバイスから送られてくる入力レポートの回数のことで、一般にポーリングレートとも呼ばれます。
一般的なキーボードは125Hz(8ms間隔)、ゲーミングデバイスでは500Hz〜1000Hzが採用されることが多く、数値が高いほど入力から反映までの遅延が小さくなります。
本ツールでは直近1秒間に届いたレポート数をカウントして表示するため、ファームウェアの設定値が実際の動作に反映されているかを確認する簡易的な指標として使えます。

QMK・ZMKのRaw HIDを使ったファームウェアデバッグの実務的な活用法

QMKファームウェアのRaw HID機能(Vendor Defined、Usage Page 0xFF60が一般的)を有効にすると、キーボードとPC間で任意のデータをやり取りできるようになります。
本ツールでこの通信を監視すれば、設定変更コマンドが正しく送受信されているか、ファームウェア側の処理が想定通りのバイト列を返しているかを、専用ツールを自作することなく確認できます。

よくある失敗と対策

OS標準のキーボード・マウスを選択しようとして接続できない失敗

普段使っているキーボードやマウスをデバイス選択ダイアログから探しても、保護されたHID機器として扱われているため接続できない、または選択肢に出てこないことがあります。

💡 対策・解決策を見る▼
OS標準の入力ドライバとは別に認識される自作キーボードやマクロパッド、カスタムファームウェアを書き込んだデバイスであれば問題なく接続できます。既存の市販キーボードのデバッグが目的の場合は、ベンダー公式のツールが必要になる場合があります。

HTTP環境でアクセスし「デバイスを選択」ボタンが反応しない失敗

社内の検証用サーバーなどHTTP接続の環境でツールを開くと、WebHID APIがセキュリティ制約により無効化され、ボタンを押しても何も起こらない状態になります。

💡 対策・解決策を見る▼
本ツールのように常時HTTPSで配信されているページ、またはlocalhost環境でアクセスしてください。自作のテストページを作る場合も、HTTPSまたはlocalhostでの配信が必須です。

Outputレポートのバイト数や並び順を誤って送信しデバイスが反応しなくなる失敗

ファームウェア側が想定しているバイト数より少ない・多いデータを送信したり、バイトの並び順を誤ったりすると、デバイスがエラーを返す、または何も反応しなくなることがあります。

💡 対策・解決策を見る▼
送信前に、受信したInputレポートの記述子(Report Size・Report Count)を確認し、ファームウェアのソースコードで定義されているバイト構造と一致させてから送信してください。不安な場合は、まず読み取り専用の監視から始めることをおすすめします。

FirefoxやSafari、スマートフォンで開いてWebHID非対応のまま困る失敗

普段使っているブラウザやスマートフォンでアクセスし、「デバイスを選択」ボタンが押せない・何も起きないままエラーの原因がわからず困ってしまうケースです。

💡 対策・解決策を見る▼
WebHID APIはChrome・Edge等のChromium系ブラウザのデスクトップ版限定の機能です。対応ブラウザの注記を確認し、PCのChromeまたはEdgeから改めてアクセスしてください。

同一製品を複数台接続した状態でVID・PIDだけでは機器を見分けられない失敗

同じキーボードキットを2台接続してテストした際、ベンダーID・プロダクトIDが同一のため、どちらの機器を操作しているのかデバイス一覧上で区別できなくなることがあります。

💡 対策・解決策を見る▼
可能であれば1台ずつ接続してテストするか、ファームウェア側でシリアル番号(productName等)に個体識別用の文字列を設定しておくと、一覧上での判別がしやすくなります。

よくある質問(FAQ)

Q.HIDレポートビューアーとは何ですか、何ができますか

Q.

A. WebHID APIを使い、USB接続されたHID(Human Interface Device)機器のベンダーID・プロダクトID・レポート記述子(Input/Output/Featureレポートの構造)を解析して表示するツールです。機器を操作した際に実際に流れてくる生のレポート(バイト列)をリアルタイムで確認でき、自作キーボードやゲーミングデバイスのファームウェア開発時に、意図した値が送信されているかを目視で検証できます。

Q.対応しているブラウザや環境を教えてください

Q.

A. WebHID APIはGoogle ChromeやMicrosoft Edgeなど、Chromium系ブラウザのデスクトップ版にのみ対応しています。Firefox・Safariでは利用できません。また、セキュリティ上の仕様としてHTTPS接続(またはlocalhost)であることが必須で、スマートフォン・タブレットのブラウザからは利用できません。

Q.既存の「キーボード入力テスト」ツールとの違いは何ですか

Q.

A. キーボード入力テストツールは、どのキーが押されたかを視覚的に確認したい「利用者向け」のツールです。一方、本ツールはベンダーID・プロダクトIDの確認、レポート記述子(Usage Page/Usage/Report Size/Report Countなど)の解読、生のバイト列の監視、Output・Featureレポートの送信といった、ファームウェアや回路を「作る側」のためのデバッグ機能に特化しています。

Q.レポート記述子とは何ですか、どのように読めば良いですか

Q.

A. レポート記述子は、そのHID機器がどんな種類のデータ(キー入力、ボタン、LED状態など)を、どのビット位置・サイズでやり取りするかを定義した設計図です。Usage Page(大分類)とUsage(具体的な意味)、Report ID(レポートの識別番号)、Report Size・Report Count(1項目あたりのビット数と個数)を順に読むことで、流れてくるバイト列のどの部分が何を表しているかを対応付けられます。

Q.Output・Featureレポートの送信は安全ですか、何に注意すればいいですか

Q.

A. 対応しているデバイスに対してのみ有効な機能で、通常の操作では送信できない制御コマンド(LED点灯指示など)をテストする用途を想定しています。ただし、デバイスが想定していないレポートIDやバイト数を送信すると、デバイスが反応しなくなったり、想定外の挙動をしたりする可能性があります。重要なデバイスで試す際は、挙動を理解した上で自己責任で行ってください。

Q.入力・送信したデータが外部に送信される心配はありませんか

Q.

A. 一切ありません。本ツールはWebHID APIを通じたUSB通信とブラウザ内での表示処理のみで完結しており、取得したレポートの内容や送信したバイト列が当サイトのサーバーへ送信・保存されることはありません。

Q.OS標準のキーボードやマウスを選択しようとしても接続できないのはなぜですか

Q.

A. ブラウザの仕様上、OSが標準の入力機器として認識しているキーボード・マウスなど一部の保護されたHID機器には、セキュリティ上の理由からWebHID経由でアクセスできないようになっています。自作キーボードやマクロパッドなど、OS標準のキーボードドライバとは別に認識される機器であれば問題なく接続できます。

User Feedback & Request

あなたの声で、
このツールをより鋭く。

「こんな機能が欲しい」「ここを直してほしい」といったご意見や、新しいツールのリクエストを募集しています。エンジニアが直接目を通し、開発の参考にさせていただきます。

フィードバックを送る