Rift of the NecroDancer

Rift of the NecroDancer

Not enough ratings
MIDI клавиатура или как играть через неё
By Anxwi
Небольшое руководство о том как забиндить клавиши и играть с MIDI клавиатуры.
   
Award
Favorite
Favorited
Unfavorite
Предисловие
Необходимо понимать, что используя данный способ у вас не будет работать удержание клавиш. А оно нужно, но не критично на таких врагах как драконы.
Такие вещи как комбо сбрасываться в таком случае не будут, но будет невозможно получить 1 заряд ульты в зонах где для её его получения игре присутствуют светящиеся дракончики, ибо там нужно именно их удерживать. (Ну вы поняли).
Что в демке, что в релизе, неоднократно пробовал реализовать удержание, но способ захвата клавиш у игры не позволяет адекватно и без сложных костылей, в виде написания макроса, это реализовать. В интернете подобных макросов нету, а в написании подобного я не силён.

Но я сам играю через MIDI, и проблем из-за дракончиков не испытываю.
Поэтому если хотите играть через MIDI, то способ рабочий.
Программа
Для использования макросов, самое простое что нам нужно - программа "HIDMacros". Её можно скачать с оф. сайта, просто вбив в поиске название данной проги.[www.hidmacros.eu]
Запуск программы
При запуске программы, нас встретит не большое окно.
Да, программа на английском, но она довольно проста, стабильна и не требовательная в сравнении с теми что я пробовал.
Настройка программы
Далее разберём создание макросов по пунктам.

1) Нажимаем на кнопочку "New".
В списке слева появится сам макрос.

2) Даём ему название.
Лично я советую дать ему называть просто буквой клавиши на клавиатуре к которую привязываете.

3) Нажимаем кнопку "Scan", и нажимаем клавишу MIDI клавиатуры которая будет отвечать у нас за нажатие.

4) В разделе "send keyboard sequence" жмём клавишу на клавиатуре которая будет использоваться.

5) Клавишу "A" мы настроили, теперь проделываем тоже самое с клавишами: W, D, S, и "Space" (он же пробел).
Так же для удобства советую добавить кнопку сброса уровня на "R".

6) Клавишу пробела добавляем отдельно, выполняя все пункты до 3-го включительно.
После скана MIDI клавиши переходим в "Scripted" и вводим следующий скрипт на нажатие пробела: HIDMacros.SendKeys CHR(32)
И в завершении жмём "Compile" внизу окна для сохранения.
В противном случае каждый раз при запуске программы вам нужно будет по-новой в строке "send keyboard sequence" нажимать пробел, т.к. он сбрасывается программой при старте по неизвестной мне причине.

В завершении жмём "Save configuration" в верхних вкладках программы, играем.

Опробовать бинды клавиш можно запустив обычный блокнот.

Работают бинды только при английской раскладке, т.к. мы настраивали всё на английском языке. Соответственно меняем раскладку клавиатуры на английскую при запуске игры, либо непосредственно в ней.
Дополнение
У себя я так же добавил дополнительные клавиши для второй руки с припиской "2". Чего и вам настоятельно рекомендую, ибо кисть может сильнее уставать при игре на MIDI клавишах.

Во вкладке "Devices" можно посмотреть подключённые устройства, в том числе и свою MIDI.

Для удобства можно просматривать нажатые клавиши, в том числе MIDI, непосредственно в самой программе, в разделе макросов, в строке "Event".

В заключении прикреплю расположение на MIDI пианино свой бинд клавиш.
Запуск программы с игрой в Steam
Для удобства, если не хотите запускать каждый раз программу отдельно перед игрой в параметрах запуска игра игры можно прописать одновременный запуск HIDMacros и игры.
Но т.к. Steam не поддерживает запуск одновременно двух исполняемых файлов через параметры запуска, мы будем вызывать запуск через консоль (командную строку).
Я подобным способом запускал Fallout 4 через Mod Organizer, конечно, без участия командной строки, просто указанием другого файла.
Ачивки так же считаются при таком способе, но не показываются в сплывающем окне стима и не работает оверлей.

1) Жмём ПКМ (правая кнопка мышки) по игре в своей библиотеке Steam, затем Свойства...

2) В разделе Общие вводим путь
cmd /c start "" "ПУТЬ К ВАШЕМУ ИСПОЛНЯЕМОМУ ФАЙЛУ ПРОГРАММЫ" & start "" %command%
У меня это выглядит так:
cmd /c start "" "D:\Users\Vital\Рабочий стол\Программы\Макросы\HidMacros\HIDMacros.exe" & start "" %command%

(Да, путь к самому *.exe файлу программы).
Его можно скопировать в свойствах ярлыка программы.
Достаточно нажать ПКМ (правая кнопка мышки) по ярлыку программы, затем Свойства и скопировать там поле Объект.
4 Comments
Anxwi  [author] Feb 11 @ 10:03am 
Если кто возьмётся, упрощу вам работу.
Порядок настройки:
K2K: in - Loop, out - пустой
VMPK: in - физическая midi, out - Loop
AHK: обработка MIDI-сигналов и эмуляция клавиш.
Порядок запуска программ:
LoopMIDI, VMPK, Игра, MIDI2Key.
Anxwi  [author] Feb 11 @ 10:03am 
Я пробовал разные настройки.
(И да, связка именно этих программ, без HIDMacros. Думаю, в таком виде это должно работать, возможно, с заглушкой через MIDI Parser, чтобы читать данные с виртуального MIDI-порта).
Если кто разбирается в скриптинге или сможет реализовать это — отпишитесь :lunar2019piginablanket:
(Либо если я сам найду способ реализовать удержание, добавлю это в руководство).
Anxwi  [author] Feb 11 @ 10:03am 
А затем нужно писать макрос вручную.
При поисках я не нашёл готовых или частично готовых скриптов для таких задач.
Я не силён в скриптинге, но пробовал разные способы.
По задумке "VMPK" и "K2K" связывают MIDI-сигналы между "loopMIDI" и "AutoHotkey".
"VMPK" нужен, чтобы убедиться, что клавиши отправляют сигналы правильно, а "K2K" может перенаправлять их.
Можно писать скрипты в HIDMacros, но у неё есть ограничения.
Anxwi  [author] Feb 11 @ 10:02am 
Пробовал разные обходные пути, но способ захвата клавиш у игры не позволяет адекватно без сложных костылей реализовать удержания.
Такие "костыли" я не нашёл, но пришёл к тому, что данный способ реализуем при написании макроса в "MIDIKey2Key"/"VMPK" для преобразования сигналов с клавиатуры в MIDI-сообщения.
С использованием виртуального порта "loopMIDI".
Так как в "VMPK", и возможно в "MIDIKey2Key" нет нативной функции для привязки стандартных клавиш к MIDI-нотам, лучше использовать встроенные клавиши VMPK для управления нотами, а затем связать это с "AutoHotkey".