Man Linux: Main Page and Category List

NAME

       joy  -  Global  array  of  joystick  state  information.  Allegro  game
       programming library.

SYNOPSIS

       #include <allegro.h>

       extern JOYSTICK_INFO joy[n];

DESCRIPTION

       Global array of joystick state information, which  is  updated  by  the
       poll_joystick()  function.  Only  the first num_joysticks elements will
       contain meaningful information. The JOYSTICK_INFO structure is  defined
       as:

          typedef struct JOYSTICK_INFO
          {
             int flags;                       - status flags for this
                                                joystick
             int num_sticks;                  - how many stick inputs?
             int num_buttons;                 - how many buttons?
             JOYSTICK_STICK_INFO stick[n];    - stick state information
             JOYSTICK_BUTTON_INFO button[n];  - button state information
          } JOYSTICK_INFO;

       The button status is stored in the structure:

          typedef struct JOYSTICK_BUTTON_INFO
          {
             int b;                           - boolean on/off flag
             char *name;                      - description of this
                                                button
          } JOYSTICK_BUTTON_INFO;

       You  may  wish  to  display  the  button  names  as  part  of  an input
       configuration screen to let the user choose what game function will  be
       performed  by  each  button,  but  in simpler situations you can safely
       assume that the first two elements in the button array will  always  be
       the main trigger controls.

       Each  joystick will provide one or more stick inputs, of varying types.
       These can be digital controls which snap to specific positions  (eg.  a
       gamepad  controller,  the  coolie  hat  on a Flightstick Pro or Wingman
       Extreme, or a normal joystick which hasn't  yet  been  calibrated),  or
       they  can be full analogue inputs with a smooth range of motion. Sticks
       may  also  have  different  numbers  of  axes,  for  example  a  normal
       directional control has two, but the Flightstick Pro throttle is only a
       single axis, and it is possible that the system could  be  extended  in
       the  future  to support full 3d controllers. A stick input is described
       by the structure:

          typedef struct JOYSTICK_STICK_INFO
          {
             int flags;                       - status flags for this
                                                input
             int num_axis;                    - how many axes do we
                                                have? (note the misspelling)
             JOYSTICK_AXIS_INFO axis[n];      - axis state information
             char *name;                      - description of this
                                                input
          } JOYSTICK_STICK_INFO;

       A single joystick may provide several different stick inputs,  but  you
       can safely assume that the first element in the stick array will always
       be the main directional controller.

       Information about each of the stick axis is stored in the substructure:

          typedef struct JOYSTICK_AXIS_INFO
          {
             int pos;                         - analogue axis position
             int d1, d2;                      - digital axis position
             char *name;                      - description of this axis
          } JOYSTICK_AXIS_INFO;

       This  provides  both analogue input in the pos field (ranging from -128
       to 128 or from 0 to 255, depending on the type  of  the  control),  and
       digital  values  in  the d1 and d2 fields. For example, when describing
       the X-axis position, the pos field will hold the horizontal position of
       the joystick, d1 will be set if it is moved left, and d2 will be set if
       it is moved right. Allegro will fill in all these values regardless  of
       whether  it  is using a digital or analogue joystick, emulating the pos
       field for digital inputs by snapping it to the min, middle, and maximum
       positions,  and emulating the d1 and d2 values for an analogue stick by
       comparing the current position with the centre point.

       The joystick flags field may contain any combination of the bit flags:

       JOYFLAG_DIGITAL This control is currently providing digital input.

       JOYFLAG_ANALOGUE This control is currently providing analogue input.

       JOYFLAG_CALIB_DIGITAL This control will be capable of providing digital
       input once it has been calibrated, but is not doing this at the moment.

       JOYFLAG_CALIB_ANALOGUE  This  control  will  be  capable  of  providing
       analogue  input  once  it has been calibrated, but is not doing this at
       the moment.

       JOYFLAG_CALIBRATE Indicates that this control needs to  be  calibrated.
       Many devices require multiple calibration steps, so you should call the
       calibrate_joystick() function from a loop until this flag is cleared.

       JOYFLAG_SIGNED Indicates that the analogue axis position is  in  signed
       format,  ranging  from  -128  to  128.  This  is  the  case  for all 2d
       directional controls.

       JOYFLAG_UNSIGNED Indicates  that  the  analogue  axis  position  is  in
       unsigned  format,  ranging  from  0 to 255. This is the case for all 1d
       throttle controls.

       Note for people who spell funny: in case you don't like having to  type
       "analogue",  there  are some #define aliases in allegro/joystick.h that
       will allow you to write "analog" instead.

SEE ALSO

       install_joystick(3alleg), poll_joystick(3alleg), num_joysticks(3alleg),
       calibrate_joystick(3alleg),            calibrate_joystick_name(3alleg),
       exjoy(3alleg)