+ controller = new Controller;
+
+ // initialize default keyboard map
+ keymap[SDLK_LEFT] = Controller::LEFT;
+ keymap[SDLK_RIGHT] = Controller::RIGHT;
+ keymap[SDLK_UP] = Controller::UP;
+ keymap[SDLK_DOWN] = Controller::DOWN;
+ keymap[SDLK_SPACE] = Controller::JUMP;
+ keymap[SDLK_LCTRL] = Controller::ACTION;
+ keymap[SDLK_LALT] = Controller::ACTION;
+ keymap[SDLK_ESCAPE] = Controller::PAUSE_MENU;
+ keymap[SDLK_p] = Controller::PAUSE_MENU;
+ keymap[SDLK_PAUSE] = Controller::PAUSE_MENU;
+ keymap[SDLK_RETURN] = Controller::MENU_SELECT;
+ keymap[SDLK_KP_ENTER] = Controller::MENU_SELECT;
+ keymap[SDLK_CARET] = Controller::CONSOLE;
+ keymap[SDLK_DELETE] = Controller::PEEK_LEFT;
+ keymap[SDLK_PAGEDOWN] = Controller::PEEK_RIGHT;
+ keymap[SDLK_HOME] = Controller::PEEK_UP;
+ keymap[SDLK_END] = Controller::PEEK_DOWN;
+
+ jump_with_up_joy = false;
+ jump_with_up_kbd = false;
+
+ updateAvailableJoysticks();
+
+ dead_zone = 1000;
+
+ // Default joystick button configuration
+ bind_joybutton(0, 0, Controller::JUMP);
+ bind_joybutton(0, 1, Controller::ACTION);
+ // 6 or more Buttons
+ if( min_joybuttons > 5 ){
+ bind_joybutton(0, 4, Controller::PEEK_LEFT);
+ bind_joybutton(0, 5, Controller::PEEK_RIGHT);
+ // 8 or more
+ if(min_joybuttons > 7)
+ bind_joybutton(0, min_joybuttons-1, Controller::PAUSE_MENU);
+ } else {
+ // map the last 2 buttons to menu and pause
+ if(min_joybuttons > 2)
+ bind_joybutton(0, min_joybuttons-1, Controller::PAUSE_MENU);
+ // map all remaining joystick buttons to MENU_SELECT
+ for(int i = 2; i < max_joybuttons; ++i) {
+ if(i != min_joybuttons-1)
+ bind_joybutton(0, i, Controller::MENU_SELECT);
+ }
+ }