diff --git a/src/g_game.c b/src/g_game.c
index 8bd71d123dfd0905cbf8ebea8434bb6c67d43bcb..64f84d54454de8c5407e125746f9407bb99ba1c3 100644
--- a/src/g_game.c
+++ b/src/g_game.c
@@ -1011,13 +1011,13 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics)
 		if (turnleft)
 			cmd->angleturn = (INT16)(cmd->angleturn + angleturn[tspeed]);
 	}
-	if (cv_analog.value || twodlevel
+	if (twodlevel
 		|| (player->mo && (player->mo->flags2 & MF2_TWOD))
 		|| (!demoplayback && (player->climbing
 		|| (player->powers[pw_carry] == CR_NIGHTSMODE)
 		|| (player->pflags & (PF_SLIDING|PF_FORCESTRAFE))))) // Analog
 			forcestrafe = true;
-	if (forcestrafe) // Analog
+	if (forcestrafe)
 	{
 		if (turnright)
 			side += sidemove[speed];
@@ -1030,6 +1030,13 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics)
 			side += ((axis * sidemove[1]) >> 10);
 		}
 	}
+	else if (cv_analog.value) // Analog
+	{
+		if (turnright)
+			cmd->buttons |= BT_CAMRIGHT;
+		if (turnleft)
+			cmd->buttons |= BT_CAMLEFT;
+	}
 	else
 	{
 		if (turnright)
@@ -1117,15 +1124,6 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics)
 	if (PLAYER1INPUTDOWN(gc_use))
 		cmd->buttons |= BT_USE;
 
-	// Camera Controls
-	if (cv_debug || cv_analog.value || demoplayback || objectplacing || player->powers[pw_carry] == CR_NIGHTSMODE)
-	{
-		if (PLAYER1INPUTDOWN(gc_camleft))
-			cmd->buttons |= BT_CAMLEFT;
-		if (PLAYER1INPUTDOWN(gc_camright))
-			cmd->buttons |= BT_CAMRIGHT;
-	}
-
 	if (PLAYER1INPUTDOWN(gc_camreset))
 	{
 		if (camera.chase && !resetdown)
@@ -1225,9 +1223,10 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics)
 	cmd->sidemove = (SINT8)(cmd->sidemove + side);
 
 	if (cv_analog.value) {
-		cmd->angleturn = (INT16)(thiscam->angle >> 16);
 		if (player->awayviewtics)
 			cmd->angleturn = (INT16)(player->awayviewmobj->angle >> 16);
+		else
+			cmd->angleturn = (INT16)(thiscam->angle >> 16);
 	}
 	else
 	{
@@ -1301,7 +1300,7 @@ void G_BuildTiccmd2(ticcmd_t *cmd, INT32 realtics)
 		if (turnleft)
 			cmd->angleturn = (INT16)(cmd->angleturn + angleturn[tspeed]);
 	}
-	if (cv_analog2.value || twodlevel
+	if (twodlevel
 		|| (player->mo && (player->mo->flags2 & MF2_TWOD))
 		|| player->climbing
 		|| (player->powers[pw_carry] == CR_NIGHTSMODE)
@@ -1320,6 +1319,13 @@ void G_BuildTiccmd2(ticcmd_t *cmd, INT32 realtics)
 			side += ((axis * sidemove[1]) >> 10);
 		}
 	}
+	else if (cv_analog2.value) // Analog
+	{
+		if (turnright)
+			cmd->buttons |= BT_CAMRIGHT;
+		if (turnleft)
+			cmd->buttons |= BT_CAMLEFT;
+	}
 	else
 	{
 		if (turnright)
@@ -1404,15 +1410,6 @@ void G_BuildTiccmd2(ticcmd_t *cmd, INT32 realtics)
 	if (PLAYER2INPUTDOWN(gc_use))
 		cmd->buttons |= BT_USE;
 
-	// Camera Controls
-	if (cv_debug || cv_analog2.value || player->powers[pw_carry] == CR_NIGHTSMODE)
-	{
-		if (PLAYER2INPUTDOWN(gc_camleft))
-			cmd->buttons |= BT_CAMLEFT;
-		if (PLAYER2INPUTDOWN(gc_camright))
-			cmd->buttons |= BT_CAMRIGHT;
-	}
-
 	if (PLAYER2INPUTDOWN(gc_camreset))
 	{
 		if (camera2.chase && !resetdown)
@@ -1524,9 +1521,10 @@ void G_BuildTiccmd2(ticcmd_t *cmd, INT32 realtics)
 	}
 
 	if (cv_analog2.value) {
-		cmd->angleturn = (INT16)(thiscam->angle >> 16);
 		if (player->awayviewtics)
 			cmd->angleturn = (INT16)(player->awayviewmobj->angle >> 16);
+		else
+			cmd->angleturn = (INT16)(thiscam->angle >> 16);
 	}
 	else
 	{
diff --git a/src/g_input.c b/src/g_input.c
index a538df06cda1fc049da90892777f18da25cab994..36b8373aa7c9ef5c7eb39f53cdeb9206186d580f 100644
--- a/src/g_input.c
+++ b/src/g_input.c
@@ -977,8 +977,6 @@ static const char *gamecontrolname[num_gamecontrols] =
 	"tossflag",
 	"use",
 	"camtoggle",
-	"camleft",
-	"camright",
 	"camreset",
 	"lookup",
 	"lookdown",
@@ -1074,8 +1072,6 @@ void G_Controldefault(void)
 	gamecontrol[gc_use        ][0] = KEY_JOY1+1; //B
 	gamecontrol[gc_use        ][1] = '.';
 	gamecontrol[gc_camtoggle  ][1] = ',';
-	gamecontrol[gc_camleft    ][0] = 'o';
-	gamecontrol[gc_camright   ][0] = 'p';
 	gamecontrol[gc_camreset   ][0] = 'c';
 	gamecontrol[gc_lookup     ][0] = KEY_PGUP;
 	gamecontrol[gc_lookdown   ][0] = KEY_PGDN;
@@ -1178,8 +1174,6 @@ void G_Controldefault(void)
 	gamecontrol[gc_tossflag   ][0] = '\'';
 	gamecontrol[gc_use        ][0] = KEY_LSHIFT;
 	gamecontrol[gc_camtoggle  ][0] = 'v';
-	gamecontrol[gc_camleft    ][0] = '[';
-	gamecontrol[gc_camright   ][0] = ']';
 	gamecontrol[gc_camreset   ][0] = 'r';
 	gamecontrol[gc_lookup     ][0] = KEY_UPARROW;
 	gamecontrol[gc_lookdown   ][0] = KEY_DOWNARROW;
diff --git a/src/g_input.h b/src/g_input.h
index d65339321060f11f41b405efe43289381db55c16..f52376b71e34fce53acfc3546bf5b11d3fcda51a 100644
--- a/src/g_input.h
+++ b/src/g_input.h
@@ -105,8 +105,6 @@ typedef enum
 	gc_tossflag,
 	gc_use,
 	gc_camtoggle,
-	gc_camleft,
-	gc_camright,
 	gc_camreset,
 	gc_lookup,
 	gc_lookdown,
diff --git a/src/m_cheat.c b/src/m_cheat.c
index 8ae6706621de55902c60aaec540a288695a8ef8b..f988c0fd571b3559dc4cbdb2db8118cd4cf76489 100644
--- a/src/m_cheat.c
+++ b/src/m_cheat.c
@@ -968,7 +968,7 @@ void OP_NightsObjectplace(player_t *player)
 	if (player->pflags & PF_ATTACKDOWN)
 	{
 		// Are ANY objectplace buttons pressed?  If no, remove flag.
-		if (!(cmd->buttons & (BT_ATTACK|BT_TOSSFLAG|BT_USE|BT_CAMRIGHT|BT_CAMLEFT)))
+		if (!(cmd->buttons & (BT_ATTACK|BT_TOSSFLAG|BT_USE|BT_WEAPONNEXT|BT_WEAPONPREV)))
 			player->pflags &= ~PF_ATTACKDOWN;
 
 		// Do nothing.
@@ -1019,7 +1019,7 @@ void OP_NightsObjectplace(player_t *player)
 	}
 
 	// This places a ring!
-	if (cmd->buttons & BT_CAMRIGHT)
+	if (cmd->buttons & BT_WEAPONNEXT)
 	{
 		player->pflags |= PF_ATTACKDOWN;
 		if (!OP_HeightOkay(player, false))
@@ -1030,7 +1030,7 @@ void OP_NightsObjectplace(player_t *player)
 	}
 
 	// This places a wing item!
-	if (cmd->buttons & BT_CAMLEFT)
+	if (cmd->buttons & BT_WEAPONPREV)
 	{
 		player->pflags |= PF_ATTACKDOWN;
 		if (!OP_HeightOkay(player, false))
diff --git a/src/m_menu.c b/src/m_menu.c
index fb8aeedad1252f9c733b5e94ba5cfd7ed030e18f..e7926207f084b6f0cf0aef92b45c0b41c5ec7088 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -1101,8 +1101,6 @@ static menuitem_t OP_CameraControlsMenu[] =
 {
 	{IT_CALL | IT_STRING2, NULL, "Look Up",          M_ChangeControl, gc_lookup       },
 	{IT_CALL | IT_STRING2, NULL, "Look Down",        M_ChangeControl, gc_lookdown     },
-	{IT_CALL | IT_STRING2, NULL, "Rotate Camera L",  M_ChangeControl, gc_camleft      },
-	{IT_CALL | IT_STRING2, NULL, "Rotate Camera R",  M_ChangeControl, gc_camright     },
 	{IT_CALL | IT_STRING2, NULL, "Center View",      M_ChangeControl, gc_centerview   },
 	{IT_CALL | IT_STRING2, NULL, "Mouselook",        M_ChangeControl, gc_mouseaiming  },
 	{IT_CALL | IT_STRING2, NULL, "Reset Camera",     M_ChangeControl, gc_camreset     },
diff --git a/src/p_user.c b/src/p_user.c
index d46f5130e68f809cfafba796fed7a55dcb2175ec..7062ebee43ab68bb90fa2ead70ff8585a858cd80 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -8451,46 +8451,24 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
 		thiscam->angle = angle;
 	}
 
-	if (!objectplacing && !(twodlevel || (mo->flags2 & MF2_TWOD)) && (player->powers[pw_carry] != CR_NIGHTSMODE) && displayplayer == consoleplayer)
+	if ((((thiscam == &camera) && cv_analog.value) || ((thiscam != &camera) && cv_analog2.value) || demoplayback) && !objectplacing && !(twodlevel || (mo->flags2 & MF2_TWOD)) && (player->powers[pw_carry] != CR_NIGHTSMODE) && displayplayer == consoleplayer)
 	{
 #ifdef REDSANALOG
 		if ((player->cmd.buttons & (BT_CAMLEFT|BT_CAMRIGHT)) == (BT_CAMLEFT|BT_CAMRIGHT)); else
 #endif
-		if (player->cmd.buttons & BT_CAMLEFT)
+		if (player->cmd.buttons & BT_CAMRIGHT)
 		{
 			if (thiscam == &camera)
-			{
-				if (cv_analog.value || demoplayback)
-					angle -= FixedAngle(cv_cam_rotspeed.value*FRACUNIT);
-				else
-					CV_SetValue(&cv_cam_rotate, camrotate == 0 ? 358
-						: camrotate - 2);
-			}
+				angle -= FixedAngle(cv_cam_rotspeed.value*FRACUNIT);
 			else
-			{
-				if (cv_analog2.value)
-					angle -= FixedAngle(cv_cam2_rotspeed.value*FRACUNIT);
-				else
-					CV_SetValue(&cv_cam2_rotate, camrotate == 0 ? 358
-						: camrotate - 2);
-			}
+				angle -= FixedAngle(cv_cam2_rotspeed.value*FRACUNIT);
 		}
-		else if (player->cmd.buttons & BT_CAMRIGHT)
+		else if (player->cmd.buttons & BT_CAMLEFT)
 		{
 			if (thiscam == &camera)
-			{
-				if (cv_analog.value || demoplayback)
-					angle += FixedAngle(cv_cam_rotspeed.value*FRACUNIT);
-				else
-					CV_SetValue(&cv_cam_rotate, camrotate + 2);
-			}
+				angle += FixedAngle(cv_cam_rotspeed.value*FRACUNIT);
 			else
-			{
-				if (cv_analog2.value)
-					angle += FixedAngle(cv_cam2_rotspeed.value*FRACUNIT);
-				else
-					CV_SetValue(&cv_cam2_rotate, camrotate + 2);
-			}
+				angle += FixedAngle(cv_cam2_rotspeed.value*FRACUNIT);
 		}
 	}