1 /* 2 SDL - Simple DirectMedia Layer 3 Copyright (C) 1997-2012 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