📄 directinput8.pas
字号:
PDIDeviceInstanceW = ^TDIDeviceInstanceW;
TDIDeviceInstanceW = packed record
dwSize : LongWord;
guidInstance : TGUID;
guidProduct : TGUID;
dwDevType : LongWord;
tszInstanceName : Array [0..MAX_PATH-1] of WideChar;
tszProductName : Array [0..MAX_PATH-1] of WideChar;
guidFFDriver : TGUID;
wUsagePage : Word;
wUsage : Word;
end;
PDIDeviceInstance = ^TDIDeviceInstance;
{$IFDEF UNICODE}
TDIDeviceInstance = TDIDeviceInstanceW;
{$ELSE}
TDIDeviceInstance = TDIDeviceInstanceA;
{$ENDIF}
PDIDeviceObjectData = ^TDIDeviceObjectData;
TDIDeviceObjectData = packed record
dwOfs : LongWord;
dwData : LongWord;
dwTimeStamp : LongWord;
dwSequence : LongWord;
uAppData : Pointer;
end;
PDIDeviceObjectInstanceA = ^TDIDeviceObjectInstanceA;
TDIDeviceObjectInstanceA = packed record
dwSize : LongWord;
guidType : TGUID;
dwOfs : LongWord;
dwType : LongWord;
dwFlags : LongWord;
tszName : Array [0..MAX_PATH-1] of CHAR;
dwFFMaxForce : LongWord;
dwFFForceResolution : LongWord;
wCollectionNumber : Word;
wDesignatorIndex : Word;
wUsagePage : Word;
wUsage : Word;
dwDimension : LongWord;
wExponent : Word;
wReserved : Word;
end;
PDIDeviceObjectInstanceW = ^TDIDeviceObjectInstanceW;
TDIDeviceObjectInstanceW = packed record
dwSize : LongWord;
guidType : TGUID;
dwOfs : LongWord;
dwType : LongWord;
dwFlags : LongWord;
tszName : Array [0..MAX_PATH-1] of WCHAR;
dwFFMaxForce : LongWord;
dwFFForceResolution : LongWord;
wCollectionNumber : Word;
wDesignatorIndex : Word;
wUsagePage : Word;
wUsage : Word;
dwDimension : LongWord;
wExponent : Word;
wReserved : Word;
end;
PDIDeviceObjectInstance = ^TDIDeviceObjectInstance;
{$IFDEF UNICODE}
TDIDeviceObjectInstance = TDIDeviceObjectInstanceW;
{$ELSE}
TDIDeviceObjectInstance = TDIDeviceObjectInstanceA;
{$ENDIF}
PDIEnvelope = ^TDIEnvelope;
TDIEnvelope = packed record
dwSize : LongWord; (* sizeof(DIENVELOPE) *)
dwAttackLevel : LongWord;
dwAttackTime : LongWord; (* Microseconds *)
dwFadeLevel : LongWord;
dwFadeTime : LongWord; (* Microseconds *)
end;
PDIEffect = ^TDIEffect;
TDIEffect = packed record
dwSize : LongWord; (* sizeof(DIEFFECT) *)
dwFlags : LongWord; (* DIEFF_* *)
dwDuration : LongWord; (* Microseconds *)
dwSamplePeriod : LongWord; (* Microseconds *)
dwGain : LongWord;
dwTriggerButton : LongWord; (* or DIEB_NOTRIGGER *)
dwTriggerRepeatInterval : LongWord; (* Microseconds *)
cAxes : LongWord; (* Number of axes *)
rgdwAxes : PLongWord; (* Array of axes *)
rglDirection : PLongInt; (* Array of directions *)
lpEnvelope : PDIEnvelope; (* Optional *)
cbTypeSpecificParams : LongWord; (* Size of params *)
lpvTypeSpecificParams : Pointer; (* Pointer to params *)
dwStartDelay : LongWord; (* Microseconds *)
end;
PDIEffectInfoA = ^TDIEffectInfoA;
TDIEffectInfoA = packed record
dwSize : LongWord;
guid : TGUID;
dwEffType : LongWord;
dwStaticParams : LongWord;
dwDynamicParams : LongWord;
tszName : array [0..MAX_PATH-1] of CHAR;
end;
PDIEffectInfoW = ^TDIEffectInfoW;
TDIEffectInfoW = packed record
dwSize : LongWord;
guid : TGUID;
dwEffType : LongWord;
dwStaticParams : LongWord;
dwDynamicParams : LongWord;
tszName : array [0..MAX_PATH-1] of WCHAR;
end;
PDIEffectInfo = ^TDIEffectInfo;
{$IFDEF UNICODE}
TDIEffectInfo = TDIEffectInfoW;
{$ELSE}
TDIEffectInfo = TDIEffectInfoA;
{$ENDIF}
PDIEffEscape = ^TDIEffEscape;
TDIEffEscape = packed record
dwSize : LongWord;
dwCommand : LongWord;
lpvInBuffer : Pointer;
cbInBuffer : LongWord;
lpvOutBuffer : Pointer;
cbOutBuffer : LongWord;
end;
PDIFileEffect = ^TDIFileEffect;
TDIFileEffect = packed record
dwSize : LongWord;
GuidEffect : TGUID;
lpDiEffect : PDIEffect;
szFriendlyName : array [0..MAX_PATH-1] of AnsiChar;
end;
PDIJoyState = ^TDIJoyState;
TDIJoyState = packed record
lX : LongInt; (* x-axis position *)
lY : LongInt; (* y-axis position *)
lZ : LongInt; (* z-axis position *)
lRx : LongInt; (* x-axis rotation *)
lRy : LongInt; (* y-axis rotation *)
lRz : LongInt; (* z-axis rotation *)
rglSlider : array [0..1] of LongInt; (* extra axes positions *)
rgdwPOV : array [0..3] of LongWord; (* POV directions *)
rgbButtons : array [0..31] of Byte; (* 32 buttons *)
end;
PDIJoyState2 = ^TDIJoyState2;
TDIJoyState2 = packed record
lX : LongInt; (* x-axis position *)
lY : LongInt; (* y-axis position *)
lZ : LongInt; (* z-axis position *)
lRx : LongInt; (* x-axis rotation *)
lRy : LongInt; (* y-axis rotation *)
lRz : LongInt; (* z-axis rotation *)
rglSlider : array [0..1] of LongInt; (* extra axes positions *)
rgdwPOV : array [0..3] of LongWord; (* POV directions *)
rgbButtons : array [0..127] of Byte; (* 128 buttons *)
lVX : LongInt; (* x-axis velocity *)
lVY : LongInt; (* y-axis velocity *)
lVZ : LongInt; (* z-axis velocity *)
lVRx : LongInt; (* x-axis angular velocity *)
lVRy : LongInt; (* y-axis angular velocity *)
lVRz : LongInt; (* z-axis angular velocity *)
rglVSlider : array [0..1] of LongInt; (* extra axes velocities *)
lAX : LongInt; (* x-axis acceleration *)
lAY : LongInt; (* y-axis acceleration *)
lAZ : LongInt; (* z-axis acceleration *)
lARx : LongInt; (* x-axis angular acceleration *)
lARy : LongInt; (* y-axis angular acceleration *)
lARz : LongInt; (* z-axis angular acceleration *)
rglASlider : array [0..1] of LongInt; (* extra axes accelerations *)
lFX : LongInt; (* x-axis force *)
lFY : LongInt; (* y-axis force *)
lFZ : LongInt; (* z-axis force *)
lFRx : LongInt; (* x-axis torque *)
lFRy : LongInt; (* y-axis torque *)
lFRz : LongInt; (* z-axis torque *)
rglFSlider : array [0..1] of LongInt; (* extra axes forces *)
end;
TDIKeyboardState = array[0..255] of Byte;
PDIMouseState = ^TDIMouseState;
TDIMouseState = packed record
lX : LongInt;
lY : LongInt;
lZ : LongInt;
rgbButtons : array [0..3] of Byte; // up to 4 buttons
end;
PDIMouseState2 = ^TDIMouseState2;
TDIMouseState2 = packed record
lX : LongInt;
lY : LongInt;
lZ : LongInt;
rgbButtons : array [0..7] of Byte; // up to 8 buttons
end;
PDIPeriodic = ^TDIPeriodic;
TDIPeriodic = packed record
dwMagnitude : LongWord;
lOffset : LongInt;
dwPhase : LongWord;
dwPeriod : LongWord;
end;
PDIPropHeader = ^TDIPropHeader;
TDIPropHeader = packed record
dwSize : LongWord;
dwHeaderSize : LongWord;
dwObj : LongWord;
dwHow : LongWord;
end;
const
MAXCPOINTSNUM = 8;
type
PDIPropCal = ^TDIPropCal;
TDIPropCal = packed record
diph : TDIPropHeader;
lMin : LongInt;
lCenter : LongInt;
lMax : LongInt;
end;
PDIPropCPoints = ^TDIPropCPoints;
TDIPropCPoints = packed record
diph : TDIPropHeader;
dwCPointsNum : LongWord;
cp : array [0..MAXCPOINTSNUM-1] of TCPoint;
end;
PDIProPDWord = ^TDIProPDWord;
TDIProPDWord = packed record
diph : TDIPropHeader;
dwData : LongWord;
end;
//NEW DX8.1
PDIProPCalPOV = ^TDIProPCalPOV;
TDIProPCalPOV = packed record
diph : TDIPropHeader;
lMin : array[0..4] of LongInt;
lMax : array[0..4] of LongInt;
end;
//NEW DX8.1
PDIPropGUIDAndPath = ^TDIPropGUIDAndPath;
TDIPropGUIDAndPath = packed record
diph : TDIPropHeader;
guidClass : TGUID;
wszPath : array [0..MAX_PATH-1] of WideChar;
end;
PDIPropPointer = ^TDIPropPointer;
TDIPropPointer = packed record
diph : TDIPropHeader;
uData : Pointer;
end;
PDIPropRange = ^TDIPropRange;
TDIPropRange = packed record
diph : TDIPropHeader;
lMin : LongInt;
lMax : LongInt;
end;
PDIPropString = ^TDIPropString;
TDIPropString = packed record
diph : TDIPropHeader;
wsz : array [0..MAX_PATH - 1] of WideChar;
end;
PDIRampForce = ^TDIRampForce;
TDIRampForce = packed record
lStart : LongInt;
lEnd : LongInt;
end;
MAKEDIPROP = PGUID;
(****************************************************************************
*
* Class IDs
*
****************************************************************************)
const
CLSID_DirectInput8 : TGUID = '{25E609E4-B259-11CF-BFC7-444553540000}';
CLSID_DirectInputDevice8 : TGUID = '{25E609E5-B259-11CF-BFC7-444553540000}';
(****************************************************************************
*
* Predefined object types
*
****************************************************************************)
GUID_XAxis : TGUID = '{A36D02E0-C9F3-11CF-BFC7-444553540000}';
GUID_YAxis : TGUID = '{A36D02E1-C9F3-11CF-BFC7-444553540000}';
GUID_ZAxis : TGUID = '{A36D02E2-C9F3-11CF-BFC7-444553540000}';
GUID_RxAxis : TGUID = '{A36D02F4-C9F3-11CF-BFC7-444553540000}';
GUID_RyAxis : TGUID = '{A36D02F5-C9F3-11CF-BFC7-444553540000}';
GUID_RzAxis : TGUID = '{A36D02E3-C9F3-11CF-BFC7-444553540000}';
GUID_Slider : TGUID = '{A36D02E4-C9F3-11CF-BFC7-444553540000}';
GUID_Button : TGUID = '{A36D02F0-C9F3-11CF-BFC7-444553540000}';
GUID_Key : TGUID = '{55728220-D33C-11CF-BFC7-444553540000}';
GUID_POV : TGUID = '{A36D02F2-C9F3-11CF-BFC7-444553540000}';
GUID_Unknown : TGUID = '{A36D02F3-C9F3-11CF-BFC7-444553540000}';
(****************************************************************************
*
* Predefined product GUIDs
*
****************************************************************************)
GUID_SysMouse : TGUID = '{6F1D2B60-D5A0-11CF-BFC7-444553540000}';
GUID_SysKeyboard : TGUID = '{6F1D2B61-D5A0-11CF-BFC7-444553540000}';
GUID_Joystick : TGUID = '{6F1D2B70-D5A0-11CF-BFC7-444553540000}';
GUID_SysMouseEm : TGUID = '{6F1D2B80-D5A0-11CF-BFC7-444553540000}';
GUID_SysMouseEm2 : TGUID = '{6F1D2B81-D5A0-11CF-BFC7-444553540000}';
GUID_SysKeyboardEm : TGUID = '{6F1D2B82-D5A0-11CF-BFC7-444553540000}';
GUID_SysKeyboardEm2 : TGUID = '{6F1D2B83-D5A0-11CF-BFC7-444553540000}';
(****************************************************************************
*
* Predefined force feedback effects
*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -