XInput 0.0 → 0.1
raw patch · 2 files changed
+10/−145 lines, 2 files
Files
- System/Win32/XInput.hsc +0/−143
- XInput.cabal +10/−2
System/Win32/XInput.hsc view
@@ -39,12 +39,6 @@ type DeviceSubtype = BYTE #{enum DeviceSubtype, , xINPUT_DEVSUBTYPE_GAMEPAD = XINPUT_DEVSUBTYPE_GAMEPAD - , xINPUT_DEVSUBTYPE_WHEEL = XINPUT_DEVSUBTYPE_WHEEL - , xINPUT_DEVSUBTYPE_ARCADE_STICK = XINPUT_DEVSUBTYPE_ARCADE_STICK - , xINPUT_DEVSUBTYPE_FLIGHT_SICK = XINPUT_DEVSUBTYPE_FLIGHT_SICK - , xINPUT_DEVSUBTYPE_DANCE_PAD = XINPUT_DEVSUBTYPE_DANCE_PAD - , xINPUT_DEVSUBTYPE_GUITAR = XINPUT_DEVSUBTYPE_GUITAR - , xINPUT_DEVSUBTYPE_DRUM_KIT = XINPUT_DEVSUBTYPE_DRUM_KIT } type DeviceFlags = WORD @@ -82,81 +76,6 @@ , xINPUT_FLAG_GAMEPAD = XINPUT_FLAG_GAMEPAD } -type BatteryDeviceType = BYTE -#{enum BatteryDeviceType, - , bATTERY_DEVTYPE_GAMEPAD = BATTERY_DEVTYPE_GAMEPAD - , bATTERY_DEVTYPE_HEADSET = BATTERY_DEVTYPE_HEADSET -} - -type BatteryType = BYTE -#{enum BatteryType, - , bATTERY_TYPE_DISCONNECTED = BATTERY_TYPE_DISCONNECTED - , bATTERY_TYPE_WIRED = BATTERY_TYPE_WIRED - , bATTERY_TYPE_ALKALINE = BATTERY_TYPE_ALKALINE - , bATTERY_TYPE_NIMH = BATTERY_TYPE_NIMH - , bATTERY_TYPE_UNKNOWN = BATTERY_TYPE_UNKNOWN -} - -type BatteryLevel = BYTE -#{enum BatteryLevel, - , bATTERY_LEVEL_EMPTY = BATTERY_LEVEL_EMPTY - , bATTERY_LEVEL_LOW = BATTERY_LEVEL_LOW - , bATTERY_LEVEL_MEDIUM = BATTERY_LEVEL_MEDIUM - , bATTERY_LEVEL_FULL = BATTERY_LEVEL_FULL -} - -type UserMaxCount = Int -#{enum UserMaxCount, - , userMaxCount = XUSER_MAX_COUNT -} -type UserIndexAny = Int -#{enum UserMaxCount, - , userIndexAny = XUSER_INDEX_ANY -} - -type VirtualKey = WORD -#{enum VirtualKey, - , vK_PAD_A = VK_PAD_A - , vK_PAD_B = VK_PAD_B - , vK_PAD_X = VK_PAD_X - , vK_PAD_Y = VK_PAD_Y - , vK_PAD_RSHOULDER = VK_PAD_RSHOULDER - , vK_PAD_LSHOULDER = VK_PAD_LSHOULDER - , vK_PAD_LTRIGGER = VK_PAD_LTRIGGER - , vK_PAD_RTRIGGER = VK_PAD_RTRIGGER - , vK_PAD_DPAD_UP = VK_PAD_DPAD_UP - , vK_PAD_DPAD_DOWN = VK_PAD_DPAD_DOWN - , vK_PAD_DPAD_LEFT = VK_PAD_DPAD_LEFT - , vK_PAD_DPAD_RIGHT = VK_PAD_DPAD_RIGHT - , vK_PAD_START = VK_PAD_START - , vK_PAD_BACK = VK_PAD_BACK - , vK_PAD_LTHUMB_PRESS = VK_PAD_LTHUMB_PRESS - , vK_PAD_RTHUMB_PRESS = VK_PAD_RTHUMB_PRESS - , vK_PAD_LTHUMB_UP = VK_PAD_LTHUMB_UP - , vK_PAD_LTHUMB_DOWN = VK_PAD_LTHUMB_DOWN - , vK_PAD_LTHUMB_RIGHT = VK_PAD_LTHUMB_RIGHT - , vK_PAD_LTHUMB_LEFT = VK_PAD_LTHUMB_LEFT - , vK_PAD_LTHUMB_UPLEFT = VK_PAD_LTHUMB_UPLEFT - , vK_PAD_LTHUMB_UPRIGHT = VK_PAD_LTHUMB_UPRIGHT - , vK_PAD_LTHUMB_DOWNRIGHT = VK_PAD_LTHUMB_DOWNRIGHT - , vK_PAD_LTHUMB_DOWNLEFT = VK_PAD_LTHUMB_DOWNLEFT - , vK_PAD_RTHUMB_UP = VK_PAD_RTHUMB_UP - , vK_PAD_RTHUMB_DOWN = VK_PAD_RTHUMB_DOWN - , vK_PAD_RTHUMB_RIGHT = VK_PAD_RTHUMB_RIGHT - , vK_PAD_RTHUMB_LEFT = VK_PAD_RTHUMB_LEFT - , vK_PAD_RTHUMB_UPLEFT = VK_PAD_RTHUMB_UPLEFT - , vK_PAD_RTHUMB_UPRIGHT = VK_PAD_RTHUMB_UPRIGHT - , vK_PAD_RTHUMB_DOWNRIGHT = VK_PAD_RTHUMB_DOWNRIGHT - , vK_PAD_RTHUMB_DOWNLEFT = VK_PAD_RTHUMB_DOWNLEFT -} - -type KeystrokeFlag = WORD -#{enum KeystrokeFlag, - , xINPUT_KEYSTROKE_KEYDOWN = XINPUT_KEYSTROKE_KEYDOWN - , xINPUT_KEYSTROKE_KEYUP = XINPUT_KEYSTROKE_KEYUP - , xINPUT_KEYSTROKE_REPEAT = XINPUT_KEYSTROKE_REPEAT -} - data GUID = GUID { data1 :: Int32 , data2 :: Int16 @@ -257,44 +176,6 @@ v <- (#peek XINPUT_CAPABILITIES, Vibration) buf return $ Capabilities t s f g v -data Battery = Battery { batteryType, batteryLevel :: BYTE } - -instance Storable Battery where - sizeOf = const (#size XINPUT_BATTERY_INFORMATION) - alignment = sizeOf - poke buf k = do - (#poke XINPUT_BATTERY_INFORMATION, BatteryType) buf (batteryType k) - (#poke XINPUT_BATTERY_INFORMATION, BatteryLevel) buf (batteryLevel k) - peek buf = do - t <- (#peek XINPUT_BATTERY_INFORMATION, BatteryType) buf - l <- (#peek XINPUT_BATTERY_INFORMATION, BatteryLevel) buf - return $ Battery t l - -data Keystroke = Keystroke - { virtualKey :: VirtualKey - , unicode :: CWchar - , flags :: KeystrokeFlag - , userIndex :: BYTE - , hidCode :: BYTE - } - -instance Storable Keystroke where - sizeOf = const (#size XINPUT_KEYSTROKE) - alignment = sizeOf - poke buf k = do - (#poke XINPUT_KEYSTROKE, VirtualKey) buf (virtualKey k) - (#poke XINPUT_KEYSTROKE, Unicode) buf (unicode k) - (#poke XINPUT_KEYSTROKE, Flags) buf (flags k) - (#poke XINPUT_KEYSTROKE, UserIndex) buf (userIndex k) - (#poke XINPUT_KEYSTROKE, HidCode) buf (hidCode k) - peek buf = do - v <- (#peek XINPUT_KEYSTROKE, VirtualKey) buf - u <- (#peek XINPUT_KEYSTROKE, Unicode) buf - f <- (#peek XINPUT_KEYSTROKE, Flags) buf - i <- (#peek XINPUT_KEYSTROKE, UserIndex) buf - h <- (#peek XINPUT_KEYSTROKE, HidCode) buf - return $ Keystroke v u f i h - getState :: PlayerNumber -> IO (Maybe PadState) getState u = alloca $ \res -> do r <- c_XInputGetState u res @@ -327,30 +208,6 @@ return Nothing foreign import stdcall unsafe "XInput.h XInputGetDSoundAudioDeviceGuids" c_XInputGetDSoundAudioDeviceGuids :: DWORD -> Ptr GUID -> Ptr GUID -> IO DWORD - -getBatteryInformation :: PlayerNumber -> BatteryDeviceType -> IO (Maybe Battery) -getBatteryInformation u d = alloca $ \res -> do - r <- c_XInputGetBatteryInformation u d res - if r == 0 - then do - b <- peek res - return $ Just b - else - return Nothing -foreign import stdcall unsafe "XInput.h XInputGetBatteryInformation" - c_XInputGetBatteryInformation :: DWORD -> BYTE -> Ptr Battery -> IO DWORD - -getKeystroke :: PlayerNumber -> IO (Maybe Keystroke) -getKeystroke u = alloca $ \res -> do - r <- c_XInputGetKeystroke u xINPUT_FLAG_GAMEPAD res - if r == 0 - then do - k <- peek res - return $ Just k - else - return Nothing -foreign import stdcall unsafe "XInput.h XInputGetKeystroke" - c_XInputGetKeystroke :: DWORD -> DWORD -> Ptr Keystroke -> IO DWORD getCapabilities :: PlayerNumber -> IO (Maybe Capabilities) getCapabilities u = alloca $ \res -> do
XInput.cabal view
@@ -1,12 +1,20 @@ Name: XInput -Version: 0.0 -Cabal-Version: >= 1.2 +Version: 0.1 +Cabal-Version: >= 1.6 Synopsis: Bindings for the DirectX XInput library. +Description: Bindings for the DirectX XInput library. +Category: System Build-Type: Custom License: BSD3 License-file: LICENSE Author: Erik Charlebois +Copyright: Erik Charlebois Maintainer: Erik Charlebois <erikcharlebois@gmail.com> +Homepage: http://code.fac9.com/xinput/ + +source-repository head + type: darcs + location: http://code.fac9.com/xinput/ Library Build-Depends: base, Win32