如何在Windows下USB键盘的LED

时间:2011-03-21 08:22:29

标签: windows winapi keyboard usb led

我正在尝试设置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时,他/她将获得大写和小写字母: - )

  4. 当我用两个键盘调查方法2时,SendDeviceData函数总是返回E_NOTIMPL。似乎很多USB键盘制造商都依赖内置的HID驱动程序。在这种情况下,HID驱动程序报告键盘作为PC增强型键盘ans表示它是“仿真”。但Windows HID仿真不支持SendDeviceData。

    所以我怀疑必须有另一种设置键盘LED的方法。 Windows必须与USB键盘通信以设置LED: - )

    如何在不改变键盘状态的情况下更改键盘LED的任何想法?

1 个答案:

答案 0 :(得分:2)

使用HID Descriptor Tool查看每个键盘的HID Report Descriptors。键盘需要实现第8页的使用(“LED”)。否则,可能无法通过USB接口控制这些指示器,也可能以非标准方式完成。

或者,您可以尝试使用keybd_event设置特殊键状态,也许Windows会自动为您切换LED。