Subversion Repositories Games.Descent

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 pmbaty 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 */