Skip to content

Commit 90e55c6

Browse files
fix gamepad indexing
1 parent 078674d commit 90e55c6

File tree

1 file changed

+23
-20
lines changed

1 file changed

+23
-20
lines changed

RGFW.h

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)