Directinput analogen Joystick Bereich
-
20-08-2019 - |
Frage
I verwenden Directeingabegeräte zu handhaben, I aufzuzählen Vorrichtungen und Elemente für jedes Gerät.
Bei Verwendung der Analog-Sticks auf meinem Gamepad, berichtet, dass sie Werte im Bereich von 0 bis 65.535. Ist das immer der Fall für alle Arten der absoluten Achse?
Wenn nicht: Gibt es eine Möglichkeit, die die Reichweite eines DX8 Eingangselement, um herauszufinden, DIDEVICEOBJECTDATA :: dwData (aufgezählt mit DIDFT_ABSAXIS)? Die einzige andere Option, die ich denken kann, ist eine hausgemachte interne Kalibrierung in meiner App zu verwenden und diesen Sound zu 80er Jahre um wahr zu sein.
Lösung 2
Wie Goz so ist es süß setzen, habe ich die folgenden, die gearbeitet:
dev->EnumObjects(EnumElementsCallback, 0, DIDFT_ALL); BOOL CALLBACK EnumElementsCallback(LPCDIDEVICEOBJECTINSTANCE dev, LPVOID) { if ((dev->dwType & DIDFT_ABSAXIS) != 0) { DIPROPRANGE range; range.diph.dwSize = sizeof(DIPROPRANGE); range.diph.dwHeaderSize = sizeof(DIPROPHEADER); range.diph.dwHow = DIPH_BYID; range.diph.dwObj = dev->dwType; if (lDevice->mDIDevice->GetProperty(DIPROP_RANGE, &range.diph) == DI_OK) { ... = range.lMin; ... = range.lMax; } } }
Andere Tipps
Können Sie das Angebot nicht erhalten mit GetProperty und vorbei in einer geeigneten DIPROPRANGE Struktur gefüllt werden? Verwenden Sie die DIPROP_RANGE GUID.
Von: http://www.wingmanteam.com/files/Tools /DXTweak/Readme.txt
Ein Spiel-Controller-Treiber in der Regel meldet Achsenpositionsinformation als ganzzahlige Werte zwischen 0 und 655 bis Direct. Directinput linear skaliert diese Werte bis zu 0 bis 65535.