2 // Copyright (C) 2006 Matthias Braun <matze@braunis.de>,
3 // 2007 Ingo Ruhnke <grumbel@gmail.com>
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 "control/keyboard_manager.hpp"
21 #include "supertux/gameconfig.hpp"
22 #include "supertux/globals.hpp"
23 #include "util/gettext.hpp"
25 KeyboardMenu::KeyboardMenu(InputManager& input_manager) :
26 m_input_manager(input_manager)
28 add_label(_("Setup Keyboard"));
30 add_controlfield(Controller::UP, _("Up"));
31 add_controlfield(Controller::DOWN, _("Down"));
32 add_controlfield(Controller::LEFT, _("Left"));
33 add_controlfield(Controller::RIGHT, _("Right"));
34 add_controlfield(Controller::JUMP, _("Jump"));
35 add_controlfield(Controller::ACTION, _("Action"));
36 add_controlfield(Controller::PEEK_LEFT, _("Peek Left"));
37 add_controlfield(Controller::PEEK_RIGHT, _("Peek Right"));
38 add_controlfield(Controller::PEEK_UP, _("Peek Up"));
39 add_controlfield(Controller::PEEK_DOWN, _("Peek Down"));
40 if (g_config->developer_mode || g_config->console_enabled) {
41 add_controlfield(Controller::CONSOLE, _("Console"));
43 if (g_config->developer_mode) {
44 add_controlfield(Controller::CHEAT_MENU, _("Cheat Menu"));
46 add_toggle(Controller::CONTROLCOUNT, _("Jump with Up"), g_config->keyboard_config.jump_with_up_kbd);
52 KeyboardMenu::~KeyboardMenu()
56 KeyboardMenu::get_key_name(SDL_Keycode key)
62 return _("Up cursor");
64 return _("Down cursor");
66 return _("Left cursor");
68 return _("Right cursor");
74 return _("Right Shift");
76 return _("Left Shift");
78 return _("Right Control");
80 return _("Left Control");
82 return _("Right Alt");
86 return _("Right Command");
88 return _("Left Command");
90 return SDL_GetKeyName(static_cast<SDL_Keycode>(key));
95 KeyboardMenu::menu_action(MenuItem* item)
97 if(item->id >= 0 && item->id < Controller::CONTROLCOUNT){
98 item->change_input(_("Press Key"));
99 m_input_manager.keyboard_manager->bind_next_event_to(static_cast<Controller::Control>(item->id));
100 } else if( item->id == Controller::CONTROLCOUNT) {
101 g_config->keyboard_config.jump_with_up_kbd = item->toggled;
106 KeyboardMenu::refresh()
108 KeyboardConfig& kbd_cfg = g_config->keyboard_config;
110 get_item_by_id((int) Controller::UP)
111 .change_input(get_key_name(kbd_cfg.reversemap_key(Controller::UP)));
112 get_item_by_id((int) Controller::DOWN)
113 .change_input(get_key_name(kbd_cfg.reversemap_key(Controller::DOWN)));
114 get_item_by_id((int) Controller::LEFT)
115 .change_input(get_key_name(kbd_cfg.reversemap_key(Controller::LEFT)));
116 get_item_by_id((int) Controller::RIGHT)
117 .change_input(get_key_name(kbd_cfg.reversemap_key(Controller::RIGHT)));
118 get_item_by_id((int) Controller::JUMP)
119 .change_input(get_key_name(kbd_cfg.reversemap_key(Controller::JUMP)));
120 get_item_by_id((int) Controller::ACTION)
121 .change_input(get_key_name(kbd_cfg.reversemap_key(Controller::ACTION)));
122 get_item_by_id((int) Controller::PEEK_LEFT)
123 .change_input(get_key_name(kbd_cfg.reversemap_key(Controller::PEEK_LEFT)));
124 get_item_by_id((int) Controller::PEEK_RIGHT)
125 .change_input(get_key_name(kbd_cfg.reversemap_key(Controller::PEEK_RIGHT)));
126 get_item_by_id((int) Controller::PEEK_UP)
127 .change_input(get_key_name(kbd_cfg.reversemap_key(Controller::PEEK_UP)));
128 get_item_by_id((int) Controller::PEEK_DOWN)
129 .change_input(get_key_name(kbd_cfg.reversemap_key(Controller::PEEK_DOWN)));
131 if (g_config->developer_mode) {
132 get_item_by_id((int) Controller::CHEAT_MENU)
133 .change_input(get_key_name(kbd_cfg.reversemap_key(Controller::CHEAT_MENU)));
136 if (g_config->developer_mode || g_config->console_enabled) {
137 get_item_by_id((int) Controller::CONSOLE).change_input(get_key_name(
138 kbd_cfg.reversemap_key(Controller::CONSOLE)));
140 get_item_by_id(Controller::CONTROLCOUNT).toggled = kbd_cfg.jump_with_up_kbd;