n1ro°
RU

Компьютеры · Инструкция

XInput или DirectInput для геймпада: разница и выбор режима в Windows

XInput или DirectInput для геймпада — выбор зависит от того, какой интерфейс ожидает игра.

Редакция N1RO · Проверено

Короткий ответ

Начните с XInput, если игра ожидает стандартный Xbox-подобный геймпад; DirectInput выбирайте для старого ПО или устройств, которые игра видит только через legacy-интерфейс. После смены режима переподключите контроллер и заново проверьте кнопки.

Что меняется при переключении XInput и DirectInput

XInput и DirectInput — не просто два названия одного драйвера. Microsoft описывает XInput как API для XUSB-контроллеров и отдельно сравнивает его с DirectInput, который появился раньше и обслуживает более широкий класс legacy-устройств. Для пользователя это проявляется в том, как игра обнаруживает геймпад, какие оси видит, как подписывает кнопки и поддерживает ли вибрацию.

Современная игра с типовой поддержкой Xbox-контроллера обычно ожидает XInput: стандартные A/B/X/Y, два стика, D-pad, плечевые кнопки и отдельные триггеры. Это снижает количество ручной настройки. В DirectInput игра может получить HID-представление того же устройства, но сама должна корректно интерпретировать оси и кнопки. Microsoft прямо отмечает, что XUSB-драйвер также экспортирует HID-интерфейс для совместимости с legacy DirectInput-приложениями.

На дешёвых или универсальных геймпадах переключатель часто обозначен X/D. Его точное поведение определяется производителем: иногда режим меняет идентификатор устройства, иногда — раскладку кнопок и осей. Поэтому полезно считать положение переключателя частью конфигурации игры и не менять его в процессе запуска.

Совет: После смены X/D полностью закройте игру и переподключите контроллер. Многие игры перечисляют устройства только при запуске и не перестраивают раскладку на лету.

XInput и DirectInput в практическом сравнении

  • Современные PC-игры с Xbox-раскладкой. Обычно предпочтителен. Может требовать ручной настройки
  • Старые игры. Иногда не поддерживается. Часто нужен legacy-режим
  • Стандартные триггеры. Игра получает типовую XInput-модель. У XUSB→HID есть особенности отображения осей
  • Нестандартные контроллеры. Ограничен моделью XInput. Исторически гибче для разных HID-устройств

Важно: Не делайте вывод «DirectInput хуже». Для старой игры именно он может быть единственным рабочим вариантом; проблема не в качестве API, а в том, какой интерфейс ожидает конкретная программа.

Как выбрать рабочий режим без хаотичных настроек

  1. Закройте игру и Steam/лаунчер, если они могут перехватывать контроллер.
  2. Переведите геймпад в XInput, переподключите его и запустите проверку кнопок в Windows или в самой игре.
  3. Проверьте оба стика, D-pad, A/B/X/Y, LB/RB и особенно оба триггера. Не ограничивайтесь одной кнопкой Start.
  4. Если игра не видит устройство или неверно назначает оси, закройте её, переключите геймпад в DirectInput и подключите заново.
  5. В старой игре откройте меню controller/joystick и вручную назначьте оси и кнопки, если такая функция есть.
  6. Если через Steam включена эмуляция Steam Input, протестируйте отдельно с ней и без неё, чтобы не смешивать аппаратный режим и программное преобразование.

Предупреждение: Одновременно менять X/D, Steam Input и внутриигровую раскладку — плохая диагностика. Меняйте по одному фактору и после каждого шага повторяйте один и тот же тест.

Почему кнопки могут «переехать», а триггеры вести себя странно

DirectInput не гарантирует, что любая современная Xbox-подобная раскладка будет представлена игре ровно так же, как в XInput. В документации Microsoft для XUSB→HID показано статическое сопоставление: стики и кнопки имеют свои HID usage, а левый и правый триггеры в DirectInput-представлении объединяются на оси Z. Это сделано ради поведения, ожидаемого legacy-приложениями, но приводит к ограничению: все комбинации одновременного нажатия обоих триггеров через такое отображение различить нельзя.

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

Есть и обратная ситуация: старое приложение умеет только DirectInput и вообще не видит чистый XInput-режим конкретного стороннего контроллера. Тогда ручное назначение DirectInput остаётся правильным решением. Важно тестировать реальную игру, а не только системную панель: разные программы читают разные API.

Как тестировать совместимость без лишних драйверов

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

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

Особенно внимательно проверяйте аналоговые органы: стики должны плавно проходить диапазон, а триггеры — меняться без скачков. Цифровая кнопка может скрыть проблему, которая заметна только на оси. После выбора рабочего режима сохраните его и не переключайте X/D между запусками одной игры, иначе сохранённый mapping может перестать соответствовать устройству.

Что выбрать для конкретной игры: практическая матрица

Если игра выпущена в эпоху Xbox 360/One и в меню уже нарисованы A/B/X/Y, первым тестом должен быть XInput. Он даёт игре ожидаемую модель стандартного контроллера и обычно избавляет от ручной привязки осей. Если игра запускается через Steam, сначала проверьте её поведение с нативным XInput без дополнительных remapper-программ: иначе можно ошибочно принять программное преобразование за аппаратный режим геймпада.

Для старого авиасимулятора, эмулятора или PC-игры, где меню говорит joystick, axis или DirectInput, имеет смысл проверить D-режим. В нём приложение может увидеть больше исторически привычных HID-осей и кнопок, но раскладку часто приходится назначать вручную. Сначала привяжите стики и D-pad, затем кнопки, после этого отдельно проверьте LT/RT: именно триггеры у XUSB-устройств имеют документированное ограничение DirectInput-представления.

Для файтингов и ретро-игр важнее не название API, а отсутствие двойного ввода и стабильная нумерация кнопок. Если приложение одновременно видит физический DirectInput-геймпад и виртуальный XInput-контроллер, одно нажатие может срабатывать дважды или управлять двумя игроками. Это лечится не сменой всех назначений подряд, а устранением лишнего слоя: оставить либо нативное устройство, либо один эмулятор.

Для современных игр с собственной нативной поддержкой PlayStation-контроллеров возможен третий вариант: игра может получать расширенные функции напрямую, а принудительная XInput-эмуляция скроет тип исходного устройства. Поэтому универсальное правило звучит так: использовать самый прямой интерфейс, который игра официально понимает, и добавлять преобразование только когда без него контроллер не работает или mapping явно неверен. Ещё один полезный признак — названия кнопок в меню назначения. Если игра подписывает оси как X, Y, Z, Rx/Ry и предлагает выбрать joystick device, она, вероятно, работает в логике DirectInput/HID. Если интерфейс сразу говорит Xbox Controller и использует LT/RT как отдельные элементы, XInput выглядит естественнее. Это не абсолютный тест реализации, но он помогает выбрать первый режим без случайного перебора.

Совет: Записывайте режим X/D вместе с настройкой конкретной игры — это предотвращает повторную диагностику после переподключения.

Что проверить перед выводом, что геймпад неисправен

  • В каком режиме X/D контроллер был подключён при запуске игры.
  • Есть ли устройство в Windows и меняются ли оси при нажатиях.
  • Не включён ли Steam Input одновременно с нативной поддержкой игры.
  • Одинаково ли проблема проявляется в двух разных играх.
  • Не связана ли проблема только с LT/RT в DirectInput.

Совет: Если физическая кнопка не регистрируется ни в XInput, ни в DirectInput и ни в одном тесте, тогда программная несовместимость становится менее вероятной — переходите к проверке самого контроллера.

Что учитывать

DirectInput не гарантирует, что любая современная Xbox-подобная раскладка будет представлена игре ровно так же, как в XInput. В документации Microsoft для XUSB→HID показано статическое сопоставление: стики и кнопки имеют свои HID usage, а левый и правый триггеры в DirectInput-представлении объединяются на оси Z. Это сделано ради поведения, ожидаемого legacy-приложениями, но приводит к ограничению: все комбинации одновременного нажатия обоих триггеров через такое отображение различить…

Источники и проверка

Фактическая часть сверена по первичным источникам (в т.ч. Comparison of XInput and DirectInput features). Пример и формулировки — редакция N1RO на 2026-09-21.