Документация по MCab Mapper

описание   кнопки   оси   faq   автор   лицензия

Описание

MCab Mapper — программа для конвертации команд джойстика в команды клавиатуры, имеющая большое количество функций, специфичных для симуляторов поездов. Основные функции:

Программа намного сложнее обычных программ-мэпперов. С другой стороны, симуляторы поездов сами по себе имеют сложное управление, и, скорее всего, в более простых играх половина функций вам не потребуется.

Чего в программе нет

Кнопки и переключатели

Если запустить программу, на экране появится картинка наподобие такой:

Прежде чем использовать оси, их требуется настроить. Кнопки же можно использовать прямо сейчас. При двойном щелчке на кнопке появится такое окно:

Можно поставить команду на нажатие, удерживание и отпускание кнопки. Если клавиша поставлена на «нажатие», в момент нажатия даётся короткий импульс. Если же она поставлена на «удерживание», клавиша будет нажата всё время, пока кнопка удерживается. На удерживание нельзя установить многократное нажатие.

Аналогичным образом настраиваются переключатели видов. Переключатели считаются 8-позиционными, угол отклонения всегда округляется до 45°.

Внимание! Не рекомендуется ставить кнопку на удерживание, если можно поставить на нажатие.

Внимание! Когда окно Mapper’а активно, программа не выдаёт никаких команд. Для экспериментов запустите любую другую программу, например, «Блокнот».

Системные команды

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

Кнопка разговора

Сейчас всё большее распространение получает широкополосный интернет — а вместе с ним программы наподобие Teamspeak и Ventrilo. Я почти уверен: одна из кнопок вашего джойстика будет предназначена именно для разговора. Есть несколько способов реализовать это.

Парковка кнопок

(Предполагается, что тумблеры включаются по-советски — вверх.)

Представим себе такую штуку. В поездном симуляторе пантограф поднимается кнопкой «P». И опускается тоже кнопкой «P». А мы хотим всё это повесить на тумблер. Ставим «P» на нажатие и «P» на отпускание — и… Если тумблер был снизу, всё нормально работает. А если сверху, то всё наоборот: тумблер вниз — пантограф поднят.

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

Кнопки, подлежащие парковке, обозначаются знаком «Место стоянки».

Сброс кнопок в исходное положение происходит в трёх случаях. 1) При загрузке профиля игры. 2) Вручную по команде «Действия / Затребовать парковку осей». 3) При выполнении сответствующей системной команды.

Настройки совместимости

По команде «Профиль / Совместимость» можно настроить режим совместимости.

У программистов есть два «смертных греха», которые, тем не менее, встречаются в играх сплошь и рядом.

Задержки зависят от кадровой частоты игры, и обычно лежат в пределах 20—100 мс. Увеличивайте их экспериментальным путём, пока программа не начнёт отрабатывать кнопки в 100 % случаев. В режиме совместимости зелёная лампочка около имени джойстика становится синей ().

Да, в ZdSim ещё есть антидребезг клавиатуры. Нажимаешь на кнопку дважды очень быстро, а срабатывает всего один раз. Думаю, он введён специально против джойстиков с Mapper’ом — чтобы из бесплатной версии было невозможно построить тренажёр. Остаётся только гадать.

Оси

Начальная настройка осей

Вспомним ещё раз о о крестах около осей. MCab Mapper рассматривает каждую ось как многопозиционный переключатель. Поэтому, прежде чем устанавливать события на ось, надо настроить, сколько положений ось будет иметь и каковы их границы. Для этого вызовите «Настройки / Настройка джойстика».

Для каждой оси можно задать три варианта:

Пункт «Шум джойстика» задаёт электронный шум джойстика в промилле (1  = 0,1 %). То есть, если вы хотите задать, что шум осей не превышает 1,3 %, надо написать «13». Применяется в двух целях.

Назначение клавиатурных команд на ось

Так выглядит MCab Mapper с тремя настроенными осями и тремя незадействованными:

Вообще-то, на моём джойстике задействованы только три оси. Ось Y — «пустышка».

Делаем двойной щелчок на оси (или нажимаем Enter) и видим такую картину.

Поле «Назначенные клавиши» позволяет установить кнопки, которые нажимаются, когда ось сдвигается на одно положение вверх (соответственно, на положение вниз). Остальные поля позволяют включить особые функции.

Ограничение количества положений оси

Разные поезда имеют разное количество положений контроллеров и кранов. Поскольку аппаратный передвижной ограничитель сложен в исполнении, MCab Mapper предлагает программное ограничение. Например, если физически разведено 10 положений переключателя, а нам нужны только пять, вводим в поле «Количество положений» число 5 — и тогда, если переключатель находится в положениях с 5 до 10, Mapper всё равно будет выдавать «5» (и не будет генерировать никаких клавиш).

Парковка оси

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

Ресинхронизация оси

Ресинхронизация осей направлена на ту же проблему — рассинхронизацию физического переключателя и его виртуального аналога. Но борется она с другой её причиной — случайными сбоями.

Представьте себе, что тормоз находится на краю, в положении «Зарядка». Если нажать «Тормоз −1», тормоз, естественно, останется в том же положении. На этом и основана ресинхронизация. Каждый раз, когда ось встаёт в своё крайнее положение, Mapper выдаёт несколько дополнительных нажатий. Если тормоз в игре стоял действительно на краю, эти нажатия не повредят. Если же нет — нажатия выведут его на край.

Естественно, обе эти функции — полумеры, и машинисту не стоит крутить ручки, когда игра на паузе.

Перенумерация положений оси

И последняя галочка — «Перенумеровать положения по порядку» — служит для отключения перенумерации положений. О ней ниже.

Настройка положения

Большей частью окно похоже на окно настройки кнопки. Тем не менее, есть одна разница.

Перенумерация положений оси

Контроллер советских поездов представляет собой галетный переключатель с большим количеством положений — до 50. На переключателе моего тестера 30 положений, но попробуй такой найти! Самый большой переключатель, обнаруженный в каталогах «Чип и Дип», насчитывает 16 положений. В нашей реализации MCab’а положений всего 11. И что делать? Трудности усложняются особенностями поездов — например, в симуляторе EU07 нужно переместить контроллер в первое положение, подождать загорания индикатора и только тогда поднимать выше.

К счастью, Mapper позволяет любое положение «железного» переключателя связать с любым положением виртуального контроллера. Для этого нужно дважды щёлкнуть на положении и в поле «Номер положения оси» установить любое нужное вам число. Например, так.

В данном примере при переключении с 1-го положения на 2-е один раз нажимается ↑. Соответственно, при переключении с 2 на 1 один раз нажимается ↓. Когда же мы переключаемся с 2 на 3 (и с 3 на 2), кнопка нажимается 4 раза.

Часто задаваемые вопросы

Почему так сложно?

Программа сложна, потому что сложны поездные пульты! Если вы не фанат железных дорог, многое из того, что предлагает программа, вам просто не нужно. Существует большое количество других мэпперов, возможно, вы сочтёте их менее перегруженными.

А можно программу использовать для более приземлённых нужд, например, для управления медиаплеером с геймпада?

Ко-не-чно! Если вам нужны только кнопки и переключатели видов, вам не надо ничего делать, только запустить программу и настроить. Если нужно задействовать ещё и оси, прежде надо снять их положения.

На что вообще нужно снимать оси? Не лучше ли сделать, чтобы по умолчанию оси были уже настроены?

Сколько джойстиков, столько нюансов. Нет никакой возможности программно определить, является ось центрирующейся или нет — даже на USB-устройствах, не говоря уже про геймпортовые. Пусть пользователь сам настроит джойстик так, как он у него устроен.

Каким способом лучше снимать оси моего геймпада — как «Переключатель» или как «Непрерывные»?

Для дискретных осей (таких, как крестовина геймпада) это не имеет значения — любой из этих способов позволит запрограммировать три положения. Непрерывные же оси (аналоговые рычажки геймпада, ручку управления самолётом, руль, педали…) лучше регистрировать как непрерывные — это даст вам доступ к порогу срабатывания и гистерезису.

Я нажимаю на геймпаде вверх, Mapper пробивает кнопку «↑». Отпускаю, Mapper пробивает «↓».

Установите нажатия клавиш не на «Положение +1» и «Положение −1», а на вход в первое и последнее положение.

Я передвигаю непрерывную ось вверх, Mapper пробивает большое (случайное) количество нажатий ↑. Возвращаю ось, и снова пробивается несколько нажатий ↑, хотя на выход ничего не установлено.

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

Можно ли использовать программу вместе с другим мэппером джойстика? Вместе с игрой, поддерживающей джойстик?

Да. Кстати, покажите, чего не хватает в MCab Mapper’е — может, в следующей версии будет реализовано.

Для чего нужен модификатор Menu?

Для ZdSim’а Вячеслава Усова.

У меня несколько джойстиков. Как привязаться к нужному?
Что означает знак «прочие опасности» около имени джойстика?

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

Можно ли сделать имитацию нажатия Ctrl-Alt-Del?

Нет — ограничение Windows.

Как на мультимедийные клавиши (например, VK_Launch_App1) установить другое программы?

Смотрите в реестре HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey. Зная коды виртуальных кнопок, можно заставить любую другую клавишу запускать программу.

Насколько поддерживается Win98?

Программа протестирована под Win98 и WinXP. Каждая функция, которая по-разному работает в 98 и NT, закодирована в двух вариантах. Это обеспечило и полный Unicode, и полную совместимость. Тем не менее, нюансы есть.

Автор

Автор программы — Михаил Меркурьев (по загранпаспорту Mikhail Merkuryev).

e-mail и icq

Лицензия

Программа MCab Mapper распространяется по лицензии freeware. Это значит, что вы вправе:

Программу можно без разрешения автора включать в состав платного продукта, только если выполняется хотя бы одно из требований:

Три маленьких требования по неприкосновенности авторской программы, которые, надеюсь, не помешают распространять неофициальные патчи и модификации.

Автор, Михаил Меркурьев, не даёт никаких гарантий и не несёт никакой ответственности. Он только заявляет, что программа работает на его компьютере и не содержит намеренно установленного вредоносного кода.

Программа содержит Delphi DirectX9 SDK, распространяемый на условиях Mozilla Public License 1.1, в неизменном виде.