Как заставить игру увидеть геймпад: API ввода и конфликты

Если геймпад работает в Windows и других играх, а в одной конкретной — нет, почти всегда виновато одно из трёх: игра ждёт другой API (XInput/DirectInput), игра выбирает не то устройство ввода, либо мешает слой эмуляции/ремаппинга, создающий конфликты или «двойной ввод».

Оглавление

Быстрая проверка: это точно проблема игры?

  1. Нажмите Win + R → введите joy.cpl
  2. Выберите геймпад → Свойства → вкладка проверки
  3. Убедитесь, что кнопки/стики реагируют

Если в joy.cpl всё реагирует, железо и базовый драйвер в порядке — дальше решаем совместимость игры (XInput/DirectInput), приоритет устройств и конфликты софтового ввода.

Если в игре есть выбор «Тип подсказок кнопок» (например, стиль Xbox/PS), это косвенно подсказывает, какой режим ввода игра ожидает. Но решает всё равно фактическое обнаружение XInput/DirectInput.

XInput и DirectInput: что выбрать

  • XInput — самый распространённый режим для современных игр в Windows. Многие проекты «видят» только XInput.
  • DirectInput — более старый и универсальный, но некоторые игры поддерживают его частично или нестабильно.

Признаки несовпадения режима

  • Геймпад работает в системе, но в игре «как будто его нет»
  • В настройках игры нет раздела контроллера
  • Оси перепутаны, курки работают странно, часть кнопок не определяется

Что делать

  1. В настройках вашей программы/драйвера геймпада найдите переключатель XInput/DirectInput (если он есть) и попробуйте XInput.
  2. Если переключателя нет — используйте ровно один способ «перевода» DirectInput → XInput (через один выбранный слой ремаппинга/эмуляции).
  3. После смены режима полностью перезапустите игру (некоторые игры опрашивают устройства только при запуске).

Не включайте сразу несколько «переводчиков» в XInput. Два слоя эмуляции чаще ломают ввод, чем помогают.

Конфликты и двойной ввод: как убрать лишние слои

Конфликт выглядит так:

  • одно нажатие срабатывает дважды, меню «скачет»
  • игра показывает то одни, то другие подсказки кнопок
  • в системе появляются два геймпада: физический и виртуальный

Правило совместимости

Должен остаться один источник ввода для игры:

  • либо физический геймпад напрямую,
  • либо виртуальный XInput-геймпад, созданный одной программой.

Практический порядок действий

  1. Закройте всё, что может перехватывать ввод (ремапперы, оверлеи с управлением, эмуляторы).
  2. Запустите игру и проверьте.
  3. Если не работает — включите только один выбранный слой ремаппинга/эмуляции и проверьте снова.
  4. Если появился «двойной ввод», включите в вашей утилите опцию класса “hide physical controller” (скрыть физический HID от игр), оставив видимым только виртуальный.

Игра видит не тот контроллер: приоритет устройств

Некоторые игры берут «первое подходящее» HID-устройство. Это может быть второй геймпад, руль, HOTAS, виртуальное устройство или даже необычная клавиатура с HID-интерфейсом.

Что сделать:

  1. Временно отключите лишние устройства (USB/BT): второй контроллер, руль, джойстик.
  2. Перезапустите игру.
  3. Если помогло — возвращайте устройства по одному, чтобы найти конфликтующее.

Если нужно жёстче: в Диспетчере устройств временно отключайте лишние игровые/HID-устройства (делайте это осторожно, чтобы не отключить мышь/клавиатуру).

Мини-таблица «симптом → причина → действие»

Симптом в игреВероятная причинаЧто сделать первым
В системе работает, в игре не определяетсяИгра ждёт XInputПереключить геймпад/профиль на XInput или включить один слой эмуляции XInput
Кнопки нажимаются дважды, меню прыгаетИгра видит физический + виртуальныйОставить один слой, скрыть физический контроллер от игры
Подсказки кнопок постоянно меняютсяКонфликт нескольких слоёв вводаВыключить все перехватчики, включить только один
Работает в меню, но не в геймплееИгра переключает приоритет вводаУбрать дрейф стиков/мыши, отключить лишние HID, увеличить deadzone
Оси/курки перепутаныКривой DirectInput-профильПерейти на XInput или переназначить оси в одном ремаппере

Частые ошибки

  • Включили сразу два «улучшателя совместимости» (два ремаппера/эмулятора) и получили конфликт.
  • Включили «скрыть физический контроллер», но виртуальный не создаётся — в итоге игра не видит ничего.
  • Меняют настройки на лету, но не перезапускают игру (а она читает устройства только при старте).
  • Оставили подключённым второй контроллер/руль — игра выбрала его как «первый».

FAQ

Почему геймпад работает в других играх, а в этой — нет?

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

Что лучше использовать: XInput или DirectInput?

Для большинства современных игр — XInput. DirectInput имеет смысл для старых игр и некоторых специализированных устройств, но чаще требует ручной настройки.

Античит может мешать?

Да. Некоторые игры блокируют виртуальные контроллеры или нестандартные драйверы. Если после эмуляции игра перестаёт видеть ввод, пробуйте вариант «без виртуализации»: прямое подключение и XInput-режим, если он доступен на устройстве.