1 /* 2 SDL - Simple DirectMedia Layer 3 Copyright (C) 1997-2006 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 /* Include file for SDL keyboard event handling */ 24 25 #ifndef _SDL_keyboard_h 26 #define _SDL_keyboard_h 27 28 #include "SDL_stdinc.h" 29 #include "SDL_error.h" 30 #include "SDL_keysym.h" 31 32 #include "begin_code.h" 33 /* Set up for C function definitions, even when using C++ */ 34 #ifdef __cplusplus 35 extern "C" { 36 #endif 37 38 /* Keysym structure 39 - The scancode is hardware dependent, and should not be used by general 40 applications. If no hardware scancode is available, it will be 0. 41 42 - The 'unicode' translated character is only available when character 43 translation is enabled by the SDL_EnableUNICODE() API. If non-zero, 44 this is a UNICODE character corresponding to the keypress. If the 45 high 9 bits of the character are 0, then this maps to the equivalent 46 ASCII character: 47 char ch; 48 if ( (keysym.unicode & 0xFF80) == 0 ) { 49 ch = keysym.unicode & 0x7F; 50 } else { 51 An international character.. 52 } 53 */ 54 typedef struct SDL_keysym { 55 Uint8 scancode; /* hardware specific scancode */ 56 SDLKey sym; /* SDL virtual keysym */ 57 SDLMod mod; /* current key modifiers */ 58 Uint16 unicode; /* translated character */ 59 } SDL_keysym; 60 61 /* This is the mask which refers to all hotkey bindings */ 62 #define SDL_ALL_HOTKEYS 0xFFFFFFFF 63 64 /* Function prototypes */ 65 /* 66 * Enable/Disable UNICODE translation of keyboard input. 67 * This translation has some overhead, so translation defaults off. 68 * If 'enable' is 1, translation is enabled. 69 * If 'enable' is 0, translation is disabled. 70 * If 'enable' is -1, the translation state is not changed. 71 * It returns the previous state of keyboard translation. 72 */ 73 extern DECLSPEC int SDLCALL SDL_EnableUNICODE(int enable); 74 75 /* 76 * Enable/Disable keyboard repeat. Keyboard repeat defaults to off. 77 * 'delay' is the initial delay in ms between the time when a key is 78 * pressed, and keyboard repeat begins. 79 * 'interval' is the time in ms between keyboard repeat events. 80 */ 81 #define SDL_DEFAULT_REPEAT_DELAY 500 82 #define SDL_DEFAULT_REPEAT_INTERVAL 30 83 /* 84 * If 'delay' is set to 0, keyboard repeat is disabled. 85 */ 86 extern DECLSPEC int SDLCALL SDL_EnableKeyRepeat(int delay, int interval); 87 extern DECLSPEC void SDLCALL SDL_GetKeyRepeat(int *delay, int *interval); 88 89 /* 90 * Get a snapshot of the current state of the keyboard. 91 * Returns an array of keystates, indexed by the SDLK_* syms. 92 * Used: 93 * Uint8 *keystate = SDL_GetKeyState(NULL); 94 * if ( keystate[SDLK_RETURN] ) ... <RETURN> is pressed. 95 */ 96 extern DECLSPEC Uint8 * SDLCALL SDL_GetKeyState(int *numkeys); 97 98 /* 99 * Get the current key modifier state 100 */ 101 extern DECLSPEC SDLMod SDLCALL SDL_GetModState(void); 102 103 /* 104 * Set the current key modifier state 105 * This does not change the keyboard state, only the key modifier flags. 106 */ 107 extern DECLSPEC void SDLCALL SDL_SetModState(SDLMod modstate); 108 109 /* 110 * Get the name of an SDL virtual keysym 111 */ 112 extern DECLSPEC char * SDLCALL SDL_GetKeyName(SDLKey key); 113 114 115 /* Ends C function definitions when using C++ */ 116 #ifdef __cplusplus 117 } 118 #endif 119 #include "close_code.h" 120 121 #endif /* _SDL_keyboard_h */ 122