Ada计算机图形DirectX之XInput

----------------------------------------
-- Microsoft DirectX Ada binding lib  --
-- File : DInput.ads                  --
-- Translator:Dongfeng.Gu,2018/11/16  --
-- Mail: [email protected]                --
-- Progress:100%                      --
----------------------------------------

with win32;                        use win32;
with win32.rpcdce;
with Ada.Characters.Handling;

package XInput is

   type LPGUID is access all win32.rpcdce.GUID;

   XINPUT_DLL_A : constant String:= "xinput1_3.dll"&character'first;

   XINPUT_DLL_W : constant WIDE_STRING:= Ada.Characters.Handling.TO_WIDE_STRING("xinput1_3.dll"&character'first);

   XINPUT_DLL : constant String:= XINPUT_DLL_A;

   XINPUT_DEVTYPE_GAMEPAD : constant := 16#01#;

   XINPUT_DEVSUBTYPE_GAMEPAD : constant := 16#01#;

   XINPUT_DEVSUBTYPE_WHEEL : constant := 16#02#;

   XINPUT_DEVSUBTYPE_ARCADE_STICK : constant := 16#03#;

   XINPUT_DEVSUBTYPE_FLIGHT_SICK : constant := 16#04#;

   XINPUT_DEVSUBTYPE_DANCE_PAD : constant := 16#05#;

   XINPUT_DEVSUBTYPE_GUITAR : constant := 16#06#;

   XINPUT_DEVSUBTYPE_DRUM_KIT : constant := 16#08#;

   XINPUT_CAPS_VOICE_SUPPORTED : constant := 16#0004#;

   XINPUT_GAMEPAD_DPAD_UP : constant := 16#0001#;

   XINPUT_GAMEPAD_DPAD_DOWN : constant := 16#0002#;

   XINPUT_GAMEPAD_DPAD_LEFT : constant := 16#0004#;

   XINPUT_GAMEPAD_DPAD_RIGHT : constant := 16#0008#;

   XINPUT_GAMEPAD_START : constant := 16#0010#;

   XINPUT_GAMEPAD_BACK : constant := 16#0020#;

   XINPUT_GAMEPAD_LEFT_THUMB : constant := 16#0040#;

   XINPUT_GAMEPAD_RIGHT_THUMB : constant := 16#0080#;

   XINPUT_GAMEPAD_LEFT_SHOULDER : constant := 16#0100#;

   XINPUT_GAMEPAD_RIGHT_SHOULDER : constant := 16#0200#;

   XINPUT_GAMEPAD_A : constant := 16#1000#;

   XINPUT_GAMEPAD_B : constant := 16#2000#;

   XINPUT_GAMEPADtagX : constant := 16#4000#;

   XINPUT_GAMEPAD_Y : constant := 16#8000#;

   XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE : constant := 7849;

   XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE : constant := 8689;

   XINPUT_GAMEPAD_TRIGGER_THRESHOLD : constant := 30;

   XINPUT_FLAG_GAMEPAD : constant := 16#00000001#;

   BATTERY_DEVTYPE_GAMEPAD : constant := 16#00#;

   BATTERY_DEVTYPE_HEADSET : constant := 16#01#;

   BATTERY_TYPE_DISCONNECTED : constant := 16#00#;    -- This device is not connected#;

   BATTERY_TYPE_WIRED : constant := 16#01#;    -- Wired device, no battery#;

   BATTERY_TYPE_ALKALINE : constant := 16#02#;    -- Alkaline battery source#;

   BATTERY_TYPE_NIMH : constant := 16#03#;    -- Nickel Metal Hydride battery source#;

   BATTERY_TYPE_UNKNOWN : constant := 16#FF#;    -- Cannot determine the battery type#;

   BATTERY_LEVEL_EMPTY : constant := 16#00#;

   BATTERY_LEVEL_LOW : constant := 16#01#;

   BATTERY_LEVEL_MEDIUM : constant := 16#02#;

   BATTERY_LEVEL_FULL : constant := 16#03#;

   XUSER_MAX_COUNT : constant := 4;

   XUSER_INDEX_ANY : constant := 16#000000FF#;

   VK_PAD_A : constant := 16#5800#;

   VK_PAD_B : constant := 16#5801#;

   VK_PADtagX : constant := 16#5802#;

   VK_PAD_Y : constant := 16#5803#;

   VK_PAD_RSHOULDER : constant := 16#5804#;

   VK_PAD_LSHOULDER : constant := 16#5805#;

   VK_PAD_LTRIGGER : constant := 16#5806#;

   VK_PAD_RTRIGGER : constant := 16#5807#;

   VK_PAD_DPAD_UP : constant := 16#5810#;

   VK_PAD_DPAD_DOWN : constant := 16#5811#;

   VK_PAD_DPAD_LEFT : constant := 16#5812#;

   VK_PAD_DPAD_RIGHT : constant := 16#5813#;

   VK_PAD_START : constant := 16#5814#;

   VK_PAD_BACK : constant := 16#5815#;

   VK_PAD_LTHUMB_PRESS : constant := 16#5816#;

   VK_PAD_RTHUMB_PRESS : constant := 16#5817#;

   VK_PAD_LTHUMB_UP : constant := 16#5820#;

   VK_PAD_LTHUMB_DOWN : constant := 16#5821#;

   VK_PAD_LTHUMB_RIGHT : constant := 16#5822#;

   VK_PAD_LTHUMB_LEFT : constant := 16#5823#;

   VK_PAD_LTHUMB_UPLEFT : constant := 16#5824#;

   VK_PAD_LTHUMB_UPRIGHT : constant := 16#5825#;

   VK_PAD_LTHUMB_DOWNRIGHT : constant := 16#5826#;

   VK_PAD_LTHUMB_DOWNLEFT : constant := 16#5827#;

   VK_PAD_RTHUMB_UP : constant := 16#5830#;

   VK_PAD_RTHUMB_DOWN : constant := 16#5831#;

   VK_PAD_RTHUMB_RIGHT : constant := 16#5832#;

   VK_PAD_RTHUMB_LEFT : constant := 16#5833#;

   VK_PAD_RTHUMB_UPLEFT : constant := 16#5834#;

   VK_PAD_RTHUMB_UPRIGHT : constant := 16#5835#;

   VK_PAD_RTHUMB_DOWNRIGHT : constant := 16#5836#;

   VK_PAD_RTHUMB_DOWNLEFT : constant := 16#5837#;

   XINPUT_KEYSTROKE_KEYDOWN : constant := 16#0001#;

   XINPUT_KEYSTROKE_KEYUP : constant := 16#0002#;

   XINPUT_KEYSTROKE_REPEAT : constant := 16#0004#;

   type tagXINPUT_GAMEPAD is record
      wButtons: WORD;
      bLeftTrigger: BYTE;
      bRightTrigger: BYTE;
      sThumbLX: SHORT;
      sThumbLY: SHORT;
      sThumbRX: SHORT;
      sThumbRY: SHORT;
   end record;

   subtype XINPUT_GAMEPAD is tagXINPUT_GAMEPAD;

   type PXINPUT_GAMEPAD is access all tagXINPUT_GAMEPAD;

   type tagXINPUT_STATE is record
      dwPacketNumber: DWORD;
      Gamepad: XINPUT_GAMEPAD;
   end record;

   subtype XINPUT_STATE is tagXINPUT_STATE;

   type PXINPUT_STATE is access all tagXINPUT_STATE;
   subtype LPXINPUT_STATE is PXINPUT_STATE;

   type tagXINPUT_VIBRATION is record
      wLeftMotorSpeed: WORD;
      wRightMotorSpeed: WORD;
   end record;

   subtype XINPUT_VIBRATION is tagXINPUT_VIBRATION;

   type PXINPUT_VIBRATION is access all tagXINPUT_VIBRATION;
   subtype LPXINPUT_VIBRATION is PXINPUT_VIBRATION;

   type tagXINPUT_CAPABILITIES is record
      Typ: BYTE;
      SubTyp: BYTE;
      Flags: WORD;
      Gamepad: XINPUT_GAMEPAD;
      Vibration: XINPUT_VIBRATION;
   end record;

   subtype XINPUT_CAPABILITIES is tagXINPUT_CAPABILITIES;

   type PXINPUT_CAPABILITIES is access all tagXINPUT_CAPABILITIES;
   subtype LPXINPUT_CAPABILITIES is PXINPUT_CAPABILITIES;

   type tagXINPUT_BATTERY_INFORMATION is record
      BatteryType: BYTE;
      BatteryLevel: BYTE;
   end record;

   subtype XINPUT_BATTERY_INFORMATION is tagXINPUT_BATTERY_INFORMATION;

   type PXINPUT_BATTERY_INFORMATION is access all tagXINPUT_BATTERY_INFORMATION;
   subtype LPXINPUT_BATTERY_INFORMATION is PXINPUT_BATTERY_INFORMATION;

   type tagXINPUT_KEYSTROKE is record
      VirtualKey: WORD;
      Unicode: WCHAR;
      Flags: WORD;
      UserIndex: BYTE;
      HidCode: BYTE;
   end record;

   subtype XINPUT_KEYSTROKE is tagXINPUT_KEYSTROKE;

   type PXINPUT_KEYSTROKE is access all tagXINPUT_KEYSTROKE;
   subtype LPXINPUT_KEYSTROKE is PXINPUT_KEYSTROKE;

   function XInputGetState(dwUserIndex:DWORD;pState:LPXINPUT_STATE) return DWORD with Import,Convention=>stdcall,external_name=>"XInputGetState";

   function XInputSetState(dwUserIndex:DWORD;pVibration:LPXINPUT_VIBRATION) return DWORD with Import,Convention=>stdcall,external_name=>"XInputSetState";

   function XInputGetCapabilities(dwUserIndex:DWORD;dwFlags:DWORD;pCapabilities:LPXINPUT_CAPABILITIES) return DWORD with Import,Convention=>stdcall,external_name=>"XInputGetCapabilities";

   procedure XInputEnable(enable:BOOL) with Import,Convention=>stdcall,external_name=>"XInputEnable";

   function XInputGetDSoundAudioDeviceGuids(dwUserIndex:DWORD;pDSoundRenderGuid:LPGUID;pDSoundCaptureGuid:LPGUID) return DWORD with Import,Convention=>stdcall,external_name=>"XInputGetDSoundAudioDeviceGuids";

   function XInputGetBatteryInformation(dwUserIndex:DWORD;devType:BYTE;pBatteryInformation:LPXINPUT_BATTERY_INFORMATION) return DWORD with Import,Convention=>stdcall,external_name=>"XInputGetBatteryInformation";

   function XInputGetKeystroke(dwUserIndex:DWORD;dwReserved:DWORD;pKeystroke:PXINPUT_KEYSTROKE) return DWORD with Import,Convention=>stdcall,external_name=>"XInputGetKeystroke";



   --
   -- THE END.
   --
end XInput;

猜你喜欢

转载自blog.csdn.net/adacore/article/details/84135384