00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include "xrb_inputstate.hpp"
00012
00013 #include "xrb_emptystring.hpp"
00014 #include "xrb_input_events.hpp"
00015
00016 namespace Xrb
00017 {
00018
00019 InputState::InputState ()
00020 :
00021 EventHandler(NULL)
00022 {
00023 m_is_caps_lock_on = false;
00024 m_is_num_lock_on = false;
00025 m_is_scroll_lock_on = false;
00026
00027 InitKeyMaps();
00028 }
00029
00030 InputState::~InputState ()
00031 {
00032
00033 for (KeyCodeMap::iterator it = m_keycode_map.begin(),
00034 it_end = m_keycode_map.end();
00035 it != it_end;
00036 ++it)
00037 {
00038 Delete(it->second);
00039 }
00040 m_keycode_map.clear();
00041 m_keyname_map.clear();
00042 }
00043
00044 Key const *InputState::GetKey (Key::Code const code) const
00045 {
00046 KeyCodeMap::const_iterator it = m_keycode_map.find(code);
00047 if (it == m_keycode_map.end())
00048 return NULL;
00049 else
00050 {
00051 ASSERT1(it->second != NULL);
00052 return it->second;
00053 }
00054 }
00055
00056 Key const *InputState::GetKey (std::string const &name) const
00057 {
00058 KeyNameMap::const_iterator it = m_keyname_map.find(name);
00059 if (it == m_keyname_map.end())
00060 return NULL;
00061 else
00062 {
00063 ASSERT1(it->second != NULL);
00064 return it->second;
00065 }
00066 }
00067
00068 bool InputState::IsValidKeyCode (Key::Code const code) const
00069 {
00070 return m_keycode_map.find(code) != m_keycode_map.end();
00071 }
00072
00073 bool InputState::IsValidKeyName (std::string const &name) const
00074 {
00075 return m_keyname_map.find(name) != m_keyname_map.end();
00076 }
00077
00078 Key::Code InputState::KeyCode (std::string const &name) const
00079 {
00080 KeyNameMap::const_iterator it = m_keyname_map.find(name);
00081 if (it == m_keyname_map.end())
00082 return Key::INVALID;
00083 else
00084 {
00085 ASSERT1(it->second != NULL);
00086 return it->second->GetCode();
00087 }
00088 }
00089
00090 std::string const &InputState::KeyName (Key::Code const code) const
00091 {
00092 KeyCodeMap::const_iterator it = m_keycode_map.find(code);
00093 if (it == m_keycode_map.end())
00094 return g_empty_string;
00095 else
00096 {
00097 ASSERT1(it->second != NULL);
00098 return it->second->Name();
00099 }
00100 }
00101
00102 bool InputState::IsKeyPressed (Key::Code const code) const
00103 {
00104 Key const *key = GetKey(code);
00105 if (key != NULL)
00106 return key->IsPressed();
00107 else
00108 return false;
00109 }
00110
00111 bool InputState::IsKeyPressed (std::string const &name) const
00112 {
00113 Key const *key = GetKey(name);
00114 if (key != NULL)
00115 return key->IsPressed();
00116 else
00117 return false;
00118 }
00119
00120 bool InputState::IsEitherAltKeyPressed () const
00121 {
00122 return GetKey(Key::LALT)->IsPressed() ||
00123 GetKey(Key::RALT)->IsPressed();
00124 }
00125
00126 bool InputState::IsEitherControlKeyPressed () const
00127 {
00128 return GetKey(Key::LCTRL)->IsPressed() ||
00129 GetKey(Key::RCTRL)->IsPressed();
00130 }
00131
00132 bool InputState::IsEitherShiftKeyPressed () const
00133 {
00134 return GetKey(Key::LSHIFT)->IsPressed() ||
00135 GetKey(Key::RSHIFT)->IsPressed();
00136 }
00137
00138 Key::Modifier InputState::Modifier () const
00139 {
00140 return Key::Modifier(
00141 (IsKeyPressed(Key::LALT) ? Key::MOD_LALT : 0) |
00142 (IsKeyPressed(Key::RALT) ? Key::MOD_RALT : 0) |
00143 (IsKeyPressed(Key::LCTRL) ? Key::MOD_LCTRL : 0) |
00144 (IsKeyPressed(Key::RCTRL) ? Key::MOD_RCTRL : 0) |
00145 (IsKeyPressed(Key::LSHIFT) ? Key::MOD_LSHIFT : 0) |
00146 (IsKeyPressed(Key::RSHIFT) ? Key::MOD_RSHIFT : 0) |
00147 (IsKeyPressed(Key::LMETA) ? Key::MOD_LMETA : 0) |
00148 (IsKeyPressed(Key::RMETA) ? Key::MOD_RMETA : 0) |
00149 (IsKeyPressed(Key::NUMLOCK) ? Key::MOD_NUM : 0) |
00150 (IsKeyPressed(Key::CAPSLOCK) ? Key::MOD_CAPS : 0));
00151 }
00152
00153 void InputState::ResetPressed ()
00154 {
00155 for (KeyCodeMap::const_iterator it = m_keycode_map.begin(),
00156 it_end = m_keycode_map.end();
00157 it != it_end;
00158 ++it)
00159 {
00160 ASSERT1(it->second != NULL);
00161 it->second->ResetPressed();
00162 }
00163 }
00164
00165 bool InputState::HandleEvent (Event const *const e)
00166 {
00167 ASSERT1(e != NULL);
00168
00169 Key::Code code;
00170 switch (e->GetEventType())
00171 {
00172 case Event::KEYDOWN:
00173 code = static_cast<EventKeyDown const *const>(e)->KeyCode();
00174
00175
00176 if (code == Key::CAPSLOCK)
00177 m_is_caps_lock_on = !m_is_caps_lock_on;
00178 else if (code == Key::NUMLOCK)
00179 m_is_num_lock_on = !m_is_num_lock_on;
00180 else if (code == Key::SCROLLLOCK)
00181 m_is_scroll_lock_on = !m_is_scroll_lock_on;
00182 break;
00183
00184 case Event::KEYUP:
00185 code = static_cast<EventKeyUp const *const>(e)->KeyCode();
00186 break;
00187
00188 case Event::MOUSEBUTTONDOWN:
00189 code = static_cast<EventMouseButtonDown const *const>(e)->ButtonCode();
00190 break;
00191
00192 case Event::MOUSEBUTTONUP:
00193 code = static_cast<EventMouseButtonUp const *const>(e)->ButtonCode();
00194 break;
00195
00196 default:
00197 return false;
00198 }
00199
00200 KeyCodeMap::const_iterator it = m_keycode_map.find(code);
00201 if (it != m_keycode_map.end())
00202 {
00203 ASSERT1(it->second != NULL);
00204 return it->second->ProcessEvent(e);
00205 }
00206
00207 else
00208 return false;
00209 }
00210
00211 void InputState::InitKeyMaps ()
00212 {
00213
00214 m_keycode_map[Key::NONE] = Key::Create(Key::NONE, "NONE");
00215 m_keycode_map[Key::UNKNOWN] = Key::Create(Key::UNKNOWN, "UNKNOWN");
00216 m_keycode_map[Key::LEFTMOUSE] = Key::Create(Key::LEFTMOUSE, "LEFTMOUSE");
00217 m_keycode_map[Key::MIDDLEMOUSE] = Key::Create(Key::MIDDLEMOUSE, "MIDDLEMOUSE");
00218 m_keycode_map[Key::RIGHTMOUSE] = Key::Create(Key::RIGHTMOUSE, "RIGHTMOUSE");
00219 m_keycode_map[Key::MOUSEWHEELUP] = Key::Create(Key::MOUSEWHEELUP, "MOUSEWHEELUP");
00220 m_keycode_map[Key::MOUSEWHEELDOWN] = Key::Create(Key::MOUSEWHEELDOWN, "MOUSEWHEELDOWN");
00221 m_keycode_map[Key::BACKSPACE] = Key::Create(Key::BACKSPACE, "BACKSPACE");
00222 m_keycode_map[Key::TAB] = Key::Create(Key::TAB, "TAB");
00223 m_keycode_map[Key::CLEAR] = Key::Create(Key::CLEAR, "CLEAR");
00224 m_keycode_map[Key::RETURN] = Key::Create(Key::RETURN, "RETURN");
00225 m_keycode_map[Key::PAUSE] = Key::Create(Key::PAUSE, "PAUSE");
00226 m_keycode_map[Key::ESCAPE] = Key::Create(Key::ESCAPE, "ESCAPE");
00227 m_keycode_map[Key::SPACE] = Key::Create(Key::SPACE, "SPACE");
00228 m_keycode_map[Key::QUOTE] = Key::Create(Key::QUOTE, "'");
00229 m_keycode_map[Key::COMMA] = Key::Create(Key::COMMA, ",");
00230 m_keycode_map[Key::MINUS] = Key::Create(Key::MINUS, "-");
00231 m_keycode_map[Key::PERIOD] = Key::Create(Key::PERIOD, ".");
00232 m_keycode_map[Key::SLASH] = Key::Create(Key::SLASH, "/");
00233 m_keycode_map[Key::ZERO] = Key::Create(Key::ZERO, "0");
00234 m_keycode_map[Key::ONE] = Key::Create(Key::ONE, "1");
00235 m_keycode_map[Key::TWO] = Key::Create(Key::TWO, "2");
00236 m_keycode_map[Key::THREE] = Key::Create(Key::THREE, "3");
00237 m_keycode_map[Key::FOUR] = Key::Create(Key::FOUR, "4");
00238 m_keycode_map[Key::FIVE] = Key::Create(Key::FIVE, "5");
00239 m_keycode_map[Key::SIX] = Key::Create(Key::SIX, "6");
00240 m_keycode_map[Key::SEVEN] = Key::Create(Key::SEVEN, "7");
00241 m_keycode_map[Key::EIGHT] = Key::Create(Key::EIGHT, "8");
00242 m_keycode_map[Key::NINE] = Key::Create(Key::NINE, "9");
00243 m_keycode_map[Key::SEMICOLON] = Key::Create(Key::SEMICOLON, ";");
00244 m_keycode_map[Key::EQUALS] = Key::Create(Key::EQUALS, "=");
00245 m_keycode_map[Key::LEFTBRACKET] = Key::Create(Key::LEFTBRACKET, "[");
00246 m_keycode_map[Key::BACKSLASH] = Key::Create(Key::BACKSLASH, "\\");
00247 m_keycode_map[Key::RIGHTBRACKET] = Key::Create(Key::RIGHTBRACKET, "]");
00248 m_keycode_map[Key::BACKQUOTE] = Key::Create(Key::BACKQUOTE, "`");
00249 m_keycode_map[Key::A] = Key::Create(Key::A, "A");
00250 m_keycode_map[Key::B] = Key::Create(Key::B, "B");
00251 m_keycode_map[Key::C] = Key::Create(Key::C, "C");
00252 m_keycode_map[Key::D] = Key::Create(Key::D, "D");
00253 m_keycode_map[Key::E] = Key::Create(Key::E, "E");
00254 m_keycode_map[Key::F] = Key::Create(Key::F, "F");
00255 m_keycode_map[Key::G] = Key::Create(Key::G, "G");
00256 m_keycode_map[Key::H] = Key::Create(Key::H, "H");
00257 m_keycode_map[Key::I] = Key::Create(Key::I, "I");
00258 m_keycode_map[Key::J] = Key::Create(Key::J, "J");
00259 m_keycode_map[Key::K] = Key::Create(Key::K, "K");
00260 m_keycode_map[Key::L] = Key::Create(Key::L, "L");
00261 m_keycode_map[Key::M] = Key::Create(Key::M, "M");
00262 m_keycode_map[Key::N] = Key::Create(Key::N, "N");
00263 m_keycode_map[Key::O] = Key::Create(Key::O, "O");
00264 m_keycode_map[Key::P] = Key::Create(Key::P, "P");
00265 m_keycode_map[Key::Q] = Key::Create(Key::Q, "Q");
00266 m_keycode_map[Key::R] = Key::Create(Key::R, "R");
00267 m_keycode_map[Key::S] = Key::Create(Key::S, "S");
00268 m_keycode_map[Key::T] = Key::Create(Key::T, "T");
00269 m_keycode_map[Key::U] = Key::Create(Key::U, "U");
00270 m_keycode_map[Key::V] = Key::Create(Key::V, "V");
00271 m_keycode_map[Key::W] = Key::Create(Key::W, "W");
00272 m_keycode_map[Key::X] = Key::Create(Key::X, "X");
00273 m_keycode_map[Key::Y] = Key::Create(Key::Y, "Y");
00274 m_keycode_map[Key::Z] = Key::Create(Key::Z, "Z");
00275 m_keycode_map[Key::DELETE] = Key::Create(Key::DELETE, "DELETE");
00276 m_keycode_map[Key::WORLD_0] = Key::Create(Key::WORLD_0, "WORLD_0");
00277 m_keycode_map[Key::WORLD_1] = Key::Create(Key::WORLD_1, "WORLD_1");
00278 m_keycode_map[Key::WORLD_2] = Key::Create(Key::WORLD_2, "WORLD_2");
00279 m_keycode_map[Key::WORLD_3] = Key::Create(Key::WORLD_3, "WORLD_3");
00280 m_keycode_map[Key::WORLD_4] = Key::Create(Key::WORLD_4, "WORLD_4");
00281 m_keycode_map[Key::WORLD_5] = Key::Create(Key::WORLD_5, "WORLD_5");
00282 m_keycode_map[Key::WORLD_6] = Key::Create(Key::WORLD_6, "WORLD_6");
00283 m_keycode_map[Key::WORLD_7] = Key::Create(Key::WORLD_7, "WORLD_7");
00284 m_keycode_map[Key::WORLD_8] = Key::Create(Key::WORLD_8, "WORLD_8");
00285 m_keycode_map[Key::WORLD_9] = Key::Create(Key::WORLD_9, "WORLD_9");
00286 m_keycode_map[Key::WORLD_10] = Key::Create(Key::WORLD_10, "WORLD_10");
00287 m_keycode_map[Key::WORLD_11] = Key::Create(Key::WORLD_11, "WORLD_11");
00288 m_keycode_map[Key::WORLD_12] = Key::Create(Key::WORLD_12, "WORLD_12");
00289 m_keycode_map[Key::WORLD_13] = Key::Create(Key::WORLD_13, "WORLD_13");
00290 m_keycode_map[Key::WORLD_14] = Key::Create(Key::WORLD_14, "WORLD_14");
00291 m_keycode_map[Key::WORLD_15] = Key::Create(Key::WORLD_15, "WORLD_15");
00292 m_keycode_map[Key::WORLD_16] = Key::Create(Key::WORLD_16, "WORLD_16");
00293 m_keycode_map[Key::WORLD_17] = Key::Create(Key::WORLD_17, "WORLD_17");
00294 m_keycode_map[Key::WORLD_18] = Key::Create(Key::WORLD_18, "WORLD_18");
00295 m_keycode_map[Key::WORLD_19] = Key::Create(Key::WORLD_19, "WORLD_19");
00296 m_keycode_map[Key::WORLD_20] = Key::Create(Key::WORLD_20, "WORLD_20");
00297 m_keycode_map[Key::WORLD_21] = Key::Create(Key::WORLD_21, "WORLD_21");
00298 m_keycode_map[Key::WORLD_22] = Key::Create(Key::WORLD_22, "WORLD_22");
00299 m_keycode_map[Key::WORLD_23] = Key::Create(Key::WORLD_23, "WORLD_23");
00300 m_keycode_map[Key::WORLD_24] = Key::Create(Key::WORLD_24, "WORLD_24");
00301 m_keycode_map[Key::WORLD_25] = Key::Create(Key::WORLD_25, "WORLD_25");
00302 m_keycode_map[Key::WORLD_26] = Key::Create(Key::WORLD_26, "WORLD_26");
00303 m_keycode_map[Key::WORLD_27] = Key::Create(Key::WORLD_27, "WORLD_27");
00304 m_keycode_map[Key::WORLD_28] = Key::Create(Key::WORLD_28, "WORLD_28");
00305 m_keycode_map[Key::WORLD_29] = Key::Create(Key::WORLD_29, "WORLD_29");
00306 m_keycode_map[Key::WORLD_30] = Key::Create(Key::WORLD_30, "WORLD_30");
00307 m_keycode_map[Key::WORLD_31] = Key::Create(Key::WORLD_31, "WORLD_31");
00308 m_keycode_map[Key::WORLD_32] = Key::Create(Key::WORLD_32, "WORLD_32");
00309 m_keycode_map[Key::WORLD_33] = Key::Create(Key::WORLD_33, "WORLD_33");
00310 m_keycode_map[Key::WORLD_34] = Key::Create(Key::WORLD_34, "WORLD_34");
00311 m_keycode_map[Key::WORLD_35] = Key::Create(Key::WORLD_35, "WORLD_35");
00312 m_keycode_map[Key::WORLD_36] = Key::Create(Key::WORLD_36, "WORLD_36");
00313 m_keycode_map[Key::WORLD_37] = Key::Create(Key::WORLD_37, "WORLD_37");
00314 m_keycode_map[Key::WORLD_38] = Key::Create(Key::WORLD_38, "WORLD_38");
00315 m_keycode_map[Key::WORLD_39] = Key::Create(Key::WORLD_39, "WORLD_39");
00316 m_keycode_map[Key::WORLD_40] = Key::Create(Key::WORLD_40, "WORLD_40");
00317 m_keycode_map[Key::WORLD_41] = Key::Create(Key::WORLD_41, "WORLD_41");
00318 m_keycode_map[Key::WORLD_42] = Key::Create(Key::WORLD_42, "WORLD_42");
00319 m_keycode_map[Key::WORLD_43] = Key::Create(Key::WORLD_43, "WORLD_43");
00320 m_keycode_map[Key::WORLD_44] = Key::Create(Key::WORLD_44, "WORLD_44");
00321 m_keycode_map[Key::WORLD_45] = Key::Create(Key::WORLD_45, "WORLD_45");
00322 m_keycode_map[Key::WORLD_46] = Key::Create(Key::WORLD_46, "WORLD_46");
00323 m_keycode_map[Key::WORLD_47] = Key::Create(Key::WORLD_47, "WORLD_47");
00324 m_keycode_map[Key::WORLD_48] = Key::Create(Key::WORLD_48, "WORLD_48");
00325 m_keycode_map[Key::WORLD_49] = Key::Create(Key::WORLD_49, "WORLD_49");
00326 m_keycode_map[Key::WORLD_50] = Key::Create(Key::WORLD_50, "WORLD_50");
00327 m_keycode_map[Key::WORLD_51] = Key::Create(Key::WORLD_51, "WORLD_51");
00328 m_keycode_map[Key::WORLD_52] = Key::Create(Key::WORLD_52, "WORLD_52");
00329 m_keycode_map[Key::WORLD_53] = Key::Create(Key::WORLD_53, "WORLD_53");
00330 m_keycode_map[Key::WORLD_54] = Key::Create(Key::WORLD_54, "WORLD_54");
00331 m_keycode_map[Key::WORLD_55] = Key::Create(Key::WORLD_55, "WORLD_55");
00332 m_keycode_map[Key::WORLD_56] = Key::Create(Key::WORLD_56, "WORLD_56");
00333 m_keycode_map[Key::WORLD_57] = Key::Create(Key::WORLD_57, "WORLD_57");
00334 m_keycode_map[Key::WORLD_58] = Key::Create(Key::WORLD_58, "WORLD_58");
00335 m_keycode_map[Key::WORLD_59] = Key::Create(Key::WORLD_59, "WORLD_59");
00336 m_keycode_map[Key::WORLD_60] = Key::Create(Key::WORLD_60, "WORLD_60");
00337 m_keycode_map[Key::WORLD_61] = Key::Create(Key::WORLD_61, "WORLD_61");
00338 m_keycode_map[Key::WORLD_62] = Key::Create(Key::WORLD_62, "WORLD_62");
00339 m_keycode_map[Key::WORLD_63] = Key::Create(Key::WORLD_63, "WORLD_63");
00340 m_keycode_map[Key::WORLD_64] = Key::Create(Key::WORLD_64, "WORLD_64");
00341 m_keycode_map[Key::WORLD_65] = Key::Create(Key::WORLD_65, "WORLD_65");
00342 m_keycode_map[Key::WORLD_66] = Key::Create(Key::WORLD_66, "WORLD_66");
00343 m_keycode_map[Key::WORLD_67] = Key::Create(Key::WORLD_67, "WORLD_67");
00344 m_keycode_map[Key::WORLD_68] = Key::Create(Key::WORLD_68, "WORLD_68");
00345 m_keycode_map[Key::WORLD_69] = Key::Create(Key::WORLD_69, "WORLD_69");
00346 m_keycode_map[Key::WORLD_70] = Key::Create(Key::WORLD_70, "WORLD_70");
00347 m_keycode_map[Key::WORLD_71] = Key::Create(Key::WORLD_71, "WORLD_71");
00348 m_keycode_map[Key::WORLD_72] = Key::Create(Key::WORLD_72, "WORLD_72");
00349 m_keycode_map[Key::WORLD_73] = Key::Create(Key::WORLD_73, "WORLD_73");
00350 m_keycode_map[Key::WORLD_74] = Key::Create(Key::WORLD_74, "WORLD_74");
00351 m_keycode_map[Key::WORLD_75] = Key::Create(Key::WORLD_75, "WORLD_75");
00352 m_keycode_map[Key::WORLD_76] = Key::Create(Key::WORLD_76, "WORLD_76");
00353 m_keycode_map[Key::WORLD_77] = Key::Create(Key::WORLD_77, "WORLD_77");
00354 m_keycode_map[Key::WORLD_78] = Key::Create(Key::WORLD_78, "WORLD_78");
00355 m_keycode_map[Key::WORLD_79] = Key::Create(Key::WORLD_79, "WORLD_79");
00356 m_keycode_map[Key::WORLD_80] = Key::Create(Key::WORLD_80, "WORLD_80");
00357 m_keycode_map[Key::WORLD_81] = Key::Create(Key::WORLD_81, "WORLD_81");
00358 m_keycode_map[Key::WORLD_82] = Key::Create(Key::WORLD_82, "WORLD_82");
00359 m_keycode_map[Key::WORLD_83] = Key::Create(Key::WORLD_83, "WORLD_83");
00360 m_keycode_map[Key::WORLD_84] = Key::Create(Key::WORLD_84, "WORLD_84");
00361 m_keycode_map[Key::WORLD_85] = Key::Create(Key::WORLD_85, "WORLD_85");
00362 m_keycode_map[Key::WORLD_86] = Key::Create(Key::WORLD_86, "WORLD_86");
00363 m_keycode_map[Key::WORLD_87] = Key::Create(Key::WORLD_87, "WORLD_87");
00364 m_keycode_map[Key::WORLD_88] = Key::Create(Key::WORLD_88, "WORLD_88");
00365 m_keycode_map[Key::WORLD_89] = Key::Create(Key::WORLD_89, "WORLD_89");
00366 m_keycode_map[Key::WORLD_90] = Key::Create(Key::WORLD_90, "WORLD_90");
00367 m_keycode_map[Key::WORLD_91] = Key::Create(Key::WORLD_91, "WORLD_91");
00368 m_keycode_map[Key::WORLD_92] = Key::Create(Key::WORLD_92, "WORLD_92");
00369 m_keycode_map[Key::WORLD_93] = Key::Create(Key::WORLD_93, "WORLD_93");
00370 m_keycode_map[Key::WORLD_94] = Key::Create(Key::WORLD_94, "WORLD_94");
00371 m_keycode_map[Key::WORLD_95] = Key::Create(Key::WORLD_95, "WORLD_95");
00372 m_keycode_map[Key::KP0] = Key::Create(Key::KP0, "KP0");
00373 m_keycode_map[Key::KP1] = Key::Create(Key::KP1, "KP1");
00374 m_keycode_map[Key::KP2] = Key::Create(Key::KP2, "KP2");
00375 m_keycode_map[Key::KP3] = Key::Create(Key::KP3, "KP3");
00376 m_keycode_map[Key::KP4] = Key::Create(Key::KP4, "KP4");
00377 m_keycode_map[Key::KP5] = Key::Create(Key::KP5, "KP5");
00378 m_keycode_map[Key::KP6] = Key::Create(Key::KP6, "KP6");
00379 m_keycode_map[Key::KP7] = Key::Create(Key::KP7, "KP7");
00380 m_keycode_map[Key::KP8] = Key::Create(Key::KP8, "KP8");
00381 m_keycode_map[Key::KP9] = Key::Create(Key::KP9, "KP9");
00382 m_keycode_map[Key::KP_PERIOD] = Key::Create(Key::KP_PERIOD, "KP_PERIOD");
00383 m_keycode_map[Key::KP_DIVIDE] = Key::Create(Key::KP_DIVIDE, "KP_DIVIDE");
00384 m_keycode_map[Key::KP_MULTIPLY] = Key::Create(Key::KP_MULTIPLY, "KP_MULTIPLY");
00385 m_keycode_map[Key::KP_MINUS] = Key::Create(Key::KP_MINUS, "KP_MINUS");
00386 m_keycode_map[Key::KP_PLUS] = Key::Create(Key::KP_PLUS, "KP_PLUS");
00387 m_keycode_map[Key::KP_ENTER] = Key::Create(Key::KP_ENTER, "KP_ENTER");
00388 m_keycode_map[Key::KP_EQUALS] = Key::Create(Key::KP_EQUALS, "KP_EQUALS");
00389 m_keycode_map[Key::UP] = Key::Create(Key::UP, "UP");
00390 m_keycode_map[Key::DOWN] = Key::Create(Key::DOWN, "DOWN");
00391 m_keycode_map[Key::RIGHT] = Key::Create(Key::RIGHT, "RIGHT");
00392 m_keycode_map[Key::LEFT] = Key::Create(Key::LEFT, "LEFT");
00393 m_keycode_map[Key::INSERT] = Key::Create(Key::INSERT, "INSERT");
00394 m_keycode_map[Key::HOME] = Key::Create(Key::HOME, "HOME");
00395 m_keycode_map[Key::END] = Key::Create(Key::END, "END");
00396 m_keycode_map[Key::PAGEUP] = Key::Create(Key::PAGEUP, "PAGEUP");
00397 m_keycode_map[Key::PAGEDOWN] = Key::Create(Key::PAGEDOWN, "PAGEDOWN");
00398 m_keycode_map[Key::F1] = Key::Create(Key::F1, "F1");
00399 m_keycode_map[Key::F2] = Key::Create(Key::F2, "F2");
00400 m_keycode_map[Key::F3] = Key::Create(Key::F3, "F3");
00401 m_keycode_map[Key::F4] = Key::Create(Key::F4, "F4");
00402 m_keycode_map[Key::F5] = Key::Create(Key::F5, "F5");
00403 m_keycode_map[Key::F6] = Key::Create(Key::F6, "F6");
00404 m_keycode_map[Key::F7] = Key::Create(Key::F7, "F7");
00405 m_keycode_map[Key::F8] = Key::Create(Key::F8, "F8");
00406 m_keycode_map[Key::F9] = Key::Create(Key::F9, "F9");
00407 m_keycode_map[Key::F10] = Key::Create(Key::F10, "F10");
00408 m_keycode_map[Key::F11] = Key::Create(Key::F11, "F11");
00409 m_keycode_map[Key::F12] = Key::Create(Key::F12, "F12");
00410 m_keycode_map[Key::F13] = Key::Create(Key::F13, "F13");
00411 m_keycode_map[Key::F14] = Key::Create(Key::F14, "F14");
00412 m_keycode_map[Key::F15] = Key::Create(Key::F15, "F15");
00413 m_keycode_map[Key::NUMLOCK] = Key::Create(Key::NUMLOCK, "NUMLOCK");
00414 m_keycode_map[Key::CAPSLOCK] = Key::Create(Key::CAPSLOCK, "CAPSLOCK");
00415 m_keycode_map[Key::SCROLLLOCK] = Key::Create(Key::SCROLLLOCK, "SCROLLOCK");
00416 m_keycode_map[Key::RSHIFT] = Key::Create(Key::RSHIFT, "RIGHTSHIFT");
00417 m_keycode_map[Key::LSHIFT] = Key::Create(Key::LSHIFT, "LEFTSHIFT");
00418 m_keycode_map[Key::RCTRL] = Key::Create(Key::RCTRL, "RIGHTCONTROL");
00419 m_keycode_map[Key::LCTRL] = Key::Create(Key::LCTRL, "LEFTCONTROL");
00420 m_keycode_map[Key::RALT] = Key::Create(Key::RALT, "RIGHTALT");
00421 m_keycode_map[Key::LALT] = Key::Create(Key::LALT, "LEFTALT");
00422 m_keycode_map[Key::RMETA] = Key::Create(Key::RMETA, "RIGHTMETA");
00423 m_keycode_map[Key::LMETA] = Key::Create(Key::LMETA, "LEFTMETA");
00424 m_keycode_map[Key::LWINBLOWS] = Key::Create(Key::LWINBLOWS, "LEFTWINDOWS");
00425 m_keycode_map[Key::RWINBLOWS] = Key::Create(Key::RWINBLOWS, "RIGHTWINDEOWS");
00426 m_keycode_map[Key::MODE] = Key::Create(Key::MODE, "MODE");
00427 m_keycode_map[Key::COMPOSE] = Key::Create(Key::COMPOSE, "COMPOSE");
00428 m_keycode_map[Key::HELP] = Key::Create(Key::HELP, "HELP");
00429 m_keycode_map[Key::PRINT] = Key::Create(Key::PRINT, "PRINT");
00430 m_keycode_map[Key::SYSREQ] = Key::Create(Key::SYSREQ, "SYSREQ");
00431 m_keycode_map[Key::BREAK] = Key::Create(Key::BREAK, "BREAK");
00432 m_keycode_map[Key::MENU] = Key::Create(Key::MENU, "MENU");
00433 m_keycode_map[Key::POWER] = Key::Create(Key::POWER, "POWER");
00434 m_keycode_map[Key::EURO] = Key::Create(Key::EURO, "EURO");
00435 m_keycode_map[Key::UNDO] = Key::Create(Key::UNDO, "UNDO");
00436
00437
00438 for (KeyCodeMap::const_iterator it = m_keycode_map.begin(),
00439 it_end = m_keycode_map.end();
00440 it != it_end;
00441 ++it)
00442 {
00443 ASSERT1(it->second != NULL);
00444 m_keyname_map[it->second->Name()] = it->second;
00445 }
00446 }
00447
00448 }