Можете ли вы переназначить клавиши определенной клавиатуры?

К моему компьютеру подключены две клавиатуры. Обычная полноразмерная клавиатура и цифровая клавиатура. Я хочу «переназначить» клавиши цифровой клавиатуры, но не трогать всю клавиатуру. Итак, когда пользователь нажимает «5» на клавиатуре, он будет переназначен на клавишу «Media Play», но если бы та же самая «5» была нажата на клавиатуре полной клавиатуры, я бы получил «5». По сути, я хочу превратить эту отдельную цифровую клавиатуру в устройство управления мультимедиа.

К сожалению, я не знаю, как это сделать. В Windows есть функция «Raw Input», которая позволяет различать клавиатуры, но позволяет только читать клавиши, а не переназначать их. Есть крючки клавиатуры (низкий уровень и высокий уровень), которые могут переназначать нажатия клавиш, но они не различают клавиатуры.

Могу ли я заставить работать комбинацию этих двух методов? Для этого я должен быть уверен, что необработанное входное сообщение обработано до того, как сработает клавиатурный крючок. Так ли это?

Кроме того, я читал, что Windows по какой-то причине не позволяет использовать Raw Input и Keyboard Hooks в одном процессе. Я мог бы обойти это, создав 2 разных процесса, но это становится более хрупким из-за задержки связи (у клавишных перехватчиков очень ограниченное время, в течение которого они должны завершить свою работу).

Это вообще возможно?


person Vilx-    schedule 06.12.2012    source источник


Ответы (3)


В конце концов оказалось, что для этого мне нужен специальный драйвер клавиатуры. К счастью, я нашел готовое к взятию - Interception. Приложение готово и отлично работает. :)

person Vilx-    schedule 05.04.2013
comment
Это общедоступное приложение? Звучит очень полезно. - person Yary; 23.04.2015
comment
@Yary - нет, я не публиковал его, но он нуждается в доработке, чтобы он был полезен другим. Я жестко запрограммировал как аппаратный идентификатор клавиатуры, так и раскладку клавиш. В текущем состоянии, если вы хотите адаптировать его к своим потребностям, вы можете просто написать его с нуля. - person Vilx-; 23.04.2015
comment
Я устанавливаю программу, но не вижу, где ее вызвать, чтобы переназначить клавиатуру. - person Andi Jay; 29.09.2016
comment
@AndiJay - какая программа? My Mediaception, драйвер перехвата или что-то на форуме Orbiter? - person Vilx-; 29.09.2016
comment
Запуск install-interception.exe дает мне usage: C:\path\to\Interception\command line installer\install-interception.exe [/install | /uninstall]. Есть идеи, что означают эти инструкции? - person George Dimitriadis; 26.07.2017
comment
Дети в наши дни! ???? Вам нужно использовать командную строку и запустить install-interception.exe /install. - person Vilx-; 26.07.2017
comment
Я целыми днями искал такое решение. Большое спасибо. - person Rodrigo Borba; 18.01.2020
comment
@RodrigoBorba - В последнее время он стал ненадежным на моей машине с Windows 10. Он часто перестает посылать сигналы, а иногда даже полностью блокирует все клавиатуры, так что даже перезагрузка не помогает. В этом случае вам необходимо удалить его (экранная клавиатура Windows по-прежнему работает) и переустановить. - person Vilx-; 19.01.2020
comment
К сожалению, я это уже выяснил. Я все искал готовое решение получше, но не мог его найти. Я начинаю разрабатывать окончательное решение. Может быть, с открытым исходным кодом. Я поделюсь репозиторием, как только что-нибудь подготовлю. - person Rodrigo Borba; 19.01.2020
comment
@RodrigoBorba - Inception делает это с помощью специального драйвера. А драйверы - хитрые. Написание их - одно дело, но если вы хотите, чтобы он был установлен без особых проблем, вам нужно будет получить подпись Microsoft, а я не знаю, как это делается или каковы расходы на это. - person Vilx-; 19.01.2020
comment
Мне нужно больше об этом изучить, но я думаю, что можно установить неподписанный драйвер. Поскольку это будет решение с открытым исходным кодом, не составит большого труда проверить, является ли код вредоносным. - person Rodrigo Borba; 20.01.2020
comment
@RodrigoBorba - Конечно, можешь. В конце концов, вам нужно уметь их писать и тестировать, не так ли? Но есть обручи, через которые нужно прыгнуть, и это не будет удобно для конечного пользователя. - person Vilx-; 20.01.2020
comment
Это верно. По меньшей мере, у нас было бы какое-то решение ... - person Rodrigo Borba; 20.01.2020
comment
@RodrigoBorba - Если у вас получится, дайте мне знать! Для меня разработка драйверов - темная загадка. :) - person Vilx-; 20.01.2020
comment
Позвольте нам продолжить это обсуждение в чате. - person Rodrigo Borba; 20.01.2020

Я думаю, что luamacros (ранее hidmacros может делать то, что вы хотите, и имеет доступный исходный код.

person jamesdlin    schedule 08.07.2017
comment
Я не уверен. Я не могу толком разобраться в репозитории, но вижу следы клавиатурных перехватов и необработанного ввода. Как указано в вопросе, эти две технологии не могут достичь желаемого эффекта. - person Vilx-; 08.07.2017

В этой статье http://vlaurie.com/computers2/Articles/remap-keyboard.htm объясняется, как переназначить клавиши клавиатуры. Надеюсь, это поможет.

person Arie    schedule 05.04.2013
comment
К сожалению, это переназначает клавиши для ВСЕХ подключенных клавиатур. Совершенно не то, что я хочу. :( - person Vilx-; 05.04.2013