О проблеме

Проблема заключается в невозможности назначить Enter на какое-либо действие, назначить кнопки мыши на "шаг вперёд", или боковую кнопку мыши на что-либо. В общем, всё, что касается проблем с переназначением клавиш.

Решение проблемы

Решение я нашёл на одном из игровых форумов Великобритании. Оно оказалось по-настоящему гениальным и красивым. Вам понадобится скачать одну маленькую программку (с официального сайта и абсолютно бесплатно, это прога с открытым кодом по лицензии GNU). Запустить её надо будет только один раз — она пропишет себя в реестр — и забыть про её существование (только не удалять с компа и не перемещать в другую папку). Затем нужно написать скрипт специальными командами. Список этих команд с пояснениями также можно найти на официальном сайте проги, есть и русская версия. Но, применительно к данной проблеме, скрипт вам писать не надо будет. Я его уже написал (см. ниже). Вот такая схема примерно. Теперь конкретно.

О программе AutoHotkey

  1. Вам нужно скачать "zip file" в строчке "Install Autohotkey". Понятно дело, распаковать его и сразу поместить в нужную папку (где эта прога будет лежать много лет...).
  1. Скачайте также русскоязычую инструкцию (если захотите создавать собственные скрипты):
  1. Теперь запустите программу AutoHotkey.exe, там будет вопрос о создании пробного скрипта, ответьте ДА. Всё. Больше саму программу запускать не понадобится.

  1. Создайте блокнотом файл с содержанием:
  • a::b
  1. Сохраните его, переименуйте расширение с "*.txt" на "*.ahk", имя значения не имеет.

  1. Теперь попытайтесь открыть этот файл, винда спросит: "какой программой открывать это чудо?". Вам нужно выбрать тот самый файл AutoHotkey.exe и поставить галочку, чтоб такие файлы всегда открывались этой программой.

  1. То есть, вам просто нужно привязать расширение "*.ahk" к файлу AutoHotkey.exe

  1. Как только вы это сделали, удалить созданный вами файл *.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, она вроде не такая функциональная, но попроще, тоже качается с официального сайта и тоже бесплатно. Но я ей не пользовался, так что не ручаюсь.

FAQ

В: Что означают буквы S и H на иконке скрипта в панели задач?

О: S — “Suspend Hotkeys” («приостановить действие горячих клавиш»), H — это просто “Hotkeys” (мол, горячие клавиши включены). Сам скрипт работает в обоих случаях.


В: Почему после применения скрипта не работает Enter на экране с вопросом о сохранении или выходе из игры (где надо ответить EnterДа или EscНет)?

О: Потому что в данном скрипте клавиша Enter перехватывается скриптом и расценивается как «действие». Игра же ждёт от вас нажатия именно Enter-а. Выход есть – чтобы ответить Да на таких экранах (когда курсора мыши не видно), нажимайте NumpadEnter (узкий Enter на цифровой клавиатуре).
Нравится17
Комментарии
    B
    i
    u
    Спойлер