<HTML
><HEAD
><TITLE
>SDL_JoystickOpen</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="SDL Library Documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="Joystick"
HREF="joystick.html"><LINK
REL="PREVIOUS"
TITLE="SDL_JoystickName"
HREF="sdljoystickname.html"><LINK
REL="NEXT"
TITLE="SDL_JoystickOpened"
HREF="sdljoystickopened.html"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFF8DC"
TEXT="#000000"
LINK="#0000ee"
VLINK="#551a8b"
ALINK="#ff0000"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>SDL Library Documentation</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="sdljoystickname.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="sdljoystickopened.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><H1
><A
NAME="SDLJOYSTICKOPEN"
></A
>SDL_JoystickOpen</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN6096"
></A
><H2
>Name</H2
>SDL_JoystickOpen&nbsp;--&nbsp;Opens a joystick for use.</DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN6099"
></A
><H2
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><A
NAME="AEN6100"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include "SDL.h"</PRE
><P
><CODE
><CODE
CLASS="FUNCDEF"
>SDL_Joystick *<B
CLASS="FSFUNC"
>SDL_JoystickOpen</B
></CODE
>(int index);</CODE
></P
><P
></P
></DIV
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN6106"
></A
><H2
>Description</H2
><P
>Opens a joystick for use within SDL. The <TT
CLASS="PARAMETER"
><I
>index</I
></TT
> refers to the N'th joystick in the system. A joystick must be opened before it game be used.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN6110"
></A
><H2
>Return Value</H2
><P
>Returns a <SPAN
CLASS="STRUCTNAME"
>SDL_Joystick</SPAN
> structure on success. <SPAN
CLASS="RETURNVALUE"
>NULL</SPAN
> on failure.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN6115"
></A
><H2
>Examples</H2
><P
><PRE
CLASS="PROGRAMLISTING"
>SDL_Joystick *joy;
// Check for joystick
if(SDL_NumJoysticks()&#62;0){
  // Open joystick
  joy=SDL_JoystickOpen(0);
  
  if(joy)
  {
    printf("Opened Joystick 0\n");
    printf("Name: %s\n", SDL_JoystickName(0));
    printf("Number of Axes: %d\n", SDL_JoystickNumAxes(joy));
    printf("Number of Buttons: %d\n", SDL_JoystickNumButtons(joy));
    printf("Number of Balls: %d\n", SDL_JoystickNumBalls(joy));
  }
  else
    printf("Couldn't open Joystick 0\n");
  
  // Close if opened
  if(SDL_JoystickOpened(0))
    SDL_JoystickClose(joy);
}</PRE
></P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN6119"
></A
><H2
>See Also</H2
><P
><A
HREF="sdljoystickclose.html"
><TT
CLASS="FUNCTION"
>SDL_JoystickClose</TT
></A
></P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="sdljoystickname.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="sdljoystickopened.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>SDL_JoystickName</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="joystick.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>SDL_JoystickOpened</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>