Введение
Microsoft API
В вычислительной технике DirectInput — это устаревший API Microsoft для сбора данных ввода от пользователя компьютера с помощью устройств ввода, таких как мышь, клавиатура или геймпад. Он также предоставляет систему сопоставления действий, позволяющую пользователю назначать конкретные действия в игре кнопкам и осям устройств ввода. Кроме того, он поддерживает устройства тактильной обратной связи (ввода/вывода). Microsoft представила новую библиотеку ввода под названием XInput, разработанную специально для контроллера Xbox 360. DirectInput и XInput предоставляют преимущества по сравнению с обычными событиями ввода Win32:
они позволяют приложению получать данные с устройств ввода, даже когда приложение находится в фоновом режиме;
они обеспечивают полную поддержку любых типов устройств ввода, а также тактильной обратной связи;
благодаря сопоставлению действий приложения могут получать данные ввода, не зная, какое устройство их сгенерировало.
they provide full support for any type of input device, as well as for haptic feedback
through action mapping, applications can retrieve input data without needing to know what kind of device generated that input
Хотя 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 и выше.