# Joystick

## API: ALLEGRO_JOYSTICK

This is an abstract data type representing a physical joystick.  Joystick
objects are also event sources so can be casted to ALLEGRO_EVENT_SOURCE*.

## API: ALLEGRO_JOYSTICK_STATE

This is a structure that is used to hold a "snapshot" of a
joystick's axes and buttons at a particular instant.
All fields public and read-only.

    struct {
          float axis[num_axes];             // -1.0 to 1.0 
    } stick[num_sticks];
    int button[num_buttons];                // 0 to 32767

## API: ALLEGRO_JOYFLAGS

* ALLEGRO_JOYFLAG_DIGITAL  - the stick provides digital input
* ALLEGRO_JOYFLAG_ANALOGUE - the stick provides analogue input

(this enum is a holdover from the old API and may be removed)

## API: al_get_joystick

Get a handle for joystick number NUM on the system.  If successful
a pointer to a joystick object is returned.  Otherwise NULL is
returned.

If the joystick was previously 'gotten' (and not yet released)
then the returned pointer will be the same as in previous calls.

## API: al_get_joystick_axis_name

Return the name of the given axis.  If the axis doesn't exist,
NULL is returned.

## API: al_get_joystick_button_name

Return the name of the given button.  If the button doesn't exist,
NULL is returned.

## API: al_get_joystick_name

Return the name of the given joystick.

## API: al_get_joystick_state

Get the current joystick state.

## API: al_get_joystick_stick_flags

Return the flags of the given "stick".  If the stick doesn't
exist, NULL is returned.

## API: al_get_joystick_stick_name

Return the name of the given "stick".  If the stick doesn't
exist, NULL is returned.

## API: al_get_joystick_num_axes

Return the number of axes on the given "stick".  If the stick
doesn't exist, 0 is returned.

## API: al_get_joystick_num_buttons

Return the number of buttons on the joystick.

## API: al_get_joystick_num_sticks

Return the number of "sticks" on the given joystick.

## API: al_install_joystick

Install a joystick driver, returning true if successful.  If a
joystick driver was already installed, returns true immediately.

## API: al_get_num_joysticks

Return the number of joysticks on the system (depending on the OS
this may not be accurate).  Returns 0 if there is no joystick driver
installed.

## API: al_release_joystick

Release a previously 'gotten' joystick object.

## API: al_uninstall_joystick

Uninstalls the active joystick driver.  All outstanding
ALLEGRO_JOYSTICKs are automatically released.  If no joystick driver
was active, this function does nothing.

This function is automatically called when Allegro is shut down.

