DirectInput ve XUSB Cihazları

Windows üzerindeki XUSB sürücüsü, XINPUT DLL için çekirdek modu arabirimini uygular. Ortak denetleyici cihazıyla DirectInput API'sini kullanan eski başlıklar için iyi bir deneyim sağlamak için sürücü, DirectInput tarafından seçilen bir İnsan Arabirim Cihazı (HID) sınıf arabirimini de dışarı aktarır. Orijinal XINPUT sürümü için bir dizi oyun uygulamasındaki tipik davranışa göre XUSB'yi HID'ye eşlemeyi seçtik ve eşlemeyi daha yeni alt türleri için güncelleştirdik. Bu konuda eşleme açıklanmaktadır.

İnsan Arabirim Cihazı (HID)

HID standardı, ilk olarak Microsoft tarafından giriş cihazlarına yönelik protokolleri genelleştirmek üzere önerilen Evrensel Seri Veri Yolu (USB) komitesinin bir standardıdır. Bayt kodu açıklama dilinden oluşur ve oyun tuşlarını, fareleri, oyun çubuklarını, azaltma ve dümen kontrollerini ve çok eksenli denetleyicileri ifade edebilir. Bu standart çok genelleştirilmiş olduğundan, rastgele cihazlardan gelen girişleri kullanan yazılım yazmakta zorlanabilirsiniz. Bu nedenle, oyun odaklı DirectInput API'si için donanım üreticilerini sürücüleri aracılığıyla desteklemeye teşvik etmek için türlerin belirli bir alt eşlemesini geliştirdik.

  • HID v1.11 için USB Cihaz Sınıfı Tanımı

Önemli

Hid giriş cihazlarına RawInput API üzerinden erişebilir ve düşük düzeyli HID API aracılığıyla giriş raporlarını işleyebilirsiniz, ancak titreşim geri bildirimi DirectInputile çalışmaz.

Eşleştirmeleri

XUSB sürücüsü, hem XINPUT hem de DirectInput kullanımını desteklemek üzere cihazlar için hem XUSB sınıf arabirimi hem de HID sınıf arabirimi uygular. Bu eşleme, XUSB alt türü bilgilerini temel alır. Sürücü dört ayrı eşleme grubu uygular.

XUSB Alt Türü Eşleme
XINPUT_DEVSUBTYPE_GAMEPAD (Alt Tür 1) Gamepad
XINPUT_DEVSUBTYPE_WHEEL (Alt Tür 2) Tekerlek
XINPUT_DEVSUBTYPE_ARCADE_STICK (Alt Tür 3) Arcade Stick/Arcade Pad
XINPUT_DEVSUBTYPE_FLIGHT_STICK (Alt Tür 4) Uçuş Çubuğu
XINPUT_DEVSUBTYPE_DANCE_PAD (Alt Tür 5) Herhangi bir yeni alt tür için varsayılan
XINPUT_DEVSUBTYPE_GUITAR (Alt Tür 6) Gitar
XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE (Alt Tür 7)
XINPUT_DEVSUBTYPE_DRUM_KIT (Alt Tür 8)
XINPUT_DEVSUBTYPE_GUITAR_BASS (Alt Tür 11)
XINPUT_DEVSUBTYPE_ARCADE_PAD (Alt Tür 19)

Not

Aşağıdaki HID eşlemeleri statiktir. Bu, cihaz özellikleri raporu belirli bir düğmenin veya eksenin desteklenmediğini belirtse bile eşlemenin bu düğmeyi içermeye devam edeceği ancak her zaman bir kapalı durum veya orta değeri bildireceği anlamına gelir.

Gamepad

Bu varsayılan eşlemedir ve standart bir oyun yüzeyi etrafında tasarlanmıştır ve Gamepad HID kullanım türü olarak kullanıma sunulur.

Kontrol HID Kullanım Adı Kullanım Sayfası Kullanım Kimliği
Sol Çubuk X, Y 0x01 0x30, 0x31
Sağ Çubuk Rx, Ry 0x01 0x33, 0x34
Sol Tetikleyici + Sağ Tetikleyici Z* 0x01 0x32
D-Pad Yukarı, Aşağı, Sol, Sağ Şapka Anahtarı 0x01 0x39
A Düğme 1 0x09 0x01
B Düğme 2 0x09 0x02
X Düğme 3 0x09 0x03
Y Düğme 4 0x09 0x04
LB (sol tampon) Düğme 5 0x09 0x05
RB (sağ tampon) Düğme 6 0x09 0x06
GERİ Düğme 7 0x09 0x07
BAŞLAMAK Düğme 8 0x09 0x08
LSB (sol çubuk düğmesi) Düğme 9 0x09 0x09
RSB (sağ çubuk düğmesi) Düğme 10 0x09 0x0A

Not

(*): Bu, Z'nin döndürme için çoğu başlık tarafından beklenen ortalama davranışını sergilemesi için birleştirilir; Bu, DirectInput ve HID aracılığıyla tüm olası tetikleyici birleşim değerlerinin görmenin mümkün olmadığı anlamına gelir.

Arcade Stick/Arcade Pad

Bu, Arcade Stick oyun kumandası etrafında tasarlanan haritadır ve Gamepad HID kullanım türü olarak kullanıma sunulur. Arcade Pad bir Arcade Stick'e çok benzer, ancak daha küçük bir form faktöründe. Bu tasarımlar analog Sol Tetikleyici ve Sağ Tetikleyici yerine minimum ve maksimum eksen değerini raporlayan dijital düğmelerle değiştirir.

Kontrol HID Kullanım Adı Kullanım Sayfası Kullanım Kimliği
D-Pad Yukarı, Aşağı, Sol, Sağ Şapka Anahtarı 0x01 0x39
A Düğme 1 0x09 0x01
B Düğme 2 0x09 0x02
X Düğme 3 0x09 0x03
Y Düğme 4 0x09 0x04
LB (sol tampon) Düğme 5 0x09 0x05
RB (sağ tampon) Düğme 6 0x09 0x06
GERİ Düğme 7 0x09 0x07
BAŞLAMAK Düğme 8 0x09 0x08
Sol Tetikleyici Düğme 9 0x09 0x09
Sağ Tetikleyici Düğme 10 0x09 0x0A

Bu cihazlar ek denetimleri destekleyip desteklemeyebilir, ancak bunlar HID eşlemesi tarafından gösterilmez: Sol Çubuk, Sağ Çubuk, LSB (sol çubuk düğmesi) ve RSB (sağ çubuk düğmesi).

Tekerlek

Bu eşleme bir yarış tekerleği etrafında tasarlanmıştır ve Gamepad HID kullanım türü olarak kullanıma sunulur.

Kontrol HID Kullanım Adı Kullanım Sayfası Kullanım Kimliği
Tekerlek (Sol Çubuk X) X 0x01 0x30
Hızlandırıcı Pedalı (Sağ Tetikleyici) + Fren Pedalı (Sol Tetikleyici) Z* 0x01 0x32
D-Pad Yukarı, Aşağı, Sol, Sağ Şapka Anahtarı 0x01 0x39
A Düğme 1 0x09 0x01
B Düğme 2 0x09 0x02
X Düğme 3 0x09 0x03
Y Düğme 4 0x09 0x04
LB (sol tampon) Düğme 5 0x09 0x05
RB (sağ tampon) Düğme 6 0x09 0x06
LSB (sol çubuk düğmesi) Düğme 7 0x09 0x07
RSB (sağ çubuk düğmesi) Düğme 8 0x09 0x08
GERİ Düğme 9 0x09 0x09
BAŞLAMAK Düğme 10 0x09 0x0A

Not

(*): Bu, Z'nin fren ve hızlandırıcı kontrolleri için çoğu başlıkta beklenen ortalama davranışını sergilemesi için birleştirilir; Bu, DirectInputaracılığıyla tüm olası pedal kombinasyon değerlerini görmenin mümkün olmadığı anlamına gelir.

Uçuş Çubuğu

Bu eşleme bir uçuş çubuğu etrafında tasarlanmıştır ve HID kullanım türü Oyun Çubuğu olarak kullanıma sunulur.

Kontrol Kullanım Adı Kullanım Sayfası Kullanım Kimliği
Uçuş Çubuğu (Sol Çubuk) X, Y 0x01 0x30, 0x31
POV Şapkası (Sağ Çubuk) Rx, Ry 0x01 0x33, 0x34
Azaltma (Sağ Tetikleyici) Z 0x01 0x32
Dümen (Sol Tetikleyici) Rz 0x01 0x35
D-Pad Yukarı, Aşağı, Sol, Sağ Şapka Anahtarı 0x01 0x39
Birincil Silah (A) Düğme 1 0x09 0x01
İkincil Silah (B) Düğme 2 0x09 0x02
X Düğme 3 0x09 0x03
Y Düğme 4 0x09 0x04
LB (sol tampon) Düğme 5 0x09 0x05
RB (sağ tampon) Düğme 6 0x09 0x06
GERİ Düğme 7 0x09 0x07
BAŞLAMAK Düğme 8 0x09 0x08
LSB (sol çubuk düğmesi) Düğme 9 0x09 0x09
RSB (sağ çubuk düğmesi) Düğme 10 0x09 0x0A

Not

Bu, son Flight Stick tasarımını temel alır. Bu, erken Flight Stick tanımlarından farklı olduğundan, birçok cihazda eski ve yeni modeli destekleyen bir mod anahtarı vardır. Bu eşlemede yeni model varsayılır.