diff --git a/src/core.c b/src/core.c index e8f02094c..67ef95acd 100644 --- a/src/core.c +++ b/src/core.c @@ -460,6 +460,9 @@ typedef struct CoreData { pthread_t threadId; // Gamepad reading thread id int streamId[MAX_GAMEPADS]; // Gamepad device file descriptor char name[64]; // Gamepad name holder +#endif +#if defined(PLATFORM_WEB) + char gamepadNames[MAX_GAMEPADS][64]; #endif } Gamepad; } Input; @@ -3275,6 +3278,9 @@ const char *GetGamepadName(int gamepad) #if defined(PLATFORM_RPI) || defined(PLATFORM_DRM) if (CORE.Input.Gamepad.ready[gamepad]) ioctl(CORE.Input.Gamepad.streamId[gamepad], JSIOCGNAME(64), &CORE.Input.Gamepad.name); return CORE.Input.Gamepad.name; +#endif +#if defined(PLATFORM_WEB) + return CORE.Input.Gamepad.gamepadNames[gamepad]; #endif return NULL; } @@ -5400,7 +5406,13 @@ static EM_BOOL EmscriptenGamepadCallback(int eventType, const EmscriptenGamepadE for (int i = 0; i < gamepadEvent->numButtons; ++i) TRACELOGD("Button %d: Digital: %d, Analog: %g", i, gamepadEvent->digitalButton[i], gamepadEvent->analogButton[i]); */ - if ((gamepadEvent->connected) && (gamepadEvent->index < MAX_GAMEPADS)) CORE.Input.Gamepad.ready[gamepadEvent->index] = true; + if ((gamepadEvent->connected) && (gamepadEvent->index < MAX_GAMEPADS)) + { + CORE.Input.Gamepad.ready[gamepadEvent->index] = true; +#if defined(PLATFORM_WEB) + sprintf(CORE.Input.Gamepad.gamepadNames[gamepadEvent->index],"%s",gamepadEvent->id); +#endif + } else CORE.Input.Gamepad.ready[gamepadEvent->index] = false; // TODO: Test gamepadEvent->index