diff --git a/README.txt b/README.txt index eb5dee1be..7a310682c 100644 --- a/README.txt +++ b/README.txt @@ -34,7 +34,7 @@ Default Controls - Shift: sneak/go down - Q: drop item - I: inventory -- Mouse: turn/look +- Mouse (or arrow keys): turn/look - Mouse left: dig/punch - Mouse right: place/use - Mouse wheel: select item diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index 053602833..bc4725679 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -35,6 +35,12 @@ void set_default_settings(Settings *settings) settings->setDefault("keymap_right", "KEY_KEY_D"); settings->setDefault("keymap_jump", "KEY_SPACE"); settings->setDefault("keymap_sneak", "KEY_LSHIFT"); + settings->setDefault("keymap_turnleft", "KEY_LEFT"); + settings->setDefault("keymap_turnright", "KEY_RIGHT"); + settings->setDefault("keymap_lookup", "KEY_UP"); + settings->setDefault("keymap_lookdown", "KEY_DOWN"); + settings->setDefault("keymap_lbutton", "KEY_LBUTTON"); + settings->setDefault("keymap_rbutton", "KEY_RBUTTON"); settings->setDefault("keymap_drop", "KEY_KEY_Q"); settings->setDefault("keymap_inventory", "KEY_KEY_I"); settings->setDefault("keymap_special1", "KEY_KEY_E"); diff --git a/src/game.cpp b/src/game.cpp index 16fd42f16..e89589a3d 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -2131,15 +2131,15 @@ void the_game( dy = -dy; //infostream<<"window active, pos difference "<isKeyDown(irr::KEY_UP)) + const float keyspeed = 500; + if(input->isKeyDown(getKeySetting("keymap_lookup"))) dy -= dtime * keyspeed; - if(input->isKeyDown(irr::KEY_DOWN)) + if(input->isKeyDown(getKeySetting("keymap_lookdown"))) dy += dtime * keyspeed; - if(input->isKeyDown(irr::KEY_LEFT)) + if(input->isKeyDown(getKeySetting("keymap_turnleft"))) dx -= dtime * keyspeed; - if(input->isKeyDown(irr::KEY_RIGHT)) - dx += dtime * keyspeed;*/ + if(input->isKeyDown(getKeySetting("keymap_turnright"))) + dx += dtime * keyspeed; float d = g_settings->getFloat("mouse_sensitivity"); d = rangelim(d, 0.01, 100.0); @@ -2186,8 +2186,8 @@ void the_game( input->isKeyDown(getKeySetting("keymap_jump")), input->isKeyDown(getKeySetting("keymap_special1")), input->isKeyDown(getKeySetting("keymap_sneak")), - input->getLeftState(), - input->getRightState(), + input->isKeyDown(getKeySetting("keymap_lbutton")), + input->isKeyDown(getKeySetting("keymap_rbutton")), camera_pitch, camera_yaw ); @@ -2200,8 +2200,8 @@ void the_game( 16*(int)input->isKeyDown(getKeySetting("keymap_jump"))+ 32*(int)input->isKeyDown(getKeySetting("keymap_special1"))+ 64*(int)input->isKeyDown(getKeySetting("keymap_sneak"))+ - 128*(int)input->getLeftState()+ - 256*(int)input->getRightState(); + 128*(int)input->isKeyDown(getKeySetting("keymap_lbutton"))+ + 256*(int)input->isKeyDown(getKeySetting("keymap_lbutton")); LocalPlayer* player = client.getEnv().getLocalPlayer(); player->keyPressed=keyPressed; } diff --git a/src/guiKeyChangeMenu.cpp b/src/guiKeyChangeMenu.cpp index 85222431e..22c292bb6 100644 --- a/src/guiKeyChangeMenu.cpp +++ b/src/guiKeyChangeMenu.cpp @@ -58,6 +58,14 @@ enum // other GUI_ID_CB_AUX1_DESCENDS, GUI_ID_CB_DOUBLETAP_JUMP, + // mouse controls + GUI_ID_KEY_TURNLEFT_BUTTON, + GUI_ID_KEY_TURNRIGHT_BUTTON, + GUI_ID_KEY_LOOKUP_BUTTON, + GUI_ID_KEY_LOOKDOWN_BUTTON, + GUI_ID_KEY_LBUTTON_BUTTON, + GUI_ID_KEY_RBUTTON_BUTTON, + }; GUIKeyChangeMenu::GUIKeyChangeMenu(gui::IGUIEnvironment* env, @@ -403,4 +411,10 @@ void GUIKeyChangeMenu::init_keys() this->add_key(GUI_ID_KEY_NOCLIP_BUTTON, wgettext("Toggle noclip"), "keymap_noclip"); this->add_key(GUI_ID_KEY_RANGE_BUTTON, wgettext("Range select"), "keymap_rangeselect"); this->add_key(GUI_ID_KEY_DUMP_BUTTON, wgettext("Print stacks"), "keymap_print_debug_stacks"); + this->add_key(GUI_ID_KEY_TURNLEFT_BUTTON, wgettext("Turn left"), "keymap_turnleft"); + this->add_key(GUI_ID_KEY_TURNRIGHT_BUTTON, wgettext("Turn right"), "keymap_turnright"); + this->add_key(GUI_ID_KEY_LOOKUP_BUTTON, wgettext("Look up"), "keymap_lookup"); + this->add_key(GUI_ID_KEY_LOOKDOWN_BUTTON, wgettext("Look down"), "keymap_lookdown"); + this->add_key(GUI_ID_KEY_LBUTTON_BUTTON, wgettext("Left button"), "keymap_lbutton"); + this->add_key(GUI_ID_KEY_RBUTTON_BUTTON, wgettext("Right button"), "keymap_rbutton"); }