2 // Copyright (C) 2006 Matthias Braun <matze@braunis.de>,
3 // 2007 Ingo Ruhnke <grumbel@gmx.de>
5 // This program is free software: you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation, either version 3 of the License, or
8 // (at your option) any later version.
10 // This program 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
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with this program. If not, see <http://www.gnu.org/licenses/>.
18 #include "supertux/menu/keyboard_menu.hpp"
20 #include "util/gettext.hpp"
21 #include "supertux/gameconfig.hpp"
22 #include "supertux/globals.hpp"
24 KeyboardMenu::KeyboardMenu(JoystickKeyboardController* _controller) :
25 controller(_controller)
27 add_label(_("Setup Keyboard"));
29 add_controlfield(Controller::UP, _("Up"));
30 add_controlfield(Controller::DOWN, _("Down"));
31 add_controlfield(Controller::LEFT, _("Left"));
32 add_controlfield(Controller::RIGHT, _("Right"));
33 add_controlfield(Controller::JUMP, _("Jump"));
34 add_controlfield(Controller::ACTION, _("Action"));
35 add_controlfield(Controller::PEEK_LEFT, _("Peek Left"));
36 add_controlfield(Controller::PEEK_RIGHT, _("Peek Right"));
37 add_controlfield(Controller::PEEK_UP, _("Peek Up"));
38 add_controlfield(Controller::PEEK_DOWN, _("Peek Down"));
39 if (g_config->console_enabled) {
40 add_controlfield(Controller::CONSOLE, _("Console"));
42 add_toggle(Controller::CONTROLCOUNT, _("Jump with Up"), controller->jump_with_up_kbd);
48 KeyboardMenu::~KeyboardMenu()
52 KeyboardMenu::get_key_name(SDLKey key)
58 return _("Up cursor");
60 return _("Down cursor");
62 return _("Left cursor");
64 return _("Right cursor");
70 return _("Right Shift");
72 return _("Left Shift");
74 return _("Right Control");
76 return _("Left Control");
78 return _("Right Alt");
82 return SDL_GetKeyName((SDLKey) key);
87 KeyboardMenu::menu_action(MenuItem* item)
89 if(item->id >= 0 && item->id < Controller::CONTROLCOUNT){
90 item->change_input(_("Press Key"));
91 controller->wait_for_key = item->id;
92 } else if( item->id == Controller::CONTROLCOUNT) {
93 controller->jump_with_up_kbd = item->toggled;
98 KeyboardMenu::update()
101 get_item_by_id((int) Controller::UP).change_input(get_key_name(
102 controller->reversemap_key(Controller::UP)));
103 get_item_by_id((int) Controller::DOWN).change_input(get_key_name(
104 controller->reversemap_key(Controller::DOWN)));
105 get_item_by_id((int) Controller::LEFT).change_input(get_key_name(
106 controller->reversemap_key(Controller::LEFT)));
107 get_item_by_id((int) Controller::RIGHT).change_input(get_key_name(
108 controller->reversemap_key(Controller::RIGHT)));
109 get_item_by_id((int) Controller::JUMP).change_input(get_key_name(
110 controller->reversemap_key(Controller::JUMP)));
111 get_item_by_id((int) Controller::ACTION).change_input(get_key_name(
112 controller->reversemap_key(Controller::ACTION)));
113 get_item_by_id((int) Controller::PEEK_LEFT).change_input(get_key_name(
114 controller->reversemap_key(Controller::PEEK_LEFT)));
115 get_item_by_id((int) Controller::PEEK_RIGHT).change_input(get_key_name(
116 controller->reversemap_key(Controller::PEEK_RIGHT)));
117 get_item_by_id((int) Controller::PEEK_UP).change_input(get_key_name(
118 controller->reversemap_key(Controller::PEEK_UP)));
119 get_item_by_id((int) Controller::PEEK_DOWN).change_input(get_key_name(
120 controller->reversemap_key(Controller::PEEK_DOWN)));
121 if (g_config->console_enabled) {
122 get_item_by_id((int) Controller::CONSOLE).change_input(get_key_name(
123 controller->reversemap_key(Controller::CONSOLE)));
125 get_item_by_id(Controller::CONTROLCOUNT).toggled = controller->jump_with_up_kbd;