m9      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                  !"#$%&'()*+,-./012345678portable provisionallemmih@gmail.com    9:;<=>?@ This function returns True' if the CPU has the RDTSC instruction. This function returns True if the CPU has MMX features. This function returns True# if the CPU has MMX Ext. features. This function returns True if the CPU has 3DNow features. This function returns True& if the CPU has 3DNow! Ext. features. This function returns True if the CPU has SSE features. This function returns True if the CPU has SSE2 features. This function returns True" if the CPU has AltiVec features.    ABCportable provisionallemmih@gmail.com !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~          ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~          portable provisionallemmih@gmail.comportable provisionallemmih@gmail.com  !"#$%  !"#$% #"! $% #"!  !"#$%portable provisionallemmih@gmail.com4&'()*+,-./0123456789:;<=>?@ABDECDEFGHIJKLMNOPQRSTUVW2&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW2KJIHGFEDBA7@?>=<;:98C&6543210/.-,+*)('LQRSTUMNOPVW2&6543210/.-,+*)(''()*+,-./01234567 @?>=<;:9889:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWportable provisionallemmih@gmail.comXYXYYXXY portable provisionallemmih@gmail.comZ[\]^_Z[\]^_Z[\]^_Z[\]^_[\]^_ portable provisionallemmih@gmail.comFGHIJK`abcdefghijklGInitializes SDL. This should be called before all other SDL functions. mn@After SDL has been initialized with SDL_Init you may initialize 2 uninitialized subsystems with SDL_InitSubSystem. opqDwasInit allows you to see which SDL subsytems have been initialized rAReturns a string containing the last error. Nothing if no error. s`abcdefghijklmnopqrslmnopqrskij`hgfedcba`hgfedcbaabcdefghijklmnopqrs portable provisionallemmih@gmail.comLMNOPtuvwQRx%Sets the window title and icon name. y)Sets the window title and icon name. Use Nothing to unset. z%Gets the window title and icon name. {Iconify/Minimise the window. |!Toggles fullscreen mode. Returns False on error. }7Toggles fullscreen mode. Throws an exception on error. ~=Grabbing means that the mouse is confined to the application ? window, and nearly all keyboard input is passed directly to E the application, and not interpreted by a window manager, if any. #Returns the current grabbing mode. tuvwxyz{|}~ twvuxyz{|}~ twvuuvwxyz{|}~ portable provisionallemmih@gmail.comST portable provisionallemmih@gmail.comUSwaps OpenGL framebuffers/Update Display. VWXYZ[\]^_`abcdefghijklmnopqrstuvwxyzAll resolutions available. No modes available! List of available resolutions. {|Returns the video surface or Nothing on error. ;Returns the video surface, throwing an exception on error. !Returns the video driver name or Nothing< on error. Notice, the driver name is limited to 256 chars. HReturns the video driver name, throwing an exception on error. See also . OReturns the available screen resolutions for the given format and video flags. 'Will use SDL_GetVideoInfo()->vfmt when Nothing. 6Check to see if a particular video mode is supported. R Returns the bits-per-pixel of the closest available mode with the given width, * height and requested surface flags, or Nothing on error. Width. Height. Bits-per-pixel. Flags. ISet up a video mode with the specified width, height and bits-per-pixel.  Returns Nothing on error. Width. Height. Bits-per-pixel. Flags. Same as ) except it throws an exception on error. :Makes sure the given area is updated on the given screen. HMakes sure the given list of rectangles is updated on the given screen. G The rectangles are not automatically merged or checked for overlap. I In general, the programmer can use his knowledge about his particular D rectangles to merge them in an efficient way, to avoid overdraw. Swaps screen buffers. Same as # but throws an exception on error. <Sets a portion of the colormap for the given 8-bit surface. 4Sets the colors in the palette of an 8-bit surface. )Map a RGB color value to a pixel format.  Red value.  Green value.  Blue value. *Map a RGBA color value to a pixel format.  Red value.  Green value.  Blue value.  Alpha value. ;Get RGB values from a pixel in the specified pixel format. =Gets RGBA values from a pixel in the specified pixel format. Creates an empty Surface . Returns Nothing on error. Creates an empty Surface . Throws an exception on error. Creates an empty Surface with (r/g/b/)a)mask determined from the local endian.  Returns Nothing on error. Creates an empty Surface with (r/g/b/)a)mask determined from the local endian. ! Throws an exception on error. Forces the finalization of a Surface. Only supported with GHC. #Locks a surface for direct access. %Unlocks a previously locked surface. }~+Adjusts the alpha properties of a surface. +Sets the clipping rectangle for a surface. +Gets the clipping rectangle for a surface. 2Run an action with a given clipping rect applied. z If an exception is raised, then withClipRect will re-raise the exception (after resetting the original clipping rect). BConverts a surface to the same format as another surface. Returns Nothing on error. XConverts a surface to the same format as another surface. Throws an exception on error. WThis function performs a fast blit from the source surface to the destination surface. KThis function performs a fast fill of the given rectangle with some color. 2Converts a surface to the display format. Returns Nothing on error. HConverts a surface to the display format. Throws an exception on error. 2Converts a surface to the display format. Returns Nothing on error. HConverts a surface to the display format. Throws an exception on error. 'Sets the position of the mouse cursor. Mouse X position. Mouse Y position. 9Toggle whether or not the cursor is shown on the screen. Returns True- when the cursor is set to visible. See also . Sets a special SDL/OpenGL attribute. Returns False on error. Sets a special SDL/0OpenGL attribute. Throws an exception on error. Gets the value of a special SDL/OpenGL attribute. Returns Nothing on error. Gets the value of a special SDL/0OpenGL attribute. Throws an exception on error. UUUportable provisionallemmih@gmail.comw?Pumps the event loop, gathering events from the input devices. @A safe pointer keeps the type of the object it was created from  and checks it when it's deconstructed. &Typed user events ranging from 0 to 7 High level event structure. A  VideoExpose6 event is triggered when the screen has been modified V outside of the application, usually by the window manager and needs to be redrawn. When  Resizable is passed as a flag to "Graphics.UI.SDL.Video.setVideoMode the user is I allowed to resize the applications window. When the window is resized  an  VideoResize; is reported, with the new window width and height values.  When an  VideoResize1 is recieved the window should be resized to the  new dimensions using "Graphics.UI.SDL.Video.setVideoMode. device index, button index. device index, button index. 'device index, hat index, hat position. 0device index, trackball index, relative motion. &device index, axis index, axis value. TLow level event structure keeping a one-to-one relation with the C event structure.      3Constructs a safe pointer from an arbitrary value. AReturn the type of the object the safe pointer was created from.  Get object from a safe pointer. Nothing on type mismatch. FGet object from a safe pointer. Throws an exception on type mismatch. #Sets keyboard repeat rate. Returns False on error. Initial delay. 0 to disable.  Interval. )Enables or disables unicode translation. ;Returns the current state of unicode translation. See also . (Gets the name of an SDL virtual keysym. !Gets the state of modifier keys. *Sets the internal state of modifier keys. ]Retrieves the current state of the mouse. Returns (X position, Y position, pressed buttons). .Retrieve the current state of the mouse. Like  except that X and Y are ? set to the change since last call to getRelativeMouseState.  $Polls for currently pending events. !.Pushes an event onto the event queue. Returns False on error. "DPushes an event onto the event queue. Throws an exception on error. #1Waits indefinitely for the next available event. $IWaits indefinitely for the next available event. Blocks Haskell threads. %/Enable or disable events from being processed. &*Checks current state of a event. See also %. '#Gets the state of the application. N      !"#$%&'N     !" #$%&'N           !"#$%&'portable provisionallemmih@gmail.com ($Updates the state of all joysticks. )7Counts the number of joysticks attached to the system. *Gets joystick name. Returns Nothing on error. +2Gets joystick name. Throws an exception on error. ,"Opens a joystick for use. Returns Nothing on error. -8Opens a joystick for use. Throws an exception on error. .*Determines if a joystick has been opened. /Gets the index of an Joystick. 0"Gets the number of joystick axes. 1(Gets the number of joystick trackballs. 2"Gets the number of joystick hats. 3%Gets the number of joystick buttons. 4#Gets the current state of an axis. 5*Gets the current state of a joystick hat. 6>Gets the current state of a given button on a given joystick. 7 Gets relative trackball motion. 8(Force finalization of a previous opened Joystick. Only supported with GHC. ()*+,-./012345678)*+,-./0123(45678()*+,-./012345678 portablex provisionallemmih@gmail.com( !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./012345678 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"#$$%%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg h h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                              !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOOPQ R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~              SDL-0.5.2Graphics.UI.SDL.UtilitiesGraphics.UI.SDL.CPUInfoGraphics.UI.SDL.VersionGraphics.UI.SDL.KeysymGraphics.UI.SDL.ColorGraphics.UI.SDL.AudioGraphics.UI.SDL.TypesGraphics.UI.SDL.TimeGraphics.UI.SDL.RectGraphics.UI.SDL.General Graphics.UI.SDL.WindowManagementGraphics.UI.SDL.RWOpsGraphics.UI.SDL.VideoGraphics.UI.SDL.EventsGraphics.UI.SDL.JoystickGraphics.UI.SDLEnumsuccpredtoEnumfromEnum enumFromTo intToBool toBitmask fromBitmaskhasRDTSChasMMX hasMMXExthas3DNow has3DNowExthasSSEhasSSE2 hasAltiVec compiledFor linkedWithSDLKey SDLK_LAST SDLK_UNDO SDLK_EURO SDLK_POWER SDLK_MENU SDLK_BREAK SDLK_SYSREQ SDLK_PRINT SDLK_HELP SDLK_COMPOSE SDLK_MODE SDLK_RSUPER SDLK_LSUPER SDLK_LMETA SDLK_RMETA SDLK_LALT SDLK_RALT SDLK_LCTRL SDLK_RCTRL SDLK_LSHIFT SDLK_RSHIFTSDLK_SCROLLOCK SDLK_CAPSLOCK SDLK_NUMLOCKSDLK_F15SDLK_F14SDLK_F13SDLK_F12SDLK_F11SDLK_F10SDLK_F9SDLK_F8SDLK_F7SDLK_F6SDLK_F5SDLK_F4SDLK_F3SDLK_F2SDLK_F1 SDLK_PAGEDOWN SDLK_PAGEUPSDLK_END SDLK_HOME SDLK_INSERT SDLK_LEFT SDLK_RIGHT SDLK_DOWNSDLK_UPSDLK_KP_EQUALS SDLK_KP_ENTER SDLK_KP_PLUS SDLK_KP_MINUSSDLK_KP_MULTIPLYSDLK_KP_DIVIDESDLK_KP_PERIODSDLK_KP9SDLK_KP8SDLK_KP7SDLK_KP6SDLK_KP5SDLK_KP4SDLK_KP3SDLK_KP2SDLK_KP1SDLK_KP0 SDLK_WORLD_95 SDLK_WORLD_94 SDLK_WORLD_93 SDLK_WORLD_92 SDLK_WORLD_91 SDLK_WORLD_90 SDLK_WORLD_89 SDLK_WORLD_88 SDLK_WORLD_87 SDLK_WORLD_86 SDLK_WORLD_85 SDLK_WORLD_84 SDLK_WORLD_83 SDLK_WORLD_82 SDLK_WORLD_81 SDLK_WORLD_80 SDLK_WORLD_79 SDLK_WORLD_78 SDLK_WORLD_77 SDLK_WORLD_76 SDLK_WORLD_75 SDLK_WORLD_74 SDLK_WORLD_73 SDLK_WORLD_72 SDLK_WORLD_71 SDLK_WORLD_70 SDLK_WORLD_69 SDLK_WORLD_68 SDLK_WORLD_67 SDLK_WORLD_66 SDLK_WORLD_65 SDLK_WORLD_64 SDLK_WORLD_63 SDLK_WORLD_62 SDLK_WORLD_61 SDLK_WORLD_60 SDLK_WORLD_59 SDLK_WORLD_58 SDLK_WORLD_57 SDLK_WORLD_56 SDLK_WORLD_55 SDLK_WORLD_54 SDLK_WORLD_53 SDLK_WORLD_52 SDLK_WORLD_51 SDLK_WORLD_50 SDLK_WORLD_49 SDLK_WORLD_48 SDLK_WORLD_47 SDLK_WORLD_46 SDLK_WORLD_45 SDLK_WORLD_44 SDLK_WORLD_43 SDLK_WORLD_42 SDLK_WORLD_41 SDLK_WORLD_40 SDLK_WORLD_39 SDLK_WORLD_38 SDLK_WORLD_37 SDLK_WORLD_36 SDLK_WORLD_35 SDLK_WORLD_34 SDLK_WORLD_33 SDLK_WORLD_32 SDLK_WORLD_31 SDLK_WORLD_30 SDLK_WORLD_29 SDLK_WORLD_28 SDLK_WORLD_27 SDLK_WORLD_26 SDLK_WORLD_25 SDLK_WORLD_24 SDLK_WORLD_23 SDLK_WORLD_22 SDLK_WORLD_21 SDLK_WORLD_20 SDLK_WORLD_19 SDLK_WORLD_18 SDLK_WORLD_17 SDLK_WORLD_16 SDLK_WORLD_15 SDLK_WORLD_14 SDLK_WORLD_13 SDLK_WORLD_12 SDLK_WORLD_11 SDLK_WORLD_10 SDLK_WORLD_9 SDLK_WORLD_8 SDLK_WORLD_7 SDLK_WORLD_6 SDLK_WORLD_5 SDLK_WORLD_4 SDLK_WORLD_3 SDLK_WORLD_2 SDLK_WORLD_1 SDLK_WORLD_0 SDLK_DELETESDLK_zSDLK_ySDLK_xSDLK_wSDLK_vSDLK_uSDLK_tSDLK_sSDLK_rSDLK_qSDLK_pSDLK_oSDLK_nSDLK_mSDLK_lSDLK_kSDLK_jSDLK_iSDLK_hSDLK_gSDLK_fSDLK_eSDLK_dSDLK_cSDLK_bSDLK_aSDLK_BACKQUOTESDLK_UNDERSCORE SDLK_CARETSDLK_RIGHTBRACKETSDLK_BACKSLASHSDLK_LEFTBRACKETSDLK_AT SDLK_QUESTION SDLK_GREATER SDLK_EQUALS SDLK_LESSSDLK_SEMICOLON SDLK_COLONSDLK_9SDLK_8SDLK_7SDLK_6SDLK_5SDLK_4SDLK_3SDLK_2SDLK_1SDLK_0 SDLK_SLASH SDLK_PERIOD SDLK_MINUS SDLK_COMMA SDLK_PLUS SDLK_ASTERISKSDLK_RIGHTPARENSDLK_LEFTPAREN SDLK_QUOTESDLK_AMPERSAND SDLK_DOLLAR SDLK_HASH SDLK_QUOTEDBL SDLK_EXCLAIM SDLK_SPACE SDLK_ESCAPE SDLK_PAUSE SDLK_RETURN SDLK_CLEARSDLK_TABSDLK_BACKSPACE SDLK_FIRST SDLK_UNKNOWNModifier KeyModMeta KeyModAlt KeyModShift KeyModCtrl KeyModMode KeyModCaps KeyModNumKeyModRightMetaKeyModLeftMetaKeyModRightAlt KeyModLeftAltKeyModRightCtrlKeyModLeftCtrlKeyModRightShiftKeyModLeftShift KeyModNoneKeysymsymKey symModifiers symUnicodePixelColorcolorRed colorGreen colorBlue AudioFormat AudioS16Sys AudioU16Sys AudioS16MSB AudioU16MSB AudioS16LSB AudioU16LSBAudioS8AudioU8fromAudioFormat toAudioFormat SurfaceFlag Fullscreen DoubleBuf HWPalette AnyFormatPreAllocSrcAlphaRLEAccel SrcColorKeyHWAccelNoFrame Resizable OpenGLBlit ASyncBlitOpenGL HWSurface SWSurfaceHat HatLeftDown HatLeftUp HatRightDown HatRightUpHatLeftHatDownHatRightHatUp HatCenteredJoystickJoystickStruct TimerIDStruct PixelFormatPixelFormatStructRWops RWopsStruct VideoInfoVideoInfoStructSurface SurfaceStructsurfaceGetPixelFormatpixelFormatGetAlphapixelFormatGetColorKeypixelFormatGetBitsPerPixelpixelFormatGetBytesPerPixelsurfaceGetWidthsurfaceGetHeightsurfaceGetFlagssurfaceGetPitchsurfaceGetPixelsvideoInfoWidthvideoInfoHeightdelaygetTicksRectrectXrectYrectWrectHInitFlagInitEverythingInitEventthreadInitNoParachute InitJoystick InitCDROM InitVideo InitAudio InitTimer unwrapMaybe unwrapInt unwrapBoolinitwithInit initSubSystem quitSubSystemquitwasInitgetError failWithErrorGrabModeGrabOnGrabOff GrabQuery setCaption rawSetCaption getCaption iconifyWindowtryToggleFullscreentoggleFullscreen grabInput queryGrabModewith tryFromFilefromFile mkFinalizedRWfree glSwapBuffersGLValueGLAttr ListModesAnyOK NonAvailableModesToggleQueryEnableDisablePalettetoToggle fromToggletryGetVideoSurfacegetVideoSurfacetryVideoDriverNamevideoDriverName getVideoInfo listModes videoModeOKtrySetVideoMode setVideoMode updateRect updateRectstryFlipflip setColors setPalettesetGammatryGetGammaRamp getGammaRamptrySetGammaRamp setGammaRampmapRGBmapRGBAgetRGBgetRGBAtryCreateRGBSurfacecreateRGBSurfacetryCreateRGBSurfaceEndiancreateRGBSurfaceEndiantryCreateRGBSurfaceFromcreateRGBSurfaceFrom freeSurface lockSurface unlockSurfaceloadBMPsaveBMP setColorKeysetAlpha setClipRect getClipRect withClipRecttryConvertSurfaceconvertSurface blitSurfacefillRecttryDisplayFormat displayFormattryDisplayFormatAlphadisplayFormatAlpha warpMouse showCursorqueryCursorState glRedSize glGreenSize glBlueSize glAlphaSize glBufferSizeglDoubleBuffer glDepthSize glStencilSizeglAccumRedSizeglAccumGreenSizeglAccumBlueSizeglAccumAlphaSizeglStereoglMultiSampleBuffersglMultiSampleSamplestryGLSetAttributeglSetAttributetryGLGetAttributeglGetAttributemkFinalizedSurface pumpEvents UserEventIDUID7UID6UID5UID4UID3UID2UID1UID0FocusApplicationFocus InputFocus MouseFocus MouseButtonButtonWheelDown ButtonWheelUp ButtonRight ButtonMiddle ButtonLeftEventUnknownUserQuit VideoExpose VideoResize JoyButtonUp JoyButtonDown JoyHatMotion JoyBallMotion JoyAxisMotion MouseButtonUpMouseButtonDown MouseMotionKeyUpKeyDown LostFocusGotFocusNoEventSDLEvent SDLNumEvents SDLUserEventSDLVideoExposeSDLVideoResize SDLSysWMEventSDLQuitSDLJoyButtonUpSDLJoyButtonDownSDLJoyHatMotionSDLJoyBallMotionSDLJoyAxisMotionSDLMouseButtonUpSDLMouseButtonDownSDLMouseMotionSDLKeyUp SDLKeyDownSDLActiveEvent SDLNoEvent toSafePtr typeOfSafePtrtryFromSafePtr fromSafePtrenableKeyRepeat enableUnicodequeryUnicodeState getKeyName getModState setModState getMouseStategetRelativeMouseState pollEvent tryPushEvent pushEvent waitEventwaitEventBlocking enableEventqueryEventState getAppStateupdatecountAvailabletryNamenametryOpenopenopenedindex axesAvailableballsAvailable hatsAvailablebuttonsAvailablegetAxisgetHat getButtongetBallclose sdlHasAltiVec sdlHasSSE2 sdlHasSSEsdlHas3DNowExt sdlHas3DNow sdlHasMMXExt sdlHasMMX sdlHasRDTSCsdlLinkedVersion SDLVersionPixels PixelsData sdlGetError sdlWasInitsdlQuitsdlQuitSubSystemsdlInitSubSystemsdlInit sdlGrabInputsdlToggleFullScreensdlIconifyWindow sdlGetCaption sdlSetCaption toGrabMode fromGrabMode rwFreeFinal rwFromFilesdlFreeSurfaceFinalsdlGLGetAttributesdlGLSetAttribute sdlShowCursor sdlWarpMousesdlDisplayFormatAlphasdlDisplayFormat sdlFillRectsdlBlitSurfacesdlConvertSurfacesdlGetClipRectsdlSetClipRect sdlSetAlphasdlSetColorKey sdlSaveBMP_RW sdlLoadBMP_RWsdlUnlockSurfacesdlLockSurfacesdlCreateRGBSurfaceFromsdlCreateRGBSurface sdlGetRGBA sdlGetRGB sdlMapRGBA sdlMapRGBsdlSetGammaRampsdlGetGammaRamp sdlSetGamma sdlSetPalette sdlSetColorssdlFlipsdlUpdateRects sdlUpdateRectsdlSetVideoModesdlVideoModeOK sdlListModessdlGetVideoInfosdlVideoDriverNamesdlGetVideoSurfacePhysicalLogical tryLoadBMPRW loadBMPRW saveBMPRWsdlGetAppState sdlEventState sdlWaitEvent sdlPushEvent sdlPollEventsdlGetRelativeMouseStatesdlGetMouseStatesdlSetModStatesdlGetModState sdlGetKeyNamesdlEnableUnicodesdlEnableKeyRepeatSafePtr fromSDLEvent toSDLEvent toEventType fromEventTypepeekActiveEventpeekKeypeekMouseMotion peekMousepeekJoyAxisMotionpeekJoyBallMotionpeekJoyHatMotion peekJoyButton peekResize peekUserEvent getEventTypeeventToSDLEventpokeActiveEventpokeKeypokeMouseMotionpokeMouseButtonpokeJoyAxisMotionpokeJoyBallMotionpokeJoyHatMotion pokeJoyButton pokeResize pokeUserEvent mousePressedmouseStateGettersdlCloseJoystickFinaljoystickGetBalljoystickGetButtonjoystickGetHatjoystickGetAxissdlJoystickNumButtonssdlJoystickNumHatssdlJoystickNumBallssdlJoystickNumAxessdlJoystickIndexsdlJoystickOpenedsdlJoystickOpensdlJoystickName JoystickIndexmkFinalizedJoystick