5

USB キーボードのキーボード LED を設定しようとしています。私はすでに次のことを試しました/知っています:

  1. PS/2 キーボード LED を設定するには、CreateFile("\\.\Keybd", GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0); を使用できます。DeviceIoControl(hKeybd, IOCTL_KEYBOARD_SET_INDICATORS...

  2. 真の HID 準拠キーボードの LED を設定するには、DirectInput、SendDeviceData を使用方法ページ 8 で使用できます。

  3. SendInput / keybd_event を使用できます。しかし、これは状態も変更します。したがって、ユーザーが入力中にこの方法でCAPS LOCKを変更すると、大文字と小文字が取得されます:-)

方法 2 を 2 つのキーボードで調査したところ、SendDeviceData 関数は常に E_NOTIMPL を返しました。多くの USB キーボード メーカーは、組み込みの HID ドライバーに依存しているようです。この場合、HID ドライバーは、キーボードが PC 拡張キーボードであると報告し、それが「エミュレーション」であると報告します。ただし、Windows HID エミュレーションは SendDeviceData をサポートしていません。

したがって、キーボードの LED を設定する別の方法があるに違いないと思います。LEDを設定するには、WindowsがUSBキーボードと通信している必要があります:-)

キーボードの状態を変更せずにキーボードの LED を変更する方法はありますか?

4

1 に答える 1

2

HID Descriptor Toolを使用して、各キーボードのHID レポート記述子を表示します。キーボードは、使用法ページ 8 (「LED」) を実装する必要があります。そうしないと、これらのインジケーターの制御が USB インターフェースを介して利用できないか、非標準的な方法で行われる可能性があります。

別の方法として、 keybd_eventで特別なキーの状態を設定してみると、Windows が自動的に LED を切り替えてくれるかもしれません。

于 2011-03-21T14:51:54.490 に答える