Как работают светодиоды USB-клавиатуры под Windows - PullRequest
5 голосов
/ 21 марта 2011

Я пытаюсь установить светодиодные индикаторы клавиатуры USB-клавиатуры. Я уже пробовал / знаю следующее:

  1. Для установки индикаторов клавиатуры PS / 2 вы можете использовать CreateFile ("\\. \ Keybd", GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0); DeviceIoControl (hKeybd, IOCTL_KEYBOARD_SET_INDICATORS ...

  2. Чтобы установить светодиоды действительно HID-совместимой клавиатуры, вы можете использовать DirectInput, SendDeviceData со страницей использования 8.

  3. Вы можете использовать SendInput / keybd_event. Но это также изменит состояние. Поэтому, когда вы изменяете CAPS LOCK с помощью этого метода, пока пользователь печатает, он / она получит заглавные и строчные буквы: -)

Когда я исследовал метод 2 с двумя клавиатурами, функция SendDeviceData всегда возвращает E_NOTIMPL. Кажется, многие производители USB-клавиатур полагаются на встроенный драйвер HID. В этом случае драйвер HID сообщает, что клавиатура как улучшенная клавиатура ПК и говорит, что это «эмуляция». Но эмуляция Windows HID не поддерживает SendDeviceData.

Так что я подозреваю, что должен быть другой способ установить светодиоды клавиатуры. Windows должна разговаривать с USB-клавиатурой, чтобы установить светодиоды: -)

Есть идеи, как изменить светодиоды клавиатуры без изменения состояния клавиатуры?

1 Ответ

2 голосов
/ 21 марта 2011

Используйте HID Descriptor Tool для просмотра HID Report Descriptors для каждой клавиатуры. Клавиатура должна реализовать страницу использования 8 («светодиоды»). В противном случае управление этими индикаторами может быть недоступно через интерфейс USB или может быть выполнено нестандартным способом.

В качестве альтернативы, вы можете попробовать установить специальные состояния клавиш с помощью keybd_event и, возможно, Windows автоматически переключит светодиод для вас.

...