О проблеме
Проблема заключается в невозможности назначить Enter на какое-либо действие, назначить кнопки мыши на "шаг вперёд", или боковую кнопку мыши на что-либо. В общем, всё, что касается проблем с переназначением клавиш.
Решение проблемы
Решение я нашёл на одном из игровых форумов Великобритании. Оно оказалось по-настоящему гениальным и красивым. Вам понадобится скачать одну маленькую программку (с официального сайта и абсолютно бесплатно, это прога с открытым кодом по лицензии GNU). Запустить её надо будет только один раз — она пропишет себя в реестр — и забыть про её существование (только не удалять с компа и не перемещать в другую папку). Затем нужно написать скрипт специальными командами. Список этих команд с пояснениями также можно найти на официальном сайте проги, есть и русская версия. Но, применительно к данной проблеме, скрипт вам писать не надо будет. Я его уже написал (см. ниже). Вот такая схема примерно. Теперь конкретно.
О программе AutoHotkey
- Вам нужно скачать "zip file" в строчке "Install Autohotkey". Понятно дело, распаковать его и сразу поместить в нужную папку (где эта прога будет лежать много лет...).
- Ссылка на скачивание - www.autohotkey.com/download/
- Скачайте также русскоязычую инструкцию (если захотите создавать собственные скрипты):
- Ссылка на скачивание - www.script-coding.info/AutoHotkey/AutoHotkey.zip
- Теперь запустите программу AutoHotkey.exe, там будет вопрос о создании пробного скрипта, ответьте ДА. Всё. Больше саму программу запускать не понадобится.
- Создайте блокнотом файл с содержанием:
- a::b
- Сохраните его, переименуйте расширение с "*.txt" на "*.ahk", имя значения не имеет.
- Теперь попытайтесь открыть этот файл, винда спросит: "какой программой открывать это чудо?". Вам нужно выбрать тот самый файл AutoHotkey.exe и поставить галочку, чтоб такие файлы всегда открывались этой программой.
- То есть, вам просто нужно привязать расширение "*.ahk" к файлу AutoHotkey.exe
- Как только вы это сделали, удалить созданный вами файл *.ahk (с содержимым a::b).
Подготовка к использованию программы AutoHotkey
Зайдите в игру и назначьте те действия, которые вы хотите, но не можете переназначить на нужные вам клавиши, на какие-нибудь неиспользуемые в игре и находящиеся "у чёрта на рогах" клавиши. Например, вы хотите назначить действие на Enter. Для этого, на данном этапе, назначьте действие например на P. И запомните, что именно на P. Выходите из игры, желательно из Social Club тоже.
Скрипт и все о нем
Внимание! Скрипт содержит мои конкретные настройки. Вам нужны последние три строки. Меняйте их, назначая те, что вам удобны.
- Теперь откройте блокнот и вставьте в него вот этот скрипт:
#SingleInstance force
#InstallKeybdHook
#InstallMouseHook
#NoEnv
SendMode InputThenPlay
SetTimer, wr
return
wr:
WinGet, pname, ProcessName, A
if pname = GTAIV.exe
{
suspend, off
}
else
{
suspend, on
}
return
Enter::p
MButton::o
XButton1::i
- Сохраните файл, затем смените расширение на ahk.
А теперь положите его в папку с игрой, а ярлык на него — в автозагрузку Windows. Запустите скрипт (ну, или перезагрузитесь).
О скрипте
Если вы внимательно посмотрите на содержание моего скрипта, то увидите, что там есть и название загрузочного файла GTA IV. Внизу, последние три строчки — это "биндинг" клавиш. В принципе, это всё, что нужно знать о скрипте чтобы изменить назначение любых клавиш на любые другие в любой запущенной под Виндоусом программе/игре. Так что скрипт универсальный. Не только для GTA IV.
- Впишите вместо загрузочного файла GTAIV.exe любой другой и вместо одних клавиш — другие. Список команд есть в инструкции к AutoHotkey. Вот коротко:
- Enter Enter
- ! Alt
- ^ Ctrl
- + Shift
- < Левая из пары (например, <^ значит левый Ctrl)
- > Правая из пары
- LButton Левый глаз мышки
- RButton Правый глаз мышки
- MButton "Третий глаз" мышки
- WheelDown Колесо вниз
- WheelUp Колесо вверх
- XButton1 Четвёртая кнопка мыши (боковая)
- XButton2 Пятая кнопка мыши
Разрешается одновременно запускать несколько скриптов. А если внимательно почитаете инструкцию, то поймёте как все ваши скрипты записать в один (для удобства).
Заметьте, что переназначение клавиш будет включаться через 2.5 секунды после входа в игру и выключаться через 2.5 сек после выхода.
Принцип работы
Скрипт создаёт хук клавиатуры и мышки, заставляя ловить на лету нажатия нужных клавиш (только тех, которые используются в скрипте) и передавать их программе уже как другие клавиши. В моём примере нажатие Enter передаётся в игру как P, а P в игре забито под действие. Гениально и просто. Тот редкий случай, когда универсальность не идёт во вред качеству.
Предупреждение
Поскольку переназначенная вами клавиша расценивается программой (игрой) как другая, то и подсказки будут всплывать о нажатии тех, других клавиш, а если программа будет ждать от вас нажатия именно переназначенной клавиши, то желаемого эффекта не будет (так как прога будет получать другой код).
Альтернатива программе AutoHotkey
Если у кого-то когда-то почему-то что-то не получится с AutoHotkey, есть другая программа для той же цели. Называется XMouse, она вроде не такая функциональная, но попроще, тоже качается с официального сайта и тоже бесплатно. Но я ей не пользовался, так что не ручаюсь.
- Ссылка на скачивание - www.highrez.co.uk/downloads/XMouseButtonControl...
FAQ
В: Что означают буквы S и H на иконке скрипта в панели задач?
О: S — “Suspend Hotkeys” («приостановить действие горячих клавиш»), H — это просто “Hotkeys” (мол, горячие клавиши включены). Сам скрипт работает в обоих случаях.
В: Почему после применения скрипта не работает Enter на экране с вопросом о сохранении или выходе из игры (где надо ответить EnterДа или EscНет)?
О: Потому что в данном скрипте клавиша Enter перехватывается скриптом и расценивается как «действие». Игра же ждёт от вас нажатия именно Enter-а. Выход есть – чтобы ответить Да на таких экранах (когда курсора мыши не видно), нажимайте NumpadEnter (узкий Enter на цифровой клавиатуре).
Спасибо! Помогло!