2016-12-10 15 views
3

Я хочу написать приложение Windows, которое обращается к джойстику. Это просто очень простое приложение, которое считывает значения и отправляет их на сервер, поэтому я не использую рамки программирования игр. Однако я смущен тем, какой API использовать.Как получить доступ к джойстику на окнах без устаревших способов?

Я посмотрел API-интерфейс мультимедиа-джойстика, но это описано как замененное DirectInput. Поэтому я посмотрел на DirectInput, но это также устарело в пользу XInput. Однако в документации XInput говорится только о контроллерах Xbox360 и говорится, что она не поддерживает «устаревшие устройства DirectInput».

Microsoft перевела весь тип использования HID-джойстика в мусорную корзину и отказалась от поддержки их в пользу своих собственных продуктов-контролеров, или я что-то пропустил?

+0

Я использую геймпад Logitech F710 в Windows, который поддерживает режимы DInput и XInput (есть физический переключатель). XInput не ограничивается только продуктами Microsoft. –

+2

Microsoft отметили большинство (если не все) их реализации стека ввода * «устарело» *, без явной замены оператора. Я бы использовал [DirectInput] (https://msdn.microsoft.com/en-us/library/windows/desktop/ee416842.aspx) для обработки ввода джойстика. DirectInput по-прежнему активно поддерживается и будет в обозримом будущем. В качестве альтернативы вы можете оценить [Сырой вход] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms645536.aspx) и посмотреть, можно ли это использовать для ввода джойстика. Это немного проще настроить, без всей COM-инфраструктуры DirectX. – IInspectable

+1

Печально, что сила-обратная связь (за пределами «грохота») отнесена к «наследию». –

ответ

1

Наиболее распространенным решением является использование комбинации XInput и DirectInput, чтобы ваше приложение могло правильно обращаться к устройствам обоих типов. Microsoft даже предоставляет instructions on how to do this.

Обратите внимание, что DirectInput недоступен для приложений Windows Store, поэтому, если вы планируете распространять туда, это не вариант.

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