From 72ee43e9470c6fdbc6ed7ff92b85dfa5062c5762 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Tue, 6 Jan 2015 18:51:37 +0000 Subject: Added separate event handlers for mouse button clicks and mouse wheel movement. --- src/client/keyboard.cc | 381 ++++++++++++++++++++++++------------------------- 1 file changed, 183 insertions(+), 198 deletions(-) (limited to 'src/client/keyboard.cc') diff --git a/src/client/keyboard.cc b/src/client/keyboard.cc index 86fb2d4..e21fc91 100644 --- a/src/client/keyboard.cc +++ b/src/client/keyboard.cc @@ -66,188 +66,173 @@ Keyboard::Keyboard() // ------------------ KEYS Key *key = 0; - add_key("backspace", SDLK_BACKSPACE); - add_key("tab", SDLK_TAB, 0, "impulse"); - add_key("clear", SDLK_CLEAR); - key = add_key("enter", SDLK_RETURN, 0, "ui_chat"); + add_key(SDL_SCANCODE_BACKSPACE, "backspace"); + add_key(SDL_SCANCODE_TAB, "tab", 0, "impulse"); + add_key(SDL_SCANCODE_CLEAR, "clear"); + key = add_key( SDL_SCANCODE_RETURN, "enter", 0, "ui_chat"); key->assign(Key::Alt, "toggle r_fullscreen"); - add_key("pause", SDLK_PAUSE); - add_key("esc", SDLK_ESCAPE); - add_key("space", SDLK_SPACE, ' ', "ui_control"); - add_key("!", SDLK_EXCLAIM, '!'); - add_key("\"", SDLK_QUOTEDBL, '"'); - add_key("#", SDLK_HASH, '#'); - add_key("$", SDLK_DOLLAR, '$'); - add_key("&", SDLK_AMPERSAND, '&'); - add_key("'", SDLK_QUOTE, '\''); - add_key("(", SDLK_LEFTPAREN, '('); - add_key(")", SDLK_RIGHTPAREN, ')'); - add_key("*", SDLK_ASTERISK, '*'); - add_key("+", SDLK_PLUS, '+'); - add_key(",", SDLK_COMMA, ','); - add_key("-", SDLK_MINUS, '-'); - add_key(".", SDLK_PERIOD, '.'); - add_key("/", SDLK_SLASH, '/'); - - add_key("0", SDLK_0, '0'); - add_key("1", SDLK_1, '1'); - add_key("2", SDLK_2, '2'); - add_key("3", SDLK_3, '3'); - add_key("4", SDLK_4, '4'); - add_key("5", SDLK_5, '5'); - add_key("6", SDLK_6, '6'); - add_key("7", SDLK_7, '7'); - add_key("8", SDLK_8, '8'); - add_key("9", SDLK_9, '9'); - - add_key(":", SDLK_COLON, ':'); - add_key(";", SDLK_SEMICOLON, ';'); - add_key("<", SDLK_LESS, '<'); - add_key("=", SDLK_EQUALS, '='); - add_key(">", SDLK_GREATER, '>'); - add_key("?", SDLK_QUESTION, '?'); - add_key("@", SDLK_AT, '@'); - add_key("[", SDLK_LEFTBRACKET, '['); - add_key("\\", SDLK_BACKSLASH, '\\'); - add_key("]", SDLK_RIGHTBRACKET, ']'); - add_key("^", SDLK_CARET, '^'); - add_key("_", SDLK_UNDERSCORE, '_'); - add_key("`", SDLK_BACKQUOTE, '`', "+console"); - - add_key("a", SDLK_a, 'a', "+strafeleft"); - add_key("b", SDLK_b, 'b', "beam"); - add_key("c", SDLK_c, 'c'); - add_key("d", SDLK_d, 'd', "+straferight"); - add_key("e", SDLK_e, 'e', "+rollright"); - add_key("f", SDLK_f, 'f', "+strafedown"); - add_key("g", SDLK_g, 'g'); - add_key("h", SDLK_h, 'h'); - add_key("i", SDLK_i, 'i', "ui_inventory"); - add_key("j", SDLK_j, 'j'); - add_key("k", SDLK_k, 'k'); - add_key("l", SDLK_l, 'l'); - add_key("m", SDLK_m, 'm', "ui_map"); - key = add_key("n", SDLK_n, 'n', "target_next"); + add_key(SDL_SCANCODE_PAUSE, "pause"); + add_key(SDL_SCANCODE_ESCAPE, "esc"); + add_key(SDL_SCANCODE_SPACE, "space", ' ', "ui_control"); + + add_key(SDL_SCANCODE_0, "0", '0'); + add_key(SDL_SCANCODE_1, "1", '1'); + add_key(SDL_SCANCODE_2, "2", '2'); + add_key(SDL_SCANCODE_3, "3", '3'); + add_key(SDL_SCANCODE_4, "4", '4'); + add_key(SDL_SCANCODE_5, "5", '5'); + add_key(SDL_SCANCODE_6, "6", '6'); + add_key(SDL_SCANCODE_7, "7", '7'); + add_key(SDL_SCANCODE_8, "8", '8'); + add_key(SDL_SCANCODE_9, "9", '9'); + + add_key(SDL_SCANCODE_MINUS, "-", '-'); + add_key(SDL_SCANCODE_EQUALS, "=", '='); + add_key(SDL_SCANCODE_LEFTBRACKET, "[", '['); + add_key(SDL_SCANCODE_RIGHTBRACKET, "]", ']'); + add_key(SDL_SCANCODE_SEMICOLON, ";", ';'); + add_key(SDL_SCANCODE_APOSTROPHE,"'", '\''); + add_key(SDL_SCANCODE_BACKSLASH, "\\", '\\'); + + + add_key(SDL_SCANCODE_COMMA, ",", ','); + add_key(SDL_SCANCODE_PERIOD, ".", '.'); + add_key(SDL_SCANCODE_SLASH, "/", '/'); + add_key(SDL_SCANCODE_GRAVE,"`", '`', "+console"); + + add_key(SDL_SCANCODE_A, "a", 'a', "+strafeleft"); + add_key(SDL_SCANCODE_B, "b", 'b', "beam"); + add_key(SDL_SCANCODE_C, "c", 'c'); + add_key(SDL_SCANCODE_D, "d", 'd', "+straferight"); + add_key(SDL_SCANCODE_E, "e", 'e', "+rollright"); + add_key(SDL_SCANCODE_F, "f", 'f', "+strafedown"); + add_key(SDL_SCANCODE_G, "g", 'g'); + add_key(SDL_SCANCODE_H, "h", 'h'); + add_key(SDL_SCANCODE_I, "i", 'i', "ui_inventory"); + add_key(SDL_SCANCODE_J, "j", 'j'); + add_key(SDL_SCANCODE_K, "k", 'k'); + add_key(SDL_SCANCODE_L, "l", 'l'); + add_key(SDL_SCANCODE_M, "m", 'm', "ui_map"); + key = add_key(SDL_SCANCODE_N, "n", 'n', "target_next"); key->assign(Key::Shift, "target_prev"); key->assign(Key::Ctrl, "target_none"); - add_key("o", SDLK_o, 'o'); - add_key("p", SDLK_p, 'p'); - add_key("q", SDLK_q, 'q', "+rollleft"); - add_key("r", SDLK_r, 'r', "+strafeup"); - add_key("s", SDLK_s, 's', "+reverse"); - add_key("t", SDLK_t, 't', "ui_chatbar"); - add_key("u", SDLK_u, 'u'); - key = add_key("v", SDLK_v, 'v', "view_next"); + add_key(SDL_SCANCODE_O, "o", 'o'); + add_key(SDL_SCANCODE_P, "p", 'p'); + add_key(SDL_SCANCODE_Q, "q", 'q', "+rollleft"); + add_key(SDL_SCANCODE_R, "r", 'r', "+strafeup"); + add_key(SDL_SCANCODE_S, "s", 's', "+reverse"); + add_key(SDL_SCANCODE_T, "t", 't', "ui_chatbar"); + add_key(SDL_SCANCODE_U, "u", 'u'); + key = add_key(SDL_SCANCODE_V, "v", 'v', "view_next"); key->assign(Key::Shift, "view_prev"); - add_key("w", SDLK_w, 'w', "+afterburner"); - key = add_key("x", SDLK_x, 'x', "target_controlable_next"); + add_key(SDL_SCANCODE_W, "w", 'w', "+afterburner"); + key = add_key(SDL_SCANCODE_X, "x", 'x', "target_controlable_next"); key->assign(Key::Shift, "target_controlable_prev"); key->assign(Key::Ctrl, "target_center"); - add_key("y", SDLK_y, 'y'); - add_key("z", SDLK_z, 'z'); - - add_key("del", SDLK_DELETE); - add_key("kp0", SDLK_KP0); - add_key("kp1", SDLK_KP1); - add_key("kp2", SDLK_KP2, 0, "+up"); - add_key("kp3", SDLK_KP3); - add_key("kp4", SDLK_KP4, 0, "+left"); - add_key("kp5", SDLK_KP5); - add_key("kp6", SDLK_KP6, 0, "+right"); - add_key("kp7", SDLK_KP7, 0, "+rollleft"); - add_key("kp8", SDLK_KP8, 0, "+down"); - add_key("kp9", SDLK_KP9, 0, "+rollright"); - - add_key("kpperiod", SDLK_KP_PERIOD, '.'); - add_key("kpdiv", SDLK_KP_DIVIDE, '/', "+zoomin"); - add_key("kpmul", SDLK_KP_MULTIPLY, '*', "+zoomout"); - add_key("kpmin", SDLK_KP_MINUS, '-', "+thrustdown"); - add_key("kpplus", SDLK_KP_PLUS, '+', "+thrustup"); - add_key("kpenter", SDLK_KP_ENTER, '\n', "ui_chat"); - add_key("kpequal", SDLK_KP_EQUALS, '='); - - add_key("up", SDLK_UP, 0, "+camup"); - add_key("down", SDLK_DOWN, 0, "+camdown"); - add_key("right", SDLK_RIGHT, 0, "+camright"); - add_key("left", SDLK_LEFT, 0, "+camleft"); - - add_key("insert", SDLK_INSERT); - add_key("home", SDLK_HOME); - add_key("end", SDLK_END); - add_key("pageup", SDLK_PAGEUP); - add_key("pagedown", SDLK_PAGEDOWN); - - add_key("f1", SDLK_F1, 0, "freeflight"); - add_key("f2", SDLK_F2, 0, "@goto"); - add_key("f3", SDLK_F3, 0, "@dock"); - key = add_key("f4", SDLK_F4, 0, "@formation"); + add_key(SDL_SCANCODE_Y, "y", 'y'); + add_key(SDL_SCANCODE_Z, "z", 'z'); + + add_key(SDL_SCANCODE_DELETE, "del"); + add_key(SDL_SCANCODE_KP_0, "kp0"); + add_key(SDL_SCANCODE_KP_1, "kp1"); + add_key(SDL_SCANCODE_KP_2, "kp2", 0, "+up"); + add_key(SDL_SCANCODE_KP_3, "kp3"); + add_key(SDL_SCANCODE_KP_4, "kp4", 0, "+left"); + add_key(SDL_SCANCODE_KP_5, "kp5"); + add_key(SDL_SCANCODE_KP_6, "kp6", 0, "+right"); + add_key(SDL_SCANCODE_KP_7, "kp7", 0, "+rollleft"); + add_key(SDL_SCANCODE_KP_8, "kp8", 0, "+down"); + add_key(SDL_SCANCODE_KP_9, "kp9", 0, "+rollright"); + + add_key(SDL_SCANCODE_KP_PERIOD, "kpperiod", '.'); + add_key(SDL_SCANCODE_KP_DIVIDE, "kpdiv", '/', "+zoomin"); + add_key(SDL_SCANCODE_KP_MULTIPLY, "kpmul", '*', "+zoomout"); + add_key(SDL_SCANCODE_KP_MINUS, "kpmin", '-', "+thrustdown"); + add_key(SDL_SCANCODE_KP_PLUS, "kpplus", '+', "+thrustup"); + add_key(SDL_SCANCODE_KP_ENTER, "kpenter", '\n', "ui_chat"); + add_key(SDL_SCANCODE_KP_EQUALS, "kpequal", '='); + + add_key(SDL_SCANCODE_UP, "up", 0, "+camup"); + add_key(SDL_SCANCODE_DOWN, "down", 0, "+camdown"); + add_key(SDL_SCANCODE_RIGHT, "right", 0, "+camright"); + add_key(SDL_SCANCODE_LEFT, "left", 0, "+camleft"); + + add_key(SDL_SCANCODE_INSERT, "insert"); + add_key(SDL_SCANCODE_HOME, "home"); + add_key(SDL_SCANCODE_END, "end"); + add_key(SDL_SCANCODE_PAGEUP, "pageup"); + add_key(SDL_SCANCODE_PAGEDOWN, "pagedown"); + + add_key(SDL_SCANCODE_F1, "f1", 0, "freeflight"); + add_key(SDL_SCANCODE_F2, "f2", 0, "@goto"); + add_key(SDL_SCANCODE_F3, "f3", 0, "@dock"); + key = add_key(SDL_SCANCODE_F4, "f4", 0, "@formation"); #ifdef _WIN32 key->assign(Key::Alt, "quit"); #endif - add_key("f5", SDLK_F5, 0, "savegame"); - add_key("f6", SDLK_F6); - add_key("f7", SDLK_F7); - add_key("f8", SDLK_F8); - add_key("f9", SDLK_F9, 0, "loadgame"); - add_key("f10", SDLK_F10); - add_key("f11", SDLK_F11); - add_key("f12", SDLK_F12); - add_key("f13", SDLK_F13); - add_key("f14", SDLK_F14); - add_key("f15", SDLK_F15); - - add_key("numlock", SDLK_NUMLOCK); - add_key("capslock", SDLK_CAPSLOCK); - add_key("scrollock", SDLK_SCROLLOCK); - - add_key("rshift", SDLK_RSHIFT); - add_key("lshift", SDLK_LSHIFT); - - add_key("rctrl", SDLK_RCTRL); - add_key("lctrl", SDLK_LCTRL); - - add_key("ralt", SDLK_RALT); - add_key("lalt", SDLK_LALT); - - add_key("rmeta", SDLK_RMETA); - add_key("lmeta", SDLK_LMETA); - add_key("lwin", SDLK_LSUPER); - add_key("rwin", SDLK_RSUPER); - add_key("mode", SDLK_MODE); - - add_key("help", SDLK_HELP); - add_key("print", SDLK_PRINT, 0, "screenshot"); - add_key("sysrq", SDLK_SYSREQ); - add_key("break", SDLK_BREAK); - add_key("menu", SDLK_MENU); - add_key("power", SDLK_POWER); - add_key("euro", SDLK_EURO); + add_key(SDL_SCANCODE_F5, "f5", 0, "savegame"); + add_key(SDL_SCANCODE_F6, "f6"); + add_key(SDL_SCANCODE_F7, "f7"); + add_key(SDL_SCANCODE_F8, "f8"); + add_key(SDL_SCANCODE_F9, "f9", 0, "loadgame"); + add_key(SDL_SCANCODE_F10, "f10"); + add_key(SDL_SCANCODE_F11, "f11"); + add_key(SDL_SCANCODE_F12, "f12"); + add_key(SDL_SCANCODE_F13, "f13"); + add_key(SDL_SCANCODE_F14, "f14"); + add_key(SDL_SCANCODE_F15, "F15"); + + add_key(SDL_SCANCODE_NUMLOCKCLEAR, "numlock"); + add_key(SDL_SCANCODE_CAPSLOCK, "capslock"); + add_key(SDL_SCANCODE_SCROLLLOCK, "scrollock"); + + add_key(SDL_SCANCODE_RSHIFT, "rshift"); + add_key(SDL_SCANCODE_LSHIFT, "lshift"); + + add_key(SDL_SCANCODE_RCTRL, "rctrl"); + add_key(SDL_SCANCODE_LCTRL, "lctrl"); + + add_key(SDL_SCANCODE_RALT, "ralt"); + add_key(SDL_SCANCODE_LALT, "lalt"); + + add_key(SDL_SCANCODE_RGUI, "rgui"); + add_key(SDL_SCANCODE_LGUI, "lgui"); + add_key(SDL_SCANCODE_MODE, "mode"); + + add_key(SDL_SCANCODE_HELP, "help"); + add_key(SDL_SCANCODE_PRINTSCREEN, "print", 0, "screenshot"); + add_key(SDL_SCANCODE_SYSREQ, "sysrq"); + add_key(SDL_SCANCODE_PAUSE, "pause"); + add_key(SDL_SCANCODE_MENU, "menu"); + add_key(SDL_SCANCODE_POWER, "power"); - // mouse button aliases - add_key("mouse1", 512 + SDL_BUTTON_LEFT, 0, "+freelook"); - add_key("mouse2", 512 + SDL_BUTTON_RIGHT, 0, "+fire"); - add_key("mouse3", 512 + SDL_BUTTON_MIDDLE); - add_key("mouse4", 512 + SDL_BUTTON_WHEELUP, 0, "+thrustup"); - add_key("mouse5", 512 + SDL_BUTTON_WHEELDOWN, 0, "+thrustdown"); + // mouse button aliases + add_key(512 + SDL_BUTTON_LEFT, "mouse1", 0, "+control"); + add_key(512 + SDL_BUTTON_RIGHT, "mouse2", 0, "+fire"); + add_key(512 + SDL_BUTTON_MIDDLE, "mouse3"); + + // mouse wheel aliases + add_key(600, "mwheelup", 0, "+thrustup"); + add_key(601, "mwheeldown", 0, "+thrustdown"); // joystick button aliases - add_key("joy0", 564); - add_key("joy1", 565, 0, "target_center"); - add_key("joy2", 566); - add_key("joy3", 567); - add_key("joy4", 568); - add_key("joy5", 569); - add_key("joy6", 570); - add_key("joy7", 571); - add_key("joy8", 572); - add_key("joy9", 573); - add_key("joy10", 574); - add_key("joy11", 575); - add_key("joy12", 576); - add_key("joy13", 577); - add_key("joy14", 578); - add_key("joy15", 579); + add_key(1024, "joy0"); + add_key(1025, "joy1", 0, "target_center"); + add_key(1026, "joy2"); + add_key(1027, "joy3"); + add_key(1028, "joy4"); + add_key(1029, "joy5"); + add_key(1030, "joy6"); + add_key(1031, "joy7"); + add_key(1032, "joy8"); + add_key(1033, "joy9"); + add_key(1034, "joy10"); + add_key(1035, "joy11"); + add_key(1036, "joy12"); + add_key(1037, "joy13"); + add_key(1038, "joy14"); + add_key(1039, "joy15"); } Keyboard::~Keyboard() @@ -342,9 +327,9 @@ void Keyboard::reset() } } -Key * Keyboard::release(unsigned int sym) +Key * Keyboard::release(const unsigned int scancode) { - Key *key = find(sym); + Key *key = find(scancode); if (!key) { return 0; } @@ -356,9 +341,9 @@ Key * Keyboard::release(unsigned int sym) return key; } -Key * Keyboard::press(unsigned int sym) +Key * Keyboard::press(const unsigned int scancode) { - Key *key = find(sym); + Key *key = find(scancode); if (!key) { return 0; } @@ -389,9 +374,9 @@ Key *Keyboard::find(std::string const & name) return key; } -Key *Keyboard::find(unsigned int keysym) +Key *Keyboard::find(const unsigned int scancode) { - Keys::iterator it = _keys.find(keysym); + Keys::iterator it = _keys.find(scancode); if (it == _keys.end()) { return 0; @@ -511,10 +496,10 @@ void Keyboard::unbindall() } } -Key * Keyboard::add_key(const char *name, const unsigned int keysym, const char ascii, const char *bind) +Key * Keyboard::add_key(const unsigned int scancode, const char *name, const char ascii, const char *bind) { - Key *key = new Key(name, keysym, ascii); - _keys[keysym] = key; + Key *key = new Key(scancode, name, ascii); + _keys[scancode] = key; if (bind) { std::string bindstr(bind); @@ -579,7 +564,7 @@ void Keyboard::list_binds() const con_print << n << " registered binds" << std::endl; } -unsigned int Keyboard::translate_keysym(const int keysym, const int modifiers) +unsigned int Keyboard::translate_keysym(const unsigned int keysym, const int modifiers) { bool shift = false; @@ -588,34 +573,34 @@ unsigned int Keyboard::translate_keysym(const int keysym, const int modifiers) { switch (keysym) { - case SDLK_KP0: + case SDLK_KP_0: return '0'; break; - case SDLK_KP1: + case SDLK_KP_1: return '1'; break; - case SDLK_KP2: + case SDLK_KP_2: return '2'; break; - case SDLK_KP3: + case SDLK_KP_3: return '3'; break; - case SDLK_KP4: + case SDLK_KP_4: return '4'; break; - case SDLK_KP5: + case SDLK_KP_5: return '5'; break; - case SDLK_KP6: + case SDLK_KP_6: return '6'; break; - case SDLK_KP7: + case SDLK_KP_7: return '7'; break; - case SDLK_KP8: + case SDLK_KP_8: return '8'; break; - case SDLK_KP9: + case SDLK_KP_9: return '9'; break; case SDLK_KP_PERIOD: @@ -627,31 +612,31 @@ unsigned int Keyboard::translate_keysym(const int keysym, const int modifiers) { switch (keysym) { - case SDLK_KP0: + case SDLK_KP_0: return SDLK_INSERT; break; - case SDLK_KP1: + case SDLK_KP_1: return SDLK_END; break; - case SDLK_KP2: + case SDLK_KP_2: return SDLK_DOWN; break; - case SDLK_KP3: + case SDLK_KP_3: return SDLK_PAGEDOWN; break; - case SDLK_KP4: + case SDLK_KP_4: return SDLK_LEFT; break; - case SDLK_KP6: + case SDLK_KP_6: return SDLK_RIGHT; break; - case SDLK_KP7: + case SDLK_KP_7: return SDLK_HOME; break; - case SDLK_KP8: + case SDLK_KP_8: return SDLK_UP; break; - case SDLK_KP9: + case SDLK_KP_9: return SDLK_PAGEUP; break; case SDLK_KP_PERIOD: -- cgit v1.2.3