diff --git a/src/g_input.c b/src/g_input.c
index 44d9f2b28224c1c4c28ca79d83b95842af5df743..833883f289408351911e7614fcf18a6a10189b9e 100644
--- a/src/g_input.c
+++ b/src/g_input.c
@@ -1165,7 +1165,9 @@ void G_Controldefault(void)
 	gamecontrol[gc_turnleft   ][0] = KEY_LEFTARROW;
 	gamecontrol[gc_turnright  ][0] = KEY_RIGHTARROW;
 	gamecontrol[gc_weaponnext ][0] = 'e';
+	gamecontrol[gc_weaponnext ][1] = KEY_JOY1+1; // B
 	gamecontrol[gc_weaponprev ][0] = 'q';
+	gamecontrol[gc_weaponprev ][1] = KEY_JOY1+2; // X
 	gamecontrol[gc_wepslot1   ][0] = '1';
 	gamecontrol[gc_wepslot2   ][0] = '2';
 	gamecontrol[gc_wepslot3   ][0] = '3';
@@ -1180,24 +1182,45 @@ void G_Controldefault(void)
 	gamecontrol[gc_fire       ][1] = KEY_MOUSE1+0;
 	gamecontrol[gc_firenormal ][0] = 'c';
 	gamecontrol[gc_tossflag   ][0] = '\'';
+	gamecontrol[gc_tossflag   ][1] = KEY_JOY1+0; // A
 	gamecontrol[gc_use        ][0] = KEY_LSHIFT;
+	gamecontrol[gc_use        ][1] = KEY_JOY1+4; // LB
 	gamecontrol[gc_camtoggle  ][0] = 'v';
+	gamecontrol[gc_camtoggle  ][1] = KEY_HAT1+0; // D-Pad Up
 	gamecontrol[gc_camleft    ][0] = '[';
 	gamecontrol[gc_camright   ][0] = ']';
 	gamecontrol[gc_camreset   ][0] = 'r';
+	gamecontrol[gc_camreset   ][1] = KEY_JOY1+3; // Y
 	gamecontrol[gc_lookup     ][0] = KEY_UPARROW;
 	gamecontrol[gc_lookdown   ][0] = KEY_DOWNARROW;
 	gamecontrol[gc_centerview ][0] = KEY_END;
 	gamecontrol[gc_talkkey    ][0] = 't';
+	gamecontrol[gc_talkkey    ][1] = KEY_HAT1+2; // D-Pad Left
 	gamecontrol[gc_teamkey    ][0] = 'y';
 	gamecontrol[gc_scores     ][0] = KEY_TAB;
+	gamecontrol[gc_scores     ][1] = KEY_HAT1+3; // D-Pad Right
 	gamecontrol[gc_jump       ][0] = KEY_SPACE;
+	gamecontrol[gc_jump       ][1] = KEY_JOY1+5; // RB
 	gamecontrol[gc_console    ][0] = KEY_CONSOLE;
 	gamecontrol[gc_pause      ][0] = 'p';
+	gamecontrol[gc_pause      ][1] = KEY_JOY1+6; // Back
 	gamecontrol[gc_screenshot ][0] = KEY_F8;
+	gamecontrol[gc_screenshot ][1] = KEY_HAT1+1; // D-Pad Down
 	gamecontrol[gc_recordgif  ][0] = KEY_F9;
 	gamecontrol[gc_viewpoint  ][0] = KEY_F12;
 	gamecontrol[gc_systemmenu ][0] = KEY_JOY1+7; // Start
+	gamecontrolbis[gc_weaponnext][0] = KEY_2JOY1+1; // B
+	gamecontrolbis[gc_weaponprev][0] = KEY_2JOY1+2; // X
+	gamecontrolbis[gc_tossflag  ][0] = KEY_2JOY1+0; // A
+	gamecontrolbis[gc_use       ][0] = KEY_2JOY1+4; // LB
+	gamecontrolbis[gc_camreset  ][0] = KEY_2JOY1+3; // Y
+	gamecontrolbis[gc_jump      ][0] = KEY_2JOY1+5; // RB
+	gamecontrolbis[gc_pause     ][0] = KEY_2JOY1+6; // Back
+	gamecontrolbis[gc_systemmenu][0] = KEY_2JOY1+7; // Start
+	gamecontrolbis[gc_camtoggle ][0] = KEY_2HAT1+0; // D-Pad Up
+	gamecontrolbis[gc_screenshot][0] = KEY_2HAT1+1; // D-Pad Down
+	gamecontrolbis[gc_talkkey   ][0] = KEY_2HAT1+2; // D-Pad Left
+	gamecontrolbis[gc_scores    ][0] = KEY_2HAT1+3; // D-Pad Right
 #ifdef WMINPUT
 	gamecontrol[gc_forward    ][0] = KEY_JOY1+02; //UP
 	gamecontrol[gc_backward   ][0] = KEY_JOY1+03; //DOWN