この記事は、Zennにも投稿しています。
USB HIDでは
0x80
がVolume Up、0x81
がVolume Downに割り当てられており、さらに0xED
や0xEE
でもVolume UpやDownができそうですが、実はこれらは全て動きません(Windowsでは)。Volume UpやDownを送るためには通常のキーボード用レポートディスクリプタではなく、メディアキー専用のレポートディスクリプタを使うデバイスを作成する必要があります。
他の言語では分かりませんが、Rustでは
usbd_hid
を用いることでメディアキー用のレポートを作成することができます。MediaKeyboardReport in usbd_hid::descriptor - Rust
docs.rs
バリアントとして使用可能なのは以下のキーになります。
MediaKey in usbd_hid::descriptor - Rust
docs.rs
抜粋:
デバイスの作成は例えば
embassy_usb
では以下のようになります。メディアキーでは送信できるのは一つのキーのみで、さらに「押されている状態を送信する」通常のキーとは違い「送信するたびに押されたことにする」ようになっているみたいです。