int install_joystick(int type);
   Inicializa el joystick y calibra el valor de la posición central. El
   parámetro typo debería ser, normalmente, JOY_TYPE_AUTODETECT, o mirar la
   documentación específica de la plataforma para tener una lista de los
   drivers disponibles. Debe llamar a esta rutina antes de usar cualquier
   otra función del joystick, y se debería asegurar que el joystick está en
   la posición central en ese momento. Devuelve cero si no ha habido
   problemas. Tan pronto como haya instalado el módulo de joystick, ya será
   capaz de leer el estado de los botones y la información digital(on/off) de
   la dirección, que puede ser suficiente para algunos juegos. Si quiere
   obtener una entrada totalmente analógica necesitará usar las funciones de
   calibrate_joystick() para medir el rango exacto de las entradas: lea más
   abajo.
Relacionado con: calibrate_joystick_name, poll_joystick, Variables de configuración estándar, JOY_TYPE_*/DOS, remove_joystick, load_joystick_data, calibrate_joystick.void remove_joystick();
Relacionado con: install_joystick, allegro_exit.int poll_joystick();
Relacionado con: install_joystick, joy, num_joysticks.extern int num_joysticks;
Relacionado con: install_joystick, joy.extern JOYSTICK_INFO joy[n];
      typedef struct JOYSTICK_INFO
      {
         int flags;                       - estado de este joystick
         int num_sticks;                  - ¿cuántos joysticks activos?
         int num_buttons;                 - ¿cuántos botones?
         JOYSTICK_STICK_INFO stick[n];    - información de estado del stick
         JOYSTICK_BUTTON_INFO button[n];  - información de estado de los
                                            botones
      } JOYSTICK_INFO;
      typedef struct JOYSTICK_BUTTON_INFO
      {
         int b;                           - estado del botón on/off
         char *name;                      - descripción de este botón
      } JOYSTICK_BUTTON_INFO;
Cada joystick proveerá una o más entradas stick, de varios tipos. Estas pueden ser controles digitales que tienen siempre un valor específico (ej. un gamepad, el sombrero del Flightstick Pro o Wingman Extreme, o un joystick normal que todavía no ha sido calibrado), o pueden ser entradas analógicas con un rango suave de movimiento. Las palancas pueden tener un número diferente de ejes, por ejemplo un controlador direccional normal tiene dos, pero el mando de gases del Flightstick Pro sólo tiene un eje, y es posible que el sistema pueda ser expandido en el futuro para soportar controladores 3d. La entrada de la palanca está descrita por la estructura:
      typedef struct JOYSTICK_STICK_INFO
      {
         int flags;                       - variable de estado
         int num_axis;                    - ¿cuántos ejes tenemos?
         JOYSTICK_AXIS_INFO axis[n];      - información de estado del eje
         char *name;                      - descripción de este stick
      } JOYSTICK_STICK_INFO;
La información sobre los ejes del mando está almacenada en la subestructura:
      typedef struct JOYSTICK_AXIS_INFO
      {
         int pos;                         - posición analógica del eje
         int d1, d2;                      - posición digital del eje
         char *name;                      - descripción de este eje
      } JOYSTICK_AXIS_INFO;
La variable flags de la estructura joystick puede ser cualquier combinación de los siguientes bits:
   JOYFLAG_DIGITAL
      Este control tiene entrada digital.
   JOYFLAG_ANALOGUE
      Este control tiene entrada analógica.
   JOYFLAG_CALIB_DIGITAL
      Este control será capaz de proveer entrada digital una vez sea
      calibrado, pero ahora no lo hace.
   JOYFLAG_CALIB_ANALOGUE
      Este control será capaz de proveer entrada analógica una vez sea
      calibrado, pero ahora no lo hace.
   JOYFLAG_CALIBRATE
      Indica que este control debe ser calibrado. Muchos dispositivos
      requieren múltiples pasos de calibración, por lo que puede llamar la
      función calibrate_joystick() desde un bucle hasta que este bit
      desaparezca.
   JOYFLAG_SIGNED
      Indica que la posición analógica está en formato con signo, que va de
      -128 a 128. Este es el caso de todos los controles direccionales 2d.
   JOYFLAG_UNSIGNED
      Indica que la posición analógica está en formato sin signo, que va de
      0 a 255. Este es el caso de todos los mandos de gases 1d.
Nota para la gente que escribe diferente: en caso que no quiera escribir "analogue", hay varios #defines en allegro/joystick.h que le permitirán escribir "analog" sin problemas.
Relacionado con: calibrate_joystick_name, install_joystick, poll_joystick, num_joysticks, calibrate_joystick.char *calibrate_joystick_name(int n);
Relacionado con: install_joystick, calibrate_joystick, joy, num_joysticks.int calibrate_joystick(int n);
      int i;
      for (i=0; i<;num_joysticks; i++) {
         while (joy[i].flags & JOYFLAG_CALIBRATE) {
            char *msg = calibrate_joystick_name(i);
            printf("%s, y pulsa una tecla\n", msg);
            readkey();
            if (calibrate_joystick(i) != 0) {
               printf("¡oops!\n");
               exit(1);
            }
         }
      }
Relacionado con: install_joystick, calibrate_joystick_name, joy, num_joysticks.int save_joystick_data(const char *filename);
Relacionado con: load_joystick_data, set_config_file.int load_joystick_data(const char *filename);
Relacionado con: install_joystick, save_joystick_data, set_config_file.int initialise_joystick();
Relacionado con: install_joystick.