Введение

Microsoft API

В вычислительной технике DirectInput — это устаревший API Microsoft для сбора данных ввода от пользователя компьютера с помощью устройств ввода, таких как мышь, клавиатура или геймпад. Он также предоставляет систему сопоставления действий, позволяющую пользователю назначать конкретные действия в игре кнопкам и осям устройств ввода. Кроме того, он поддерживает устройства тактильной обратной связи (ввода/вывода). Microsoft представила новую библиотеку ввода под названием XInput, разработанную специально для контроллера Xbox 360. DirectInput и XInput предоставляют преимущества по сравнению с обычными событиями ввода Win32:

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

Хотя DirectInput является частью библиотеки DirectX, он не был существенно обновлен с DirectX 8 (2001–2002). Microsoft рекомендует новым приложениям использовать цикл сообщений Windows для ввода с клавиатуры и мыши вместо DirectInput (как указано в презентации Meltdown 2005), а для контроллеров использовать GameInput вместо DirectInput и других устаревших API, таких как XInput.

История

DirectX включал DirectInput с версии 1.0 (1995). Первоначально он обеспечивал полноценную поддержку только джойстиков, поскольку модули для мыши и клавиатуры лишь предоставляли обертки для стандартного Win32 API. DirectX версии 3.0 (1996) добавила поддержку клавиатур и мышей, а также улучшила поддержку джойстиков. DirectX 5.0 (1997) включал значительно улучшенную поддержку джойстиков, включая добавление тактильной обратной связи, увеличение количества кнопок, изменение базовой модели драйвера устройства и внедрение API на основе COM. Поддержка мыши также увеличила количество распознаваемых кнопок с четырех до восьми. В DirectX 7.0 (1999) DirectInput добавил долгожданную функцию распознавания отдельных мышей, аналогично отдельным джойстикам, но эта функция не работала с более поздней Windows XP, хотя она функционировала в Windows 98/Me и DirectX 9. DirectX 8.0 (2000), последняя версия с существенными изменениями, включала в себя сопоставление действий и расширенную поддержку различных типов устройств. Изначально Microsoft планировала, чтобы DirectInput обрабатывал все входы, но это не оправдалось. Microsoft больше не рекомендует использовать DirectInput для клавиатур или мышей и начала продвигать более новый XInput для контроллеров Xbox 360. В Windows Vista, Windows 7 и последующих версиях Windows встроенный интерфейс сопоставления действий был удален. DirectInput недоступен для приложений Windows Store.

XВход

XInput, устаревший API для контроллеров «нового поколения», был представлен в декабре 2005 года одновременно с выходом Xbox 360. Эта спецификация обеспечивала поддержку контроллеров Xbox 360 в Windows XP SP1 и более поздних версиях операционных систем и, по заявлению Microsoft, проще в программировании и требует меньше настройки, чем DirectInput. XInput совместим с DirectX версии 9 и выше.