LoginSignup
1
1

More than 1 year has passed since last update.

【完走賞ゲット-14】node-hid の hid-showdevicesコマンドで HIDデバイスに関する情報を出力(Node.js、JavaScript)

Last updated at Posted at 2022-12-14

はじめに

こちらは、完走賞ゲットのため小ネタを毎日投稿しようとチャレンジする Advent Calendar 2022 の 14日目の記事です。

記事の内容は、「JavaScript + HID用のライブラリ」という組み合わせで検索をすると、検索上位に出てくる node-hid の話です。
もう少し補足すると、その node-hid の公式情報の中に出てくる「hid-showdevices」のコマンドに関する内容です。
node-hid の hid-showdevices について
これに興味を持った経緯は、以下のとおりです。

  1. 個人的に HID関連の技術の話が気になってきた
  2. WebHID や HID 関連の調べものをした(※ WebHID については Qiita の記事も書いたりした
  3. HID を使った開発のお試しを進めていこうと思い、それに役立ちそうなものを調べた
  4. node-hid の公式情報の中に出てくる「hid-showdevices」を見かけた
  5. PC に USB接続された HIDデバイスの情報を取得するのに便利そうで試したくなった
     

node-hid について

本題に入る前に、node-hidなどについて、少し触れておきます。

node-hid は公式での説明書きにもあるとおり、「USB接続された HIDデバイスの情報を Node.js で取得できる」というものです。
node-hid のページトップ

hid-showdevices関連の話

node-hid に含まれる hid-showdevices についても、少し補足します。

hid-showdevices について

hid-showdevices は、記事の冒頭などでも書いたとおり、USB接続された HIDデバイスの情報を確認することができる仕組みのようです。

公式ページにあるとおり、node-hid をグローバルインストールした場合は、コマンドとして利用できるようです(libusbhidraw のものがあるけれど、公式の説明を見ると、Linux以外の環境では気にせず一方を使えば良さそう?)。

$ npm install -g node-hid
$ hid-showdevices libusb
$ hid-showdevices hidraw

hid-showdevices の実装は、公式の GitHubリポジトリ内の以下を見ると、確認することができるようです。
●node-hid/show-devices.js at master · node-hid/node-hid · GitHub
 https://github.com/node-hid/node-hid/blob/master/src/show-devices.js

hid-showdevices を実際に使ってみる

hid-showdevices の準備と実行するコマンド(※ ローカルインストールの場合)

それでは hid-showdevicesコマンドを、実際に試してみます。
自分は、パッケージのインストールで、よくローカルインストールを使っているので、ここでのお試しでもその方法でやっていきます。

インストールは npm install node-hid で行います。
その後、hid-showdevices コマンドを使います。コマンドを実行する際、node-hid をグローバルインストールしていないため、直接 hid-showdevices は実行できない状況ですので、「npxコマンド」 を活用します。

hid-showdevicesコマンドの実行は、以下で行います(最初に、 npx をつけるだけです)。
この後は、 libusb のほうを使って進めていこうと思います。

$ npx hid-showdevices libusb
$ npx hid-showdevices hidraw

Windows と Mac でインストール

なお、自分はこの手順を、Windows と Mac の両方で試してみました。

※ Windows のコマンドプロンプトでインストール
Windows の場合

※ Mac のターミナルでインストール
Macの場合

どちらの環境でも、問題なくインストールを完了させられました。

Mac で hid-showdevices を実行した結果の例(※ 一部のみ)

それでは、hid-showdevices を実行してみます。
Mac(MacBook Pro 13-inch, 2020)に USB接続された機器が無い状態で、 npx hid-showdevices libusb を実行してみました。

実行後の出力でいろいろ出てきましたが、Apple関連のものの一部のみを抜粋してみます。

  • manufacturer: 'Apple Inc.' / 'Apple' (vendorId: 1452)
    • productId: 33026, product: 'Touch Bar Backlight',
    • productId: 33027, product: 'Headset',
    • productId: 638, product: 'Apple Internal Keyboard / Trackpad',
    • productId: 33378, product: 'Ambient Light Sensor',
    • productId: 33538, product: 'Touch Bar Display',

上記の中の、例えば「Touch Bar Backlight」についてはこんな感じで出力されます。
2022-12-14_10-09-06.jpg

また、外部デバイスを何かつないだ状態でも試してみます。
DualShock 4 を USB接続した後に再度コマンドを実行してみます。きちんと情報がとれているようです。
DualShock 4 に関する出力

それと、別の外部デバイスのお試しを。
以下の写真の右のほうにうつっている、有線のコントローラーでも試してみました。

そして、こんな結果が出力されました。
2022-12-14_16-11-26.jpg

いろいろ、HIDデバイスの情報を閲覧できそうです。

おわりに

node-hid の hid-showdevicesコマンドで、HIDデバイスの情報を見てみるというのをやってみました。
引き続き、HIDデバイス絡みのことは、手をつけていければと思っています。ちなみに、WebHID をあれこれ試してみようと思っていたりします。

余談

ふと思ったことを余談で書いてみます。
HID を略さず書くと「Human Interface Device」で、タイトルなどに書いた「HIDデバイス」という呼び方を今までも使っていたけど、よく考えたら「Device が二重になっている?」とか思いました。
 ●Human interface device - Wikipedia
  https://en.wikipedia.org/wiki/Human_interface_device

でも、HIDデバイスって言い方で、今まで見かけていたような気もすると思ったので、あらためて確認。「以下の WebHID の仕様のページ」を見るのが間違いなかな、と思って見てみたら「HID devices」などという記載があったので、気にしなくて大丈夫そうだなと思ったりなど。
 ●WebHID API
  https://wicg.github.io/webhid/
WebHID API のページ

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1