📄 directinput.pas
字号:
{$ENDIF} (* DIRECTINPUT_VERSION > 0x0700 *)
{$IFDEF DIRECTINPUT_VERSION_5} (* #if(DIRECTINPUT_VERSION >= 0x0500) *)
(* These structures are defined for DirectX 3.0 compatibility *)
type
PDIDeviceObjectInstanceDX3A = ^TDIDeviceObjectInstanceDX3A;
PDIDeviceObjectInstanceDX3W = ^TDIDeviceObjectInstanceDX3W;
PDIDeviceObjectInstanceDX3 = PDIDeviceObjectInstanceDX3A;
DIDEVICEOBJECTINSTANCE_DX3A = packed record
dwSize: DWORD;
guidType: TGUID;
dwOfs: DWORD;
dwType: DWORD;
dwFlags: DWORD;
tszName: array [0..MAX_PATH-1] of AnsiChar;
end;
{$EXTERNALSYM DIDEVICEOBJECTINSTANCE_DX3A}
DIDEVICEOBJECTINSTANCE_DX3W = packed record
dwSize: DWORD;
guidType: TGUID;
dwOfs: DWORD;
dwType: DWORD;
dwFlags: DWORD;
tszName: array [0..MAX_PATH-1] of WideChar;
end;
{$EXTERNALSYM DIDEVICEOBJECTINSTANCE_DX3W}
DIDEVICEOBJECTINSTANCE_DX3 = DIDEVICEOBJECTINSTANCE_DX3A;
{$EXTERNALSYM DIDEVICEOBJECTINSTANCE_DX3}
TDIDeviceObjectInstanceDX3A = DIDEVICEOBJECTINSTANCE_DX3A;
TDIDeviceObjectInstanceDX3W = DIDEVICEOBJECTINSTANCE_DX3W;
TDIDeviceObjectInstanceDX3 = TDIDeviceObjectInstanceDX3A;
{$ENDIF} (* DIRECTINPUT_VERSION >= 0x0500 *)
type
PDIDeviceObjectInstanceA = ^TDIDeviceObjectInstanceA;
PDIDeviceObjectInstanceW = ^TDIDeviceObjectInstanceW;
PDIDeviceObjectInstance = PDIDeviceObjectInstanceA;
DIDEVICEOBJECTINSTANCEA = packed record
dwSize: DWORD;
guidType: TGUID;
dwOfs: DWORD;
dwType: DWORD;
dwFlags: DWORD;
tszName: array[0..MAX_PATH-1] of AnsiChar;
{$IFDEF DIRECTINPUT_VERSION_5} (* #if(DIRECTINPUT_VERSION >= 0x0500) *)
dwFFMaxForce: DWORD;
dwFFForceResolution: DWORD;
wCollectionNumber: Word;
wDesignatorIndex: Word;
wUsagePage: Word;
wUsage: Word;
dwDimension: DWORD;
wExponent: Word;
wReportId: Word;
{$ENDIF} (* DIRECTINPUT_VERSION >= 0x0500 *)
end;
{$EXTERNALSYM DIDEVICEOBJECTINSTANCEA}
DIDEVICEOBJECTINSTANCEW = packed record
dwSize: DWORD;
guidType: TGUID;
dwOfs: DWORD;
dwType: DWORD;
dwFlags: DWORD;
tszName: array[0..MAX_PATH-1] of WideChar;
{$IFDEF DIRECTINPUT_VERSION_5} (* #if(DIRECTINPUT_VERSION >= 0x0500) *)
dwFFMaxForce: DWORD;
dwFFForceResolution: DWORD;
wCollectionNumber: Word;
wDesignatorIndex: Word;
wUsagePage: Word;
wUsage: Word;
dwDimension: DWORD;
wExponent: Word;
wReportId: Word;
{$ENDIF} (* DIRECTINPUT_VERSION >= 0x0500 *)
end;
{$EXTERNALSYM DIDEVICEOBJECTINSTANCEW}
DIDEVICEOBJECTINSTANCE = DIDEVICEOBJECTINSTANCEA;
{$EXTERNALSYM DIDEVICEOBJECTINSTANCE}
TDIDeviceObjectInstanceA = DIDEVICEOBJECTINSTANCEA;
TDIDeviceObjectInstanceW = DIDEVICEOBJECTINSTANCEW;
TDIDeviceObjectInstance = TDIDeviceObjectInstanceA;
type
TDIEnumDeviceObjectsCallbackA = function (var lpddoi: TDIDeviceObjectInstanceA; pvRef : Pointer): BOOL; stdcall;
{$EXTERNALSYM TDIEnumDeviceObjectsCallbackA}
TDIEnumDeviceObjectsCallbackW = function (var lpddoi: TDIDeviceObjectInstanceW; pvRef : Pointer): BOOL; stdcall;
{$EXTERNALSYM TDIEnumDeviceObjectsCallbackW}
TDIEnumDeviceObjectsCallback = TDIEnumDeviceObjectsCallbackA;
{$EXTERNALSYM TDIEnumDeviceObjectsCallback}
{$IFDEF DIRECTINPUT_VERSION_5} (* #if(DIRECTINPUT_VERSION >= 0x0500) *)
const
DIDOI_FFACTUATOR = $00000001;
{$EXTERNALSYM DIDOI_FFACTUATOR}
DIDOI_FFEFFECTTRIGGER = $00000002;
{$EXTERNALSYM DIDOI_FFEFFECTTRIGGER}
DIDOI_POLLED = $00008000;
{$EXTERNALSYM DIDOI_POLLED}
DIDOI_ASPECTPOSITION = $00000100;
{$EXTERNALSYM DIDOI_ASPECTPOSITION}
DIDOI_ASPECTVELOCITY = $00000200;
{$EXTERNALSYM DIDOI_ASPECTVELOCITY}
DIDOI_ASPECTACCEL = $00000300;
{$EXTERNALSYM DIDOI_ASPECTACCEL}
DIDOI_ASPECTFORCE = $00000400;
{$EXTERNALSYM DIDOI_ASPECTFORCE}
DIDOI_ASPECTMASK = $00000F00;
{$EXTERNALSYM DIDOI_ASPECTMASK}
{$ENDIF} (* DIRECTINPUT_VERSION >= 0x0500 *)
{$IFDEF DIRECTINPUT_VERSION_5b} (* #if(DIRECTINPUT_VERSION >= 0x050a) *)
DIDOI_GUIDISUSAGE = $00010000;
{$EXTERNALSYM DIDOI_GUIDISUSAGE}
{$ENDIF} (* DIRECTINPUT_VERSION >= 0x050a *)
type
PDIPropHeader = ^TDIPropHeader;
DIPROPHEADER = packed record
dwSize: DWORD;
dwHeaderSize: DWORD;
dwObj: DWORD;
dwHow: DWORD;
end;
{$EXTERNALSYM DIPROPHEADER}
TDIPropHeader = DIPROPHEADER;
const
DIPH_DEVICE = 0;
{$EXTERNALSYM DIPH_DEVICE}
DIPH_BYOFFSET = 1;
{$EXTERNALSYM DIPH_BYOFFSET}
DIPH_BYID = 2;
{$EXTERNALSYM DIPH_BYID}
{$IFDEF DIRECTINPUT_VERSION_5b} (* #if(DIRECTINPUT_VERSION >= 0x050a) *)
DIPH_BYUSAGE = 3;
{$EXTERNALSYM DIPH_BYUSAGE}
{$ENDIF} (* DIRECTINPUT_VERSION >= 0x050a *)
{$IFDEF DIRECTINPUT_VERSION_5b} (* #if(DIRECTINPUT_VERSION >= 0x050a) *)
// #define DIMAKEUSAGEDWORD(UsagePage, Usage) \
// (DWORD)MAKELONG(Usage, UsagePage)
function DIMAKEUSAGEDWORD(UsagePage, Usage: Word): DWORD;
{$EXTERNALSYM DIMAKEUSAGEDWORD}
{$ENDIF} (* DIRECTINPUT_VERSION >= 0x050a *)
type
PDIPropDWord = ^TDIPropDWord;
DIPROPDWORD = packed record
diph: TDIPropHeader;
dwData: DWORD;
end;
{$EXTERNALSYM DIPROPDWORD}
TDIPropDWord = DIPROPDWORD;
{$IFDEF DIRECTINPUT_VERSION_8} (* #if(DIRECTINPUT_VERSION >= 0x0800) *)
PDIPropPointer = ^TDIPropPointer;
DIPROPPOINTER = packed record
diph: TDIPropHeader;
uData: Pointer;
end;
{$EXTERNALSYM DIPROPPOINTER}
TDIPropPointer = DIPROPPOINTER;
{$ENDIF} (* DIRECTINPUT_VERSION >= 0x0800 *)
PDIPropRange = ^TDIPropRange;
DIPROPRANGE = packed record
diph: TDIPropHeader;
lMin: Longint;
lMax: Longint;
end;
{$EXTERNALSYM DIPROPRANGE}
TDIPropRange = DIPROPRANGE;
const
DIPROPRANGE_NOMIN = $80000000;
{$EXTERNALSYM DIPROPRANGE_NOMIN}
DIPROPRANGE_NOMAX = $7FFFFFFF;
{$EXTERNALSYM DIPROPRANGE_NOMAX}
{$IFDEF DIRECTINPUT_VERSION_5b} (* #if(DIRECTINPUT_VERSION >= 0x050a) *)
type
PDIPropCal = ^TDIPropCal;
DIPROPCAL = packed record
diph: TDIPropHeader;
lMin: Longint;
lCenter: Longint;
lMax: Longint;
end;
{$EXTERNALSYM DIPROPCAL}
TDIPropCal = DIPROPCAL;
PDIPropCalPov = ^TDIPropCalPov;
DIPROPCALPOV = packed record
diph: TDIPropHeader;
lMin: array[0..4] of Longint;
lMax: array[0..4] of Longint;
end;
{$EXTERNALSYM DIPROPCALPOV}
TDIPropCalPov = DIPROPCALPOV;
PDIPropGuidAndPath = ^TDIPropGuidAndPath;
DIPROPGUIDANDPATH = packed record
diph: TDIPropHeader;
guidClass: TGUID;
wszPath: array[0..MAX_PATH-1] of WideChar;
end;
{$EXTERNALSYM DIPROPGUIDANDPATH}
TDIPropGuidAndPath = DIPROPGUIDANDPATH;
PDIPropString = ^TDIPropString;
DIPROPSTRING = packed record
diph: TDIPropHeader;
wsz: array[0..MAX_PATH-1] of WideChar;
end;
{$EXTERNALSYM DIPROPSTRING}
TDIPropString = DIPROPSTRING;
{$ENDIF} (* DIRECTINPUT_VERSION >= 0x050a *)
{$IFDEF DIRECTINPUT_VERSION_8} (* #if(DIRECTINPUT_VERSION >= 0x0800) *)
const
MAXCPOINTSNUM = 8;
{$EXTERNALSYM MAXCPOINTSNUM}
type
PCPoint = ^TCPoint;
_CPOINT = packed record
lP: Longint; // raw value
dwLog: DWORD; // logical_value / max_logical_value * 10000
end;
{$EXTERNALSYM _CPOINT}
CPOINT = _CPOINT;
{$EXTERNALSYM CPOINT}
TCPoint = _CPOINT;
PDIPropCPoints = ^TDIPropCPoints;
DIPROPCPOINTS = packed record
diph: TDIPropHeader;
dwCPointsNum: DWORD;
cp: array[0..MAXCPOINTSNUM-1] of TCPoint;
end;
{$EXTERNALSYM DIPROPCPOINTS}
TDIPropCPoints = DIPROPCPOINTS;
{$ENDIF} (* DIRECTINPUT_VERSION >= 0x0800 *)
// #define MAKEDIPROP(prop) (*(const GUID *)(prop))
type
MAKEDIPROP = PGUID;
{$EXTERNALSYM MAKEDIPROP}
const
DIPROP_BUFFERSIZE = MAKEDIPROP(1);
{$EXTERNALSYM DIPROP_BUFFERSIZE}
DIPROP_AXISMODE = MAKEDIPROP(2);
{$EXTERNALSYM DIPROP_AXISMODE}
DIPROPAXISMODE_ABS = 0;
{$EXTERNALSYM DIPROPAXISMODE_ABS}
DIPROPAXISMODE_REL = 1;
{$EXTERNALSYM DIPROPAXISMODE_REL}
DIPROP_GRANULARITY = MAKEDIPROP(3);
{$EXTERNALSYM DIPROP_GRANULARITY}
DIPROP_RANGE = MAKEDIPROP(4);
{$EXTERNALSYM DIPROP_RANGE}
DIPROP_DEADZONE = MAKEDIPROP(5);
{$EXTERNALSYM DIPROP_DEADZONE}
DIPROP_SATURATION = MAKEDIPROP(6);
{$EXTERNALSYM DIPROP_SATURATION}
DIPROP_FFGAIN = MAKEDIPROP(7);
{$EXTERNALSYM DIPROP_FFGAIN}
DIPROP_FFLOAD = MAKEDIPROP(8);
{$EXTERNALSYM DIPROP_FFLOAD}
DIPROP_AUTOCENTER = MAKEDIPROP(9);
{$EXTERNALSYM DIPROP_AUTOCENTER}
DIPROPAUTOCENTER_OFF = 0;
{$EXTERNALSYM DIPROPAUTOCENTER_OFF}
DIPROPAUTOCENTER_ON = 1;
{$EXTERNALSYM DIPROPAUTOCENTER_ON}
DIPROP_CALIBRATIONMODE = MAKEDIPROP(10);
{$EXTERNALSYM DIPROP_CALIBRATIONMODE}
DIPROPCALIBRATIONMODE_COOKED = 0;
{$EXTERNALSYM DIPROPCALIBRATIONMODE_COOKED}
DIPROPCALIBRATIONMODE_RAW = 1;
{$EXTERNALSYM DIPROPCALIBRATIONMODE_RAW}
{$IFDEF DIRECTINPUT_VERSION_5b} (* #if(DIRECTINPUT_VERSION >= 0x050a) *)
DIPROP_CALIBRATION = MAKEDIPROP(11);
{$EXTERNALSYM DIPROP_CALIBRATION}
DIPROP_GUIDANDPATH = MAKEDIPROP(12);
{$EXTERNALSYM DIPROP_GUIDANDPATH}
DIPROP_INSTANCENAME = MAKEDIPROP(13);
{$EXTERNALSYM DIPROP_INSTANCENAME}
DIPROP_PRODUCTNAME = MAKEDIPROP(14);
{$EXTERNALSYM DIPROP_PRODUCTNAME}
{$ENDIF} (* DIRECTINPUT_VERSION >= 0x050a *)
{$IFDEF DIRECTINPUT_VERSION_5b} (* #if(DIRECTINPUT_VERSION >= 0x05b2) *)
DIPROP_JOYSTICKID = MAKEDIPROP(15);
{$EXTERNALSYM DIPROP_JOYSTICKID}
DIPROP_GETPORTDISPLAYNAME = MAKEDIPROP(16);
{$EXTERNALSYM DIPROP_GETPORTDISPLAYNAME}
{$ENDIF} (* DIRECTINPUT_VERSION >= 0x05b2 *)
{$IFDEF DIRECTINPUT_VERSION_7} (* #if(DIRECTINPUT_VERSION >= 0x0700) *)
DIPROP_PHYSICALRANGE = MAKEDIPROP(18);
{$EXTERNALSYM DIPROP_PHYSICALRANGE}
DIPROP_LOGICALRANGE = MAKEDIPROP(19);
{$EXTERNALSYM DIPROP_LOGICALRANGE}
{$ENDIF} (* DIRECTINPUT_VERSION >= 0x0700 *)
{$IFDEF DIRECTINPUT_VERSION_8} (* #if(DIRECTINPUT_VERSION >= 0x0800) *)
DIPROP_KEYNAME = MAKEDIPROP(20);
{$EXTERNALSYM DIPROP_KEYNAME}
DIPROP_CPOINTS = MAKEDIPROP(21);
{$EXTERNALSYM DIPROP_CPOINTS}
DIPROP_APPDATA = MAKEDIPROP(22);
{$EXTERNALSYM DIPROP_APPDATA}
DIPROP_SCANCODE = MAKEDIPROP(23);
{$EXTERNALSYM DIPROP_SCANCODE}
DIPROP_VIDPID = MAKEDIPROP(24);
{$EXTERNALSYM DIPROP_VIDPID}
DIPROP_U
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -