Microsoft DirectX 8.1 (Visual Basic)

DIJOYSTATE2

Describes the state of a joystick device with extended capabilities. This type is used with the DirectInputDevice8.GetDeviceStateJoystick2 method.

Most applications do not need to use this type, which is for highly specialized controllers including force-feedback devices. For standard game controllers, use the DIJOYSTATE type and obtain data by calling DirectInputDevice8.GetDeviceStateJoystick.

Type DIJOYSTATE2 
    arx As Long
    ary As Long
    arz As Long
    aslider (0 to 1) As Long
    ax As Long
    ay As Long
    az As Long
    Buttons(0 To 127) As Byte
    frx As Long
    fry As Long
    frz As Long
    fslider(0 To 1) As Long
    fx As Long
    fy As Long
    fz As Long
    POV(0 To 3) As Long
    rx As Long
    ry As Long
    rz As Long
    slider(0 To 1) As Long
    vrx As Long
    vry As Long
    vrz As Long
    vslider(0 To 1) As Long
    vx As Long
    vy As Long
    vz As Long
    x As Long
    y As Long
    z As Long
End Type

Members

arx
X-axis angular acceleration.
ary
Y-axis angular acceleration.
arz
Z-axis angular acceleration.
aslider
Extra axis accelerations.
ax
X-axis acceleration.
ay
Y-axis acceleration.
az
Z-axis acceleration.
Buttons
Array of buttons. The high-order bit of the byte is set if the corresponding button is down and clear if the button is up or does not exist.
frx
X-axis torque.
fry
Y-axis torque.
frz
Z-axis torque.
fslider
Extra axis forces.
fx
X-axis force.
fy
Y-axis force.
fz
Z-axis force.
POV
Array of direction controllers, such as point-of-view hats. The position is indicated in hundredths of degrees clockwise from north (away from the user). The center position is normally reported as -1; but see Remarks. For indicators that have only five positions, the value for a controller will be -1, 0, 9,000, 18,000, or 27,000.
rx
X-axis rotation. If the joystick does not have this, the value is 0.
ry
Y-axis rotation. If the joystick does not have this axis, the value is 0.
rz
Z-axis rotation (often called the rudder). If the joystick does not have this axis, the value is zero.
slider
Two additional axes whose semantics depend on the joystick. Use the DirectInputDevice8.GetObjectInfo method to obtain semantic information about these values.
vrx
X-axis angular velocity.
vry
Y-axis angular velocity.
vrz
Z-axis angular velocity.
vslider
Array of extra axis velocities.
vx
X-axis velocity.
vy
Y-axis velocity.
vz
Z-axis velocity.
x
Information about the joystick x-axis (usually the left-right movement of a stick).
y
Information about the joystick y-axis (usually the forward-backward movement of a stick).
z
Information about the joystick z-axis (often the throttle control). If the joystick does not have this axis, the value is zero.

Remarks

You must prepare the device for access to a joystick with extended capabilities by calling the DirectInputDevice8.SetCommonDataFormat method, passing the DIFORMAT_JOYSTICK2 data format variable.

If an axis is in relative mode, then the appropriate member contains the change in position. If it is in absolute mode, then the member contains the absolute axis position.

Some drivers report the centered position of the POV indicator as 65,535. You can determine whether an indicator is centered as follows:

Dim POVCentered as Boolean
POVCentered = MyDijoystate2.POV(0) And &HFFFF

Note  Under Microsoft® DirectX® 7, sliders on some joysticks could be assigned to the Z axis, with subsequent code retrieving data from that member. Using DirectX 8, those same sliders will be assigned to the slider array. This should be taken into account when porting applications to DirectX 8. Make any necessary alterations to ensure that slider data is retrieved from the slider array.