SDL_events.h

Enumerado SDL_EventType

Un enumerado de los tipos de eventos que se pueden entregar.

typedef enum
{
    SDL_FIRSTEVENT     = 0,     /**< Unused (do not remove) */

    /* Application events */
    SDL_QUIT           = 0x100, /**< User-requested quit */

    /* These application events have special meaning on iOS, see README-ios.md for details */
    SDL_APP_TERMINATING,        /**< The application is being terminated by the OS
                                     Called on iOS in applicationWillTerminate()
                                     Called on Android in onDestroy()
                                */
    SDL_APP_LOWMEMORY,          /**< The application is low on memory, free memory if possible.
                                     Called on iOS in applicationDidReceiveMemoryWarning()
                                     Called on Android in onLowMemory()
                                */
    SDL_APP_WILLENTERBACKGROUND, /**< The application is about to enter the background
                                     Called on iOS in applicationWillResignActive()
                                     Called on Android in onPause()
                                */
    SDL_APP_DIDENTERBACKGROUND, /**< The application did enter the background and may not get CPU for some time
                                     Called on iOS in applicationDidEnterBackground()
                                     Called on Android in onPause()
                                */
    SDL_APP_WILLENTERFOREGROUND, /**< The application is about to enter the foreground
                                     Called on iOS in applicationWillEnterForeground()
                                     Called on Android in onResume()
                                */
    SDL_APP_DIDENTERFOREGROUND, /**< The application is now interactive
                                     Called on iOS in applicationDidBecomeActive()
                                     Called on Android in onResume()
                                */

    SDL_LOCALECHANGED,  /**< The user's locale preferences have changed. */

    /* Display events */
    SDL_DISPLAYEVENT   = 0x150,  /**< Display state change */

    /* Window events */
    SDL_WINDOWEVENT    = 0x200, /**< Window state change */
    SDL_SYSWMEVENT,             /**< System specific event */

    /* Keyboard events */
    SDL_KEYDOWN        = 0x300, /**< Key pressed */
    SDL_KEYUP,                  /**< Key released */
    SDL_TEXTEDITING,            /**< Keyboard text editing (composition) */
    SDL_TEXTINPUT,              /**< Keyboard text input */
    SDL_KEYMAPCHANGED,          /**< Keymap changed due to a system event such as an
                                     input language or keyboard layout change.
                                */
    SDL_TEXTEDITING_EXT,       /**< Extended keyboard text editing (composition) */

    /* Mouse events */
    SDL_MOUSEMOTION    = 0x400, /**< Mouse moved */
    SDL_MOUSEBUTTONDOWN,        /**< Mouse button pressed */
    SDL_MOUSEBUTTONUP,          /**< Mouse button released */
    SDL_MOUSEWHEEL,             /**< Mouse wheel motion */

    /* Joystick events */
    SDL_JOYAXISMOTION  = 0x600, /**< Joystick axis motion */
    SDL_JOYBALLMOTION,          /**< Joystick trackball motion */
    SDL_JOYHATMOTION,           /**< Joystick hat position change */
    SDL_JOYBUTTONDOWN,          /**< Joystick button pressed */
    SDL_JOYBUTTONUP,            /**< Joystick button released */
    SDL_JOYDEVICEADDED,         /**< A new joystick has been inserted into the system */
    SDL_JOYDEVICEREMOVED,       /**< An opened joystick has been removed */
    SDL_JOYBATTERYUPDATED,      /**< Joystick battery level change */

    /* Game controller events */
    SDL_CONTROLLERAXISMOTION  = 0x650, /**< Game controller axis motion */
    SDL_CONTROLLERBUTTONDOWN,          /**< Game controller button pressed */
    SDL_CONTROLLERBUTTONUP,            /**< Game controller button released */
    SDL_CONTROLLERDEVICEADDED,         /**< A new Game controller has been inserted into the system */
    SDL_CONTROLLERDEVICEREMOVED,       /**< An opened Game controller has been removed */
    SDL_CONTROLLERDEVICEREMAPPED,      /**< The controller mapping was updated */
    SDL_CONTROLLERTOUCHPADDOWN,        /**< Game controller touchpad was touched */
    SDL_CONTROLLERTOUCHPADMOTION,      /**< Game controller touchpad finger was moved */
    SDL_CONTROLLERTOUCHPADUP,          /**< Game controller touchpad finger was lifted */
    SDL_CONTROLLERSENSORUPDATE,        /**< Game controller sensor was updated */

    /* Touch events */
    SDL_FINGERDOWN      = 0x700,
    SDL_FINGERUP,
    SDL_FINGERMOTION,

    /* Gesture events */
    SDL_DOLLARGESTURE   = 0x800,
    SDL_DOLLARRECORD,
    SDL_MULTIGESTURE,

    /* Clipboard events */
    SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard or primary selection changed */

    /* Drag and drop events */
    SDL_DROPFILE        = 0x1000, /**< The system requests a file open */
    SDL_DROPTEXT,                 /**< text/plain drag-and-drop event */
    SDL_DROPBEGIN,                /**< A new set of drops is beginning (NULL filename) */
    SDL_DROPCOMPLETE,             /**< Current set of drops is now complete (NULL filename) */

    /* Audio hotplug events */
    SDL_AUDIODEVICEADDED = 0x1100, /**< A new audio device is available */
    SDL_AUDIODEVICEREMOVED,        /**< An audio device has been removed. */

    /* Sensor events */
    SDL_SENSORUPDATE = 0x1200,     /**< A sensor was updated */

    /* Render events */
    SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */
    SDL_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */

    /* Internal events */
    SDL_POLLSENTINEL = 0x7F00, /**< Signals the end of an event poll cycle */

    /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use,
     *  and should be allocated with SDL_RegisterEvents()
     */
    SDL_USEREVENT    = 0x8000,

    /**
     *  This last event is only for bounding internal arrays
     */
    SDL_LASTEVENT    = 0xFFFF
} SDL_EventType;

Valores

ValorSignificado
SDL_FIRSTEVENT No borrar (sin uso).
Eventos de aplicación
SDL_QUIT Salida solicitada por el usuario; ver observaciones.
SDL_APP_TERMINATING El sistema operativo está terminando la aplicación-
SDL_APP_LOWMEMORY El sistema operativo tiene poca memoria; libera algo.
SDL_APP_WILLENTERBACKGROUND La aplicación está entrando en segundo plano.
SDL_APP_DIDENTERBACKGROUND La aplicación ha entrado en segundo plano.
SDL_APP_WILLENTERFOREGROUND La aplicación va a pasar a primer plano.
SDL_APP_DIDENTERFOREGROUND La aplicación entra en primer plano.
SDL_LOCALECHANGED Las preferencias de configuración regional del usuario han cambiado.
Eventos de display
SDL_DISPLAYEVENT Cambio de estado de la pantalla.
Eventos de ventana
SDL_WINDOWEVENT Cambio de estado de la ventana.
SDL_SYSWMEVENT Evento específico del sistema<./td>
Eventos de teclado
SDL_KEYDOWN Tecla pulsada.
SDL_KEYUP Tecla liberada.
SDL_TEXTEDITING Eedición de texto con teclado (composición).
SDL_TEXTINPUT Entrada de texto por teclado.
SDL_KEYMAPCHANGED El mapa de teclado ha cambiado debido a un evento del sistema, como un cambio en el lenguaje de entrada o en la distribución del teclado (>= SDL 2.0.4).
Eventos del ratón
SDL_MOUSEMOTION El ratón se ha movido.
SDL_MOUSEBUTTONDOWN Se ha pulsado un botón del ratón.
SDL_MOUSEBUTTONUP Se ha liberado un botón del ratón.
SDL_MOUSEWHEEL Movimiento de la rueda del ratón.
Eventos del joystick
SDL_JOYAXISMOTION Movimiento del eje del joystick.
SDL_JOYBALLMOTION Movimiento del trackball del joystick.
SDL_JOYHATMOTION Cambio de posición del sombrero del joystick.
SDL_JOYBUTTONDOWN Botón del joystick pulsado.
SDL_JOYBUTTONUP Botón del joystick librerado.
SDL_JOYDEVICEADDED Joystick conectado.
SDL_JOYDEVICEREMOVED Joystick desconectado.
Eventos del controlador
SDL_CONTROLLERAXISMOTION Movimiento del eje del controlador.
SDL_CONTROLLERBUTTONDOWN Botón del controlador pulsado.
SDL_CONTROLLERBUTTONUP Botón del controlador liberado.
SDL_CONTROLLERDEVICEADDED Controlador conectado.
SDL_CONTROLLERDEVICEREMOVED Controlador desconectado.
SDL_CONTROLLERDEVICEREMAPPED Mapeado del controlador actualizado.
Eventos táctiles
SDL_FINGERDOWN El usuario ha tocado el dispositivo de entrada.
SDL_FINGERUP El usuario ha dejado de tocar el dispositivo de entrada.
SDL_FINGERMOTION El usuario está arrastrando el dedo sobre el dispositivo de entrada.
Eventos gestuales
SDL_DOLLARGESTURE
SDL_DOLLARRECORD
SDL_MULTIGESTURE
Eventos del clipboard
SDL_CLIPBOARDUPDATE El clipboard ha cambiado.
Eventos de drag & drop
SDL_DROPFILE El sistema solicita la apertura de un archivo.
SDL_DROPTEXT Evento de arrastrar y soltar texto.
SDL_DROPBEGIN Comienza un nuevo conjunto de drops (>= SDL 2.0.5).
SDL_DROPCOMPLETE El conjunto actual de drps se ha completado (>= SDL 2.0.5).
Eventos de conexión en caliente de audio
SDL_AUDIODEVICEADDED Un nuevo dispositivo de audio está disponible (>= SDL 2.0.4).
SDL_AUDIODEVICEREMOVED Se ha eliminado un dispositivo de audio (>= SDL 2.0.4).
Eventos de renderizado
SDL_RENDER_TARGETS_RESET Los objetivos de render han sido reiniciados y sus contenidos necesitan ser actualizados (>= SDL 2.0.2).
SDL_RENDER_DEVICE_RESET El dispositivo ha sido reiniciado y todas las texturas necesitan ser recreadas (>= SDL 2.0.4).
Estos son para uso del usuario, y deben ser asignados con SDL_RegisterEvents()
SDL_USEREVENT Un evento especificado por el usuario.
SDL_LASTEVENT Solo para delimitar arrays internos.

Ejemplo

SDL_Event e;
while (SDL_PollEvent(&e)) {
    if (e.type == SDL_KEYDOWN) {
        SDL_Log("User just pressed down a key!");
    }
}

Observaciones

SDL_QUIT

Los eventos SDL_QUIT se generan por varias razones. Una aplicación puede elegir ignorar el evento, por ejemplo, si quiere ofrecer un aviso pidiendo al usuario que guarde el trabajo actual.

Se genera un evento SDL_QUIT cuando el usuario pulsa el botón de cierre de la última ventana existente. Esto ocurre además del evento SDL_WINDOWEVENT/SDL_WINDOWEVENT_CLOSE, por lo que la aplicación puede comprobar el que sea apropiado, o ambos, o ninguno. Si la aplicación ignora este evento y crea otra ventana, SDL_QUIT se enviará de nuevo la próxima vez que el usuario haga clic en el botón de cierre de la última ventana restante.

SDL_QUIT no se limita al cierre de ventanas. En Mac OS X, pulsar Command-Q (el atajo de teclado estándar para "Salir de esta aplicación") hará que SDL genere un evento SDL_QUIT, independientemente de las ventanas que existan en ese momento. Sin embargo, la aplicación sigue siendo responsable de terminarse a sí misma correctamente. Las aplicaciones que ignoren completamente Command-Q no obtendrán la certificación Mac App Store.

En sistemas POSIX, SDL_Init() instala manejadores de señales para SIGINT (interrupción de teclado) y SIGTERM (solicitud de terminación del sistema), si los manejadores no existen ya, que generan eventos SDL_QUIT también. No hay forma de determinar la causa de un evento SDL_QUIT, pero establecer un manejador de señal en su aplicación anulará la generación por defecto de eventos de abandono para esa señal.

Eventos Android, iOS y WinRT

Lo que actualmente denominamos "eventos de Android, iOS y WinRT" son específicos de dispositivos móviles e integrados que tienen requisitos diferentes a los de una aplicación de escritorio habitual. Estos eventos deben ser manejados en un filtro de eventos, ya que a menudo el sistema operativo necesita una respuesta inmediata y terminará su proceso poco después de enviar el evento, y si se sienta en la cola de eventos SDL, será demasiado tarde. Se puede manejar todo lo demás a través de un bucle normal SDL_PollEvent(), pero se debería configurar una llamada de retorno con SDL_SetEventFilter() para estos eventos específicos.

Así es como estos eventos se asignan actualmente al sistema operativo subyacente:

Evento SDLQuéiOSAndroidWinRT
SDL_APP_TERMINATING La aplicación está siendo terminada por el sistema operativo. applicationWillTerminate() onDestroy() Exiting()
SDL_APP_LOWMEMORY La aplicación tiene poca memoria, libere memoria si es posible. applicationDidReceiveMemoryWarning() onLowMemory() --
SDL_APP_WILLENTERBACKGROUND La aplicación está a punto de entrar en segundo plano. applicationWillResignActive() onPause() Suspending()
SDL_APP_DIDENTERBACKGROUND La aplicación entró en segundo plano y puede que no obtenga CPU durante algún tiempo. applicationDidEnterBackground() onPause() Suspending()
SDL_APP_WILLENTERFOREGROUND La aplicación está a punto de entrar en primer plano. applicationWillEnterForeground() onResume() Resuming()
SDL_APP_DIDENTERFOREGROUND La aplicación es ahora interactiva. applicationDidBecomeActive() onResume() Resuming()