Rift of the NecroDancer

Rift of the NecroDancer

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

Что в демке, что в релизе, неоднократно пробовал реализовать удержание, но способ захвата клавиш у игры не позволяет адекватно и без сложных костылей, в виде написания макроса, это реализовать. В интернете подобных макросов нету, а в написании подобного я не силён.

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

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

Сам скрипт вставляем по следующему принципу:
Заходим в папку с программой "HidMacros", прямо туда, где лежит файл "HIDMacros.exe".
Находим файл "hidmacros.xml", и нажимая по нему на ПКМ (правую кнопку мышки), выбираем действие "изменить". И ставляем с заменой текст что копируем ниже.

Далее держите 2 варианта скрипта-шаблона (потому что через "Scan" сами добавите свои клавиши, ибо мои могут не сработать, из-за разности "октав").

1) Вариант с настройкой клавиш для 1 руки.
google drive, txt документ[drive.google.com]
Или сам файл макроса (может не замениться). (Убрать " (1)" в конце названия)[drive.google.com]

2) Вариант с настройкой клавиш для 2-х рук.
google drive, txt документ[drive.google.com]
Или сам файл макроса (может не замениться)[drive.google.com]

(Если кидаете сам файл макроса, что я вставил на всякий случай, то не совеиту, лучше делать замену текста внутри, как я описал выше. Ибо файл может не замениться, и настройки скриптов не подтянутся).

Если откроете txt документ, то качивать не нужно, просто в браузере текст откроется. Останется лишь копировать -> вставить с заменой в файл и всё.
Настройка программы с нуля (для хацкеров)
Далее разберём создание макросов по пунктам.

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

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

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

4) Будем использовать простой скрипт нажатия ASCII, что вставляется во вкладке "Scripted".
После скана MIDI клавиши переходим в "Scripted" и вводим следующий скрипт на нажатие пробела: HIDMacros.SendKeys CHR(97)
И в завершении жмём "Compile" внизу окна для сохранения.

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

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

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

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

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

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

Альтернативынй способ
Возможность привязки клавиш через нажате непосредственно самой клавиши (работает только на включённой aнгл раскладке)
Работают бинды только при английской раскладке, т.к. мы настраивали всё на английском языке. Соответственно меняем раскладку клавиатуры на английскую при запуске игры, либо непосредственно в ней.

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