Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

115 lines
3.5 KiB

/*****************************************************************************
*
* DILib3.c
*
* Copyright (c) 1996 Microsoft Corporation. All Rights Reserved.
*
* Abstract:
*
* Objects exported statically into our library.
*
* Contents:
*
* c_dfDIJoystick
*
*****************************************************************************/
#include "dinputpr.h"
/*****************************************************************************
*
* @doc INTERNAL
*
* @global DIOBJECTDATAFORMAT | c_rgdoiDIJoy[] |
*
* Device object data formats for joystick-style access.
*
* @doc EXTERNAL
*
* @global DIDEVICEFORMAT | c_dfDIJoystick |
*
* Predefined device format for joystick-style access.
*
* When a device has been set to the joystick data format,
* the <mf IDirectInputDevice::GetDeviceState> function
* returns a <t DIJOYSTATE> structure, and the
* <mf IDirectInputDevice::GetDeviceData> function
* returns a <t DIDEVICEOBJECTDATA> whose <p dwOfs>
* field is a <c DIJOFS_*> value which describes the
* object whose data is being reported.
*
*****************************************************************************/
#pragma BEGIN_CONST_DATA
#define MAKEVAL(guid, f, type, aspect) \
{ &GUID_##guid, \
FIELD_OFFSET(DIJOYSTATE, f), \
DIDFT_##type | DIDFT_ANYINSTANCE | DIDFT_OPTIONAL, \
DIDOI_ASPECT##aspect, \
} \
#define MAKEBTN(n) \
{ 0, \
FIELD_OFFSET(DIJOYSTATE, rgbButtons[n]), \
DIDFT_BUTTON | DIDFT_ANYINSTANCE | DIDFT_OPTIONAL, \
DIDOI_ASPECTUNKNOWN, \
} \
static DIOBJECTDATAFORMAT c_rgodfDIJoy[] = {
MAKEVAL( XAxis, lX, AXIS, POSITION),
MAKEVAL( YAxis, lY, AXIS, POSITION),
MAKEVAL( ZAxis, lZ, AXIS, POSITION),
MAKEVAL(RxAxis, lRx, AXIS, POSITION),
MAKEVAL(RyAxis, lRy, AXIS, POSITION),
MAKEVAL(RzAxis, lRz, AXIS, POSITION),
MAKEVAL(Slider,rglSlider[0], AXIS, POSITION),
MAKEVAL(Slider,rglSlider[1], AXIS, POSITION),
MAKEVAL(POV, rgdwPOV[0], POV, UNKNOWN),
MAKEVAL(POV, rgdwPOV[1], POV, UNKNOWN),
MAKEVAL(POV, rgdwPOV[2], POV, UNKNOWN),
MAKEVAL(POV, rgdwPOV[3], POV, UNKNOWN),
MAKEBTN( 0),
MAKEBTN( 1),
MAKEBTN( 2),
MAKEBTN( 3),
MAKEBTN( 4),
MAKEBTN( 5),
MAKEBTN( 6),
MAKEBTN( 7),
MAKEBTN( 8),
MAKEBTN( 9),
MAKEBTN(10),
MAKEBTN(11),
MAKEBTN(12),
MAKEBTN(13),
MAKEBTN(14),
MAKEBTN(15),
MAKEBTN(16),
MAKEBTN(17),
MAKEBTN(18),
MAKEBTN(19),
MAKEBTN(20),
MAKEBTN(21),
MAKEBTN(22),
MAKEBTN(23),
MAKEBTN(24),
MAKEBTN(25),
MAKEBTN(26),
MAKEBTN(27),
MAKEBTN(28),
MAKEBTN(29),
MAKEBTN(30),
MAKEBTN(31),
};
const DIDATAFORMAT c_dfDIJoystick = {
sizeof(DIDATAFORMAT),
sizeof(DIOBJECTDATAFORMAT),
DIDF_ABSAXIS,
sizeof(DIJOYSTATE),
cA(c_rgodfDIJoy),
c_rgodfDIJoy,
};
#pragma END_CONST_DATA