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