Windows 7では、キーボードのカスタムドライバ(問題があればHID)を書こうとしています。最後の目標は、コンピュータに2つのキーボードを接続することですそれらのうちの1つのすべてのキーを特殊(カスタム)関数にマッピングします。libusb-win32 - キーボードから読み取ることができない
私の考えは、第2キーボードのドライバとしてlibusb-win32を使用し、キーボードからデータを読み込んで動作する小さなプログラムを書くことです。私はドライバのインストールに成功し、デバイスからプログラムが認識されますが、キーを押していてもすべてのタイムアウトが転送されます。ここ
は私のコードです:
struct usb_bus *busses;
struct usb_device *dev;
char buf[1024];
usb_init();
usb_find_busses();
usb_find_devices();
busses = usb_get_busses();
dev = busses->devices;
cout << dev->descriptor.idVendor << '\n' << dev->descriptor.idProduct << '\n';
usb_dev_handle *h = usb_open(dev);
cout << usb_set_configuration(h, 1) << '\n';
cout << usb_claim_interface(h, 0) << '\n';
cout << usb_interrupt_read(h, 129, buf, 1024, 5000) << '\n';
cout << usb_strerror();
cout << usb_release_interface(h, 0) << '\n';
cout << usb_close(h) << '\n';
、それが返されます。
1133
49941
0
0
-116
libusb0-dll:err [_usb_reap_async] timeout error
0
0
(私はそれらの5秒でキーの多くを押しています)
唯一のバス、1つのデバイスがあります1つの構成、1つのインターフェース、および1つのエンドポイントを含む。 エンドポイントはbmAttributes = 3
です。これは割り込み転送を使用する必要があることを意味します(右)
なぜ私は何も取得できませんか?私はlibusbを悪用していますか?あなたはlibusbなしでこれを行う方法を知っていますか?
あなたは "...目標は2つのキーボードを持っています...そのうちの1つのすべてのキーを特別な(カスタム)機能にマッピングしています。"あなたはそのプロジェクトを終えましたか?それはどこかで利用可能ですか?私はしばらくの間、まったく同じアイディアを持ち、それを攻撃することはなかった。ありがとう!! –
@JonasHeidelberg [gist](https://gist.github.com/xorserer/481356fa586fcaa426f5)をチェックしてください。プロジェクト自体はC#であり、いくつかのクラスは要点から欠けていますが、私はそれがこのフォームで使えると思います。 (プロジェクト全体が公開されておらず、公開できません) – nirbruner