К моему компьютеру подключены две клавиатуры. Обычная полноразмерная клавиатура и цифровая клавиатура. Я хочу «переназначить» клавиши цифровой клавиатуры, но не трогать всю клавиатуру. Итак, когда пользователь нажимает «5» на клавиатуре, он будет переназначен на клавишу «Media Play», но если бы та же самая «5» была нажата на клавиатуре полной клавиатуры, я бы получил «5». По сути, я хочу превратить эту отдельную цифровую клавиатуру в устройство управления мультимедиа.
К сожалению, я не знаю, как это сделать. В Windows есть функция «Raw Input», которая позволяет различать клавиатуры, но позволяет только читать клавиши, а не переназначать их. Есть крючки клавиатуры (низкий уровень и высокий уровень), которые могут переназначать нажатия клавиш, но они не различают клавиатуры.
Могу ли я заставить работать комбинацию этих двух методов? Для этого я должен быть уверен, что необработанное входное сообщение обработано до того, как сработает клавиатурный крючок. Так ли это?
Кроме того, я читал, что Windows по какой-то причине не позволяет использовать Raw Input и Keyboard Hooks в одном процессе. Я мог бы обойти это, создав 2 разных процесса, но это становится более хрупким из-за задержки связи (у клавишных перехватчиков очень ограниченное время, в течение которого они должны завершить свою работу).
Это вообще возможно?