最近、10m以上離れていても操作できる無線マウス(ワイヤレスマウス)をみて、
この無線部分を利用したらおもしろいことができるかなと思い、
まずは有線のUSBマウスからの信号を直接受け取るプログラムを作ろうとしています。
(どのマウスからの信号か区別する必要があるので)
コンポーネントの HID Controller Suite (http://www.soft-gems.net/) を使って試しているのですが、
なぜか、HIDデバイスの一覧を表示するデモプログラムで、マウスが検出できません。
マウスは正常に動作しています。WindowsXPの標準のドライバーで動作する普通のマウスです。
他のHIDデバイス(radio SHARK)は検出でき信号の送受信もできました[link↑]。
このコンポーネントではUSBマウスの信号は受信できないのでしょうか?
USBマウスやUSBキーボードは他のHIDデバイスと違って
たぶんOSに重要な信号であるため、
HidD_GetHidGuid で得られるGUID
4D1E55B2-F16F-11CF-88CB-001111000030
では、SetupDiGetClassDevsA、SetupDiEnumDeviceInterfaces で列挙されないらしいです。
そこで、HIDのGUIDではなく
GUID_CLASS_MOUSE: TGUID = '{378de44c-56ef-11d1-bc8c-00a0c91405dd}';
のGUIDをつかって上のSetupDi系 APIを使うと、USBマウスもリストされました。
USBマウスからの信号の読み取りは、CreateFile ではできなく、
HidD_GetFeature でできました。
参考
http://www.lvr.com/hidfaq.htm
ツイート | ![]() |