Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

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