Рейтинг@Mail.ru

Как назначить медиакнопки в игре.

На многих современных клавиатурах вот уже много лет есть набор говнокнопок по запуску нахуй не нужных приложений, например калькулятора. И очень хочется как-то переназначить их на что-нибудь полезное.


Это можно сделать через фирменное приложение, ну например Setpoint для Logitech или Центр управления мышью и клавиатурой от Microsoft. Приложений от Майкрософт послала меня далеко и надолго, объявив что не обнаружила совместимого устройства – хоть у меня и самая что ни наесть настоящая Microsoft клавиатура.
Для Microsoft клавиатур также есть программа IntelliType, поддерживающая функцию назначения действий на медиакнопки.
На самом деле, все гораздо проще. Программы которые запускаются по нажатию этих кнопок прописаны в реестре Windows вот по этому адресу.
HKLM/software/microsoft/windows/currentversion/explorer/appkey/
Ну вот например номер 18 отвечает за калькулятор, и вот запускной файл – calc.exe. Соответственно, если мы заменим здесь имя этого файла на путь к нужному файлу, то будет запускаться другая программа. Альтернативно одаренные пытаются переименовать нужный им файл в calc.exe и заменить настоящий калькулятор, то мы так делать не будем. Путь проще всего получить создав ярлык, и скопировав оттуда путь к запускному файлу вместе с кавычками. Кавычки нужны, если в пути есть проблемы – ну например Program Files написано через пробел, значит кавычки нужны. Если пробелов нет, то можно и без них обойтись. Прописываем туда путь к запускному файлу WinRAR, перезагружаемся, и теперь по нажатию кнопки калькулятора запускается WinRAR, а не калькулятор. Это все конечно заебись, но хотелось бы использовать кнопки в играх! С этим возникает проблема. Дело в том, что игрушечки, ну например CS:GO или Dota 2, позволяют биндить только стандартные кнопки. А всякие медиа кнопки это уже нестандартные. Нестандартность заключается что их скан-коды состоят не из одной, а из двух пар цифр, и кстати говоря Valve в апдейтах своих игрушечек периодически это проебывает, и нажатие кнопки переключения трека например вызывает какие-то игровые действия. Конечно, если у вас клавиатура от какого-нибудь Razer, то там в комплекте есть говноутилита, которая позволяет забиндить специальные кнопки как игровые, но что делать если вы не ебетесь в жопу? Ну в общем-то идея простая – мы просто дублируем уже используемые в игре кнопки. Ну например остановка у нас буквой c – я специально выбрал латинскую букву совпадающую с русской, чтобы ты слепой долбоёб, следил за раскладкой клавиатуры, отключил свой сраный пунто свитчер и не ныл что мол изя хуйни насоветовал. Так вот, наша задача – чтобы при нажатии на кнопку калькулятора это выглядело так, как будто мы нажали на кнопку C. То есть еще раз, для тупых. В игре мы как назначали кнопку С, так и назначаем. Медиакнопку нигде не назначаем и не нажимаем! На медиакнопку через реестр мы подвешиваем программу, которая типа нажимает ту самую букву С. Самый простой способ который я нашел – это написать на AHK скрипт из трех строчек
{
Send c
}

скомпилить его в .exe файл, и подвесить вместо того самого calc.exe. Если вы хотите назначить несколько кнопок, то вам нужно будет создать с разными биндами разные скрипты, скомпилить их в exe под разными названиями и подвесить их в реестр под записями остальных кнопок. Ну 18 – это калькулятор, а дальше разберетесь. Не забудьте прописывать полные пути к файлу. Итак, на кнопку калькулятора мы подвесили программку, которая эмулирует нажатие буквы С на клавиатуре, а эта буква в настройках прописала как команда остановки. Как видите работает, но немного подтормаживает, потому что наша программа выполняется медленно. Как это дело ускорить – можно прочитать в FAQ по работе с играми через AHK. Я пробовал использовать утилиту
NirCmdc sendkeypress c
К сожалению, в реестр ее прописать не получилось вместе с командой, а батник реестр не сожрал. Пробовал написать простенький vbs скрипт
set WshShell = WScript.CreateObject(“WScript.Shell”)
WshShell.SendKeys “{c}”

он работает пожалуй быстрее всего, но почему-то нужно еще Enter нажимать. Что касается готового софта, то помимо sendkey, уже есть готовый скрипт на AHK имитирующей нажатие любой буквы, а также программа Sharpkeys для упрощения переназначения кнопок клавиатуры через реестр Windows. Ссылки на все найдете на моем сайте. Так что способы есть, в Windows 8 они работают, однако в Windows 10 почему-то в этих местах в реестре пусто. Тем не менее, на моем сайте сможете скачать .reg файл по прописыванию этих настроек в реестр и попробовать.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\15]
“Association”=”mailto”

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\16]
“Association”=”.cda”

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\17]
“ShellExecute”=”::{20D04FE0-3AEA-1069-A2D8-08002B30309D}”

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\18]
“ShellExecute”=”\”c:\\1\\NirCmdc sendkeypress c\””

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\7]
“Association”=”\”C:\\Program Files (x86)\\asdfr.vbs\””

Другой интересной бесплатной программой для переназначения кнопок является MKey

Кроме того, можно запустить Auto Hot Key в фоне, со следующим скриптом:

Launch_App2::
{
send, “кнопка которое хотите использовать”
}
return

Launch_App2 – это одна из медиакнопок, полный список можно кнопок которые можно переназначить смотрите здесь.

Leave a Comment