@@ -2408,10 +2408,13 @@ This is where OS specific stuff starts
24082408 #include <errno.h>
24092409
24102410 u32 RGFW_linux_updateGamepad (RGFW_window * win ) {
2411+ static size_t skip = 0 ;
2412+
24112413 /* check for new gamepads */
2412- static const char * str [] = {"/dev/input/js0" , "/dev/input/js1" , "/dev/input/js2" , "/dev/input/js3" } ;
2413- for (size_t i = 0 ; i < 4 ; i ++ ) {
2414- if (RGFW_gamepads [i ])
2414+ static const char * str [] = {"/dev/input/js0" , "/dev/input/js1" , "/dev/input/js2" , "/dev/input/js3" , "/dev/input/js4" , "/dev/input/js5" };
2415+ for (size_t i = 0 ; i < 6 ; i ++ ) {
2416+ size_t index = RGFW_gamepadCount ;
2417+ if (RGFW_gamepads [index ])
24152418 continue ;
24162419
24172420 i32 js = open (str [i ], O_RDONLY );
@@ -2438,29 +2441,29 @@ This is where OS specific stuff starts
24382441
24392442 RGFW_gamepadCount ++ ;
24402443
2441- RGFW_gamepads [i ] = js ;
2444+ RGFW_gamepads [index ] = js ;
24422445
2443- ioctl (js , JSIOCGNAME (sizeof (RGFW_gamepads_name [i ])), RGFW_gamepads_name [i ]);
2444- RGFW_gamepads_name [i ][sizeof (RGFW_gamepads_name [i ]) - 1 ] = 0 ;
2446+ ioctl (js , JSIOCGNAME (sizeof (RGFW_gamepads_name [index ])), RGFW_gamepads_name [i ]);
2447+ RGFW_gamepads_name [index ][sizeof (RGFW_gamepads_name [index ]) - 1 ] = 0 ;
24452448
24462449 u8 j ;
24472450 for (j = 0 ; j < 16 ; j ++ )
2448- RGFW_gamepadPressed [i ][j ] = 0 ;
2449-
2451+ RGFW_gamepadPressed [index ][j ] = 0 ;
2452+
24502453 win -> event .type = RGFW_gamepadConnected ;
24512454
2452- RGFW_gamepads_type [i ] = RGFW_gamepadUnknown ;
2453- if (strstr (RGFW_gamepads_name [i ], "Microsoft" ) || strstr (RGFW_gamepads_name [i ], "X-Box" ))
2454- RGFW_gamepads_type [i ] = RGFW_gamepadMicrosoft ;
2455- else if (strstr (RGFW_gamepads_name [i ], "PlayStation" ) || strstr (RGFW_gamepads_name [i ], "PS3" ) || strstr (RGFW_gamepads_name [i ], "PS4" ) || strstr (RGFW_gamepads_name [i ], "PS5" ))
2456- RGFW_gamepads_type [i ] = RGFW_gamepadSony ;
2457- else if (strstr (RGFW_gamepads_name [i ], "Nintendo" ))
2458- RGFW_gamepads_type [i ] = RGFW_gamepadNintendo ;
2459- else if (strstr (RGFW_gamepads_name [i ], "Logitech" ))
2460- RGFW_gamepads_type [i ] = RGFW_gamepadLogitech ;
2461-
2462- win -> event .gamepad = i ;
2463- RGFW_gamepadCallback (win , i , 1 );
2455+ RGFW_gamepads_type [index ] = RGFW_gamepadUnknown ;
2456+ if (strstr (RGFW_gamepads_name [index ], "Microsoft" ) || strstr (RGFW_gamepads_name [i ], "X-Box" ))
2457+ RGFW_gamepads_type [index ] = RGFW_gamepadMicrosoft ;
2458+ else if (strstr (RGFW_gamepads_name [index ], "PlayStation" ) || strstr (RGFW_gamepads_name [i ], "PS3" ) || strstr (RGFW_gamepads_name [i ], "PS4" ) || strstr (RGFW_gamepads_name [i ], "PS5" ))
2459+ RGFW_gamepads_type [index ] = RGFW_gamepadSony ;
2460+ else if (strstr (RGFW_gamepads_name [index ], "Nintendo" ))
2461+ RGFW_gamepads_type [index ] = RGFW_gamepadNintendo ;
2462+ else if (strstr (RGFW_gamepads_name [index ], "Logitech" ))
2463+ RGFW_gamepads_type [index ] = RGFW_gamepadLogitech ;
2464+
2465+ win -> event .gamepad = index ;
2466+ RGFW_gamepadCallback (win , index , 1 );
24642467 return 1 ;
24652468 }
24662469
0 commit comments