Я пишу программное обеспечение Windows DirectX 11 на C ++, для которого я хотел бы получать информацию как с обычной клавиатуры, так и с 10-клавишной клавиатуры. Я хотел бы, чтобы вторичный пользователь мог вводить данные с 10-клавишной клавиатуры, не прерывая использование полной клавиатуры основным пользователем. Например, если основной пользователь печатает в текстовом поле, я бы хотел, чтобы дополнительный пользователь мог отправлять данные из 10 ключей в программное обеспечение для отдельной обработки, чтобы это не влияло на ввод текстового поля.
В настоящее время я использую DirectInput для мыши и клавиатуры. Но если кто-нибудь знает о решении через Windows API, я бы тоже подумал об этом.
Когда я создаю свое устройство клавиатуры в DirectInput, я в настоящее время использую значение GUID_SysKeyboard, которое объединяет обе клавиатуры в одну, так что мое программное обеспечение не может определить источник ввода с клавиатуры. Можно ли использовать EnumDevices для идентификации двух клавиатур и создания отдельных устройств DirectInput? Я полагаю, что так и будет, но я не уверен, как определить каждое устройство из структуры DIDEVICEINSTANCE, предоставляемой для обратного вызова EnumDevices. Я хотел бы сделать это как можно более универсальным, чтобы его можно было использовать с различными комбинациями и моделями / марками клавиатур.
Заранее спасибо за любую помощь или предложения!
(Примечание: я разместил этот же вопрос на GameDev.net)
Я считаю, что числа в верхнем ряду (под F-клавишами, конечно) имеют то же значение, что и номера клавиш, но для совместимости со всеми клавиатурами, а не только с клавиатурами, я бы предложил оставить их в верхнем ряду.
Других решений пока нет …