diff --git a/src/vkcv/Window.cpp b/src/vkcv/Window.cpp
index d2ba366c95d99549a49ff2294da04985094c05c0..03a58a23b994209c7a0ee195732dc98543f0eddc 100644
--- a/src/vkcv/Window.cpp
+++ b/src/vkcv/Window.cpp
@@ -81,7 +81,12 @@ namespace vkcv {
     	}
 
         glfwPollEvents();
-        onGamepadEvent(GLFW_JOYSTICK_1);
+    	
+    	for (int gamepadIndex = GLFW_JOYSTICK_1; gamepadIndex <= GLFW_JOYSTICK_LAST; gamepadIndex++) {
+    		if (glfwJoystickPresent(gamepadIndex)) {
+				onGamepadEvent(gamepadIndex);
+			}
+		}
 	
 		for (auto glfwWindow : s_Windows) {
 			auto window = static_cast<Window *>(glfwGetWindowUserPointer(glfwWindow));
@@ -152,7 +157,7 @@ namespace vkcv {
         activeWindowIndex *= (activeWindowIndex < s_Windows.size());    // fixes index getting out of bounds (e.g. if there is no focused window)
         auto window = static_cast<Window *>(glfwGetWindowUserPointer(s_Windows[activeWindowIndex]));
 
-        if (window != nullptr && glfwJoystickPresent(gamepadIndex)) {
+        if (window != nullptr) {
             window->e_gamepad(gamepadIndex);
         }
     }