1 /***************************************************************************
2                           Keyboard.h  -  description
3                              -------------------
4     begin                : Thu Feb 1 2001
5     copyright            : (C) 2001 by Henrik Enqvist
6     email                : henqvist@excite.com
7  ***************************************************************************/
8 
9 
10 #ifndef KEYBOARD_H
11 #define KEYBOARD_H
12 
13 #ifndef PRIVATE_H
14 #error Must include Private.h before Keyboard.h
15 #endif
16 
17 #include <map>
18 
19 #if EM_USE_SDL
20 #include <SDL.h>
21 #define EMKey SDLKey
22 #endif // EM_USE_SDL
23 
24 #if EM_USE_ALLEGRO
25 #include <allegro.h>
26 
27 #define EMKey int
28 
29 #define SDLK_BACKSPACE KEY_BACKSPACE
30 #define SDLK_TAB KEY_TAB
31 //#define SDLK_CLEAR
32 #define SDLK_RETURN KEY_ENTER
33 //#define SDLK_PAUSE
34 #define SDLK_ESCAPE KEY_ESC
35 #define SDLK_SPACE KEY_SPACE
36 //#define SDLK_EXCLAIM
37 //#define SDLK_QUOTEDBL
38 //#define SDLK_HASH
39 //#define SDLK_DOLLAR
40 //#define SDLK_AMPERSAND
41 //#define SDLK_QUOTE
42 //#define SDLK_LEFTPAREN
43 //#define SDLK_RIGHTPAREN
44 //#define SDLK_ASTERISK
45 //#define SDLK_PLUS
46 //#define SDLK_COMMA
47 //#define SDLK_MINUS
48 //#define SDLK_PERIOD
49 //#define SDLK_SLASH
50 #define SDLK_0 KEY_0
51 #define SDLK_1 KEY_1
52 #define SDLK_2 KEY_2
53 #define SDLK_3 KEY_3
54 #define SDLK_4 KEY_4
55 #define SDLK_5 KEY_5
56 #define SDLK_6 KEY_6
57 #define SDLK_7 KEY_7
58 #define SDLK_8 KEY_8
59 #define SDLK_9 KEY_9
60 // etc
61 
62 #define SDLK_a KEY_A
63 #define SDLK_b KEY_B
64 #define SDLK_c KEY_C
65 #define SDLK_d KEY_D
66 #define SDLK_e KEY_E
67 #define SDLK_f KEY_F
68 #define SDLK_g KEY_G
69 #define SDLK_h KEY_H
70 #define SDLK_i KEY_I
71 #define SDLK_j KEY_J
72 #define SDLK_k KEY_K
73 #define SDLK_l KEY_L
74 #define SDLK_m KEY_M
75 #define SDLK_n KEY_N
76 #define SDLK_o KEY_O
77 #define SDLK_p KEY_P
78 #define SDLK_q KEY_Q
79 #define SDLK_r KEY_R
80 #define SDLK_s KEY_S
81 #define SDLK_t KEY_T
82 #define SDLK_u KEY_U
83 #define SDLK_v KEY_V
84 #define SDLK_w KEY_W
85 #define SDLK_x KEY_X
86 #define SDLK_y KEY_Y
87 #define SDLK_z KEY_Z
88 
89 #define SDLK_INSERT KEY_INSERT
90 #define SDLK_DELETE KEY_DEL
91 #define SDLK_HOME KEY_HOME
92 #define SDLK_END KEY_END
93 #define SDLK_PAGEUP KEY_PGUP
94 #define SDLK_PAGEDOWN KEY_PGDN
95 #define SDLK_LEFT KEY_LEFT
96 #define SDLK_RIGHT KEY_RIGHT
97 #define SDLK_UP KEY_UP
98 #define SDLK_DOWN KEY_DOWN
99 
100 #define SDLK_LSHIFT KEY_LSHIFT
101 #define SDLK_RSHIFT KEY_RSHIFT
102 #define SDLK_LCTRL KEY_LCONTROL
103 #define SDLK_RCTRL KEY_RCONTROL
104 #define SDLK_COMPOSE KEY_ALTGR
105 
106 #define SDLK_F1 KEY_F1
107 #define SDLK_F2 KEY_F2
108 #define SDLK_F3 KEY_F3
109 #define SDLK_F3 KEY_F4
110 #define SDLK_F1 KEY_F5
111 #define SDLK_F2 KEY_F6
112 #define SDLK_F3 KEY_F7
113 #define SDLK_F3 KEY_F8
114 
115 #endif // EM_USE_ALLEGRO
116 
117 
118 /** @author Henrik Enqvist */
119 
120 class Keyboard {
121  public:
122   Keyboard();
123   ~Keyboard();
124   static void clear();
125   static void poll();
126   static bool isKeyDown(EMKey piKey);
127   static EMKey waitForKey();
128   static void generate(EMKey sym);
129 #if EM_USE_SDL
130 private:
131   static std::map<EMKey, bool> m_abKey;
132 #endif
133 };
134 
135 #endif // KEYBOARD_H
136