SDL_events.h

Estructura SDL_TextInputEvent

Una estructura que contiene información de eventos de entrada de texto del teclado.

typedef struct SDL_TextInputEvent
{
    Uint32 type;                              /**< ::SDL_TEXTINPUT */
    Uint32 timestamp;                         /**< In milliseconds, populated using SDL_GetTicks() */
    Uint32 windowID;                          /**< The window with keyboard focus, if any */
    char text[SDL_TEXTINPUTEVENT_TEXT_SIZE];  /**< The input text */
} SDL_TextInputEvent;

Miembros

type
SDL_TEXTINPUT
timestamp
Marca de tiempo en milisegundos.
windowID
La ventana con el foco del teclado, si hay alguna.
text
El texto de entrada terminado en cero, codificado en UTF-8.

Observaciones

SDL_TextInputEvent es un miembro de la unión SDL_Event y se utiliza cuando se reporta un evento de tipo SDL_TEXTINPUT. Se accede a través del campo de texto del evento.

Explicación detallada (de la lista de correo SDL por Jiang Jiang <gzjjgod arroba gmail.com>):

En una aplicación GUI típica, el SO se encargará de decirte el texto candidato (vía SDL_TEXTEDITING), tú puedes elegir cómo (y dónde) mostrarlo en tu UI. Digamos que con un método de entrada escribí "abc" y obtuve el carácter unicode "X", la aplicación SDL recibirá primero tres eventos SDL_TEXTEDITING con 'a', 'ab' y 'abc', luego finalmente recibirá el evento SDL_TEXTEXTINPUT con el carácter unicode 'X'. Durante este proceso de composición de texto, el usuario puede presionar cualquier tecla arbitraria como Function, backspace, tanto la aplicación SDL como el método de entrada OS lo recibirán y decidirán si tratar con estas teclas o no. Por ejemplo, cuando el usuario pulsa retroceso, la mayoría de los métodos de entrada borrarán el último carácter candidato tecleado y la aplicación SDL recibirá un nuevo evento SDL_TEXTEDITING (digamos que el usuario tecleó a, b, retroceso, c, entonces la aplicación recibirá 4 eventos conteniendo 'a', 'ab', 'a', 'ac' cada uno).

SDL_SetTextInputRect() le da al SO una pista de donde mostrar la lista de texto candidato, ya que el SO no sabe donde quieres dibujar el texto que recibiste a través del evento SDL_TEXTEDITING.