PCに接続されているキーボードの数と種類の取得について


PCに接続されているキーボードの数と種類を取得するにはどうすればいいでしょうか？  
ノートPCを使用している場合に、USBにてテンキー有りのキーボードが接続されたかどうかを  
調べたいと思います。

`GetKeyboardType`を使ってみましたが、テンキー有りキーボードを接続しても、  
接続しなくても結果は変わりませんでした。

環境はVisual C++です。




テンキー無しキーボードにとって、テンキー有りキーボードで単にテンキーが使われなかったことと大差ありません。また物理的に独立したテンキーが用意されていなくてもノートパソコンのように既存のキー部分にテンキーをマッピングされているものもあります。  
ですので区別する機構は用意されていないと思われます。

本気で識別するのであればBLUEPIXYさんも提案されているようにWMIのWin32_Keyboardを使い、DeviceIDからキーボードの機種を判別することぐらいでしょうか。そうだとしてもやはりテンキーの有無は識別できないかもしれません。




USB-HID の規格上は、デバイスは Report Descriptor に使用するキーコードの一覧を返してくれるはずなので、そこに keypad〇〇
（テンキー）のコードが含まれるかどうかで判別できると思います。  
ただ、Windows で任意のデバイスの Report Descriptor を取得する方法は、申し訳ないですが詳しく知りません。

