Subversion Repositories Games.Descent

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2.     SDL - Simple DirectMedia Layer
  3.     Copyright (C) 1997-2009 Sam Lantinga
  4.  
  5.     This library is free software; you can redistribute it and/or
  6.     modify it under the terms of the GNU Lesser General Public
  7.     License as published by the Free Software Foundation; either
  8.     version 2.1 of the License, or (at your option) any later version.
  9.  
  10.     This library is distributed in the hope that it will be useful,
  11.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13.     Lesser General Public License for more details.
  14.  
  15.     You should have received a copy of the GNU Lesser General Public
  16.     License along with this library; if not, write to the Free Software
  17.     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  18.  
  19.     Sam Lantinga
  20.     slouken@libsdl.org
  21. */
  22.  
  23. /** @file SDL_keyboard.h
  24.  *  Include file for SDL keyboard event handling
  25.  */
  26.  
  27. #ifndef _SDL_keyboard_h
  28. #define _SDL_keyboard_h
  29.  
  30. #include "SDL_stdinc.h"
  31. #include "SDL_error.h"
  32. #include "SDL_keysym.h"
  33.  
  34. #include "begin_code.h"
  35. /* Set up for C function definitions, even when using C++ */
  36. #ifdef __cplusplus
  37. extern "C" {
  38. #endif
  39.  
  40. /** Keysym structure
  41.  *
  42.  *  - The scancode is hardware dependent, and should not be used by general
  43.  *    applications.  If no hardware scancode is available, it will be 0.
  44.  *
  45.  *  - The 'unicode' translated character is only available when character
  46.  *    translation is enabled by the SDL_EnableUNICODE() API.  If non-zero,
  47.  *    this is a UNICODE character corresponding to the keypress.  If the
  48.  *    high 9 bits of the character are 0, then this maps to the equivalent
  49.  *    ASCII character:
  50.  *      @code
  51.  *      char ch;
  52.  *      if ( (keysym.unicode & 0xFF80) == 0 ) {
  53.  *              ch = keysym.unicode & 0x7F;
  54.  *      } else {
  55.  *              An international character..
  56.  *      }
  57.  *      @endcode
  58.  */
  59. typedef struct SDL_keysym {
  60.         Uint8 scancode;                 /**< hardware specific scancode */
  61.         SDLKey sym;                     /**< SDL virtual keysym */
  62.         SDLMod mod;                     /**< current key modifiers */
  63.         Uint16 unicode;                 /**< translated character */
  64. } SDL_keysym;
  65.  
  66. /** This is the mask which refers to all hotkey bindings */
  67. #define SDL_ALL_HOTKEYS         0xFFFFFFFF
  68.  
  69. /* Function prototypes */
  70. /**
  71.  * Enable/Disable UNICODE translation of keyboard input.
  72.  *
  73.  * This translation has some overhead, so translation defaults off.
  74.  *
  75.  * @param[in] enable
  76.  * If 'enable' is 1, translation is enabled.
  77.  * If 'enable' is 0, translation is disabled.
  78.  * If 'enable' is -1, the translation state is not changed.
  79.  *
  80.  * @return It returns the previous state of keyboard translation.
  81.  */
  82. extern DECLSPEC int SDLCALL SDL_EnableUNICODE(int enable);
  83.  
  84. #define SDL_DEFAULT_REPEAT_DELAY        500
  85. #define SDL_DEFAULT_REPEAT_INTERVAL     30
  86. /**
  87.  * Enable/Disable keyboard repeat.  Keyboard repeat defaults to off.
  88.  *
  89.  *  @param[in] delay
  90.  *  'delay' is the initial delay in ms between the time when a key is
  91.  *  pressed, and keyboard repeat begins.
  92.  *
  93.  *  @param[in] interval
  94.  *  'interval' is the time in ms between keyboard repeat events.
  95.  *
  96.  *  If 'delay' is set to 0, keyboard repeat is disabled.
  97.  */
  98. extern DECLSPEC int SDLCALL SDL_EnableKeyRepeat(int delay, int interval);
  99. extern DECLSPEC void SDLCALL SDL_GetKeyRepeat(int *delay, int *interval);
  100.  
  101. /**
  102.  * Get a snapshot of the current state of the keyboard.
  103.  * Returns an array of keystates, indexed by the SDLK_* syms.
  104.  * Usage:
  105.  *      @code
  106.  *      Uint8 *keystate = SDL_GetKeyState(NULL);
  107.  *      if ( keystate[SDLK_RETURN] ) //... \<RETURN> is pressed.
  108.  *      @endcode
  109.  */
  110. extern DECLSPEC Uint8 * SDLCALL SDL_GetKeyState(int *numkeys);
  111.  
  112. /**
  113.  * Get the current key modifier state
  114.  */
  115. extern DECLSPEC SDLMod SDLCALL SDL_GetModState(void);
  116.  
  117. /**
  118.  * Set the current key modifier state.
  119.  * This does not change the keyboard state, only the key modifier flags.
  120.  */
  121. extern DECLSPEC void SDLCALL SDL_SetModState(SDLMod modstate);
  122.  
  123. /**
  124.  * Get the name of an SDL virtual keysym
  125.  */
  126. extern DECLSPEC char * SDLCALL SDL_GetKeyName(SDLKey key);
  127.  
  128.  
  129. /* Ends C function definitions when using C++ */
  130. #ifdef __cplusplus
  131. }
  132. #endif
  133. #include "close_code.h"
  134.  
  135. #endif /* _SDL_keyboard_h */
  136.