# glfwJoystickIsGamepad returns false for an Xbox Wireless Controller

**URL:** <https://discourse.glfw.org/t/glfwjoystickisgamepad-returns-false-for-an-xbox-wireless-controller/2976>\
**Category:** support\
**Created:** [November 30, 2025, 8:28pm UTC](https://discourse.glfw.org/t/glfwjoystickisgamepad-returns-false-for-an-xbox-wireless-controller/2976 "2025-11-30T20:28:26Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![mort](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.glfw.org/mort/32/895_2.png) [@mort](https://discourse.glfw.org/u/mort)\
**Post date:** [November 30, 2025, 8:28pm UTC](https://discourse.glfw.org/t/glfwjoystickisgamepad-returns-false-for-an-xbox-wireless-controller/2976/1 "2025-11-30T20:28:26Z")

</div>

When I connect an Xbox Wireless Controller to my computer (running macOS 26), `glfwJoystickIsPresent(0)` returns true, but `glfwJoystickIsGamepad(0)` returns false.

Here’s a small test program I wrote which demonstrates the issue:

```cpp
#include <GLFW/glfw3.h>
#include <cstdlib>
#include <iostream>

int main()
{
	if (!glfwInit()) abort();

	GLFWwindow *window = glfwCreateWindow(640, 480, "GLFW Test", nullptr, nullptr);
	if (!window) abort();

	while (!glfwWindowShouldClose(window)) {
		glfwPollEvents();

		for (int jid = 0; jid <= GLFW_JOYSTICK_LAST; ++jid) {
			if (!glfwJoystickPresent(jid)) {
				continue;
			}

			const char *name = glfwGetJoystickName(jid);
			if (glfwJoystickIsGamepad(jid)) {
				std::cout << "Gamepad " << jid << ": " << name << '\n';
			} else {
				std::cout << "Non-gamepad " << jid << ": " << name << '\n';
			}
		}
	}

	glfwTerminate();
}

```

When I connect my Xbox Wireless Controller, it starts printing the following line every frame:

```auto
Non-gamepad 0: Xbox Wireless Controller

```

I would expect it to output `Gamepad 0: Xbox Wireless Controller`.

Am I doing something wrong here? This is just a normal, genuine Xbox Wireless Controller (bought from a reputable electronics reseller), so it would surprise me if it’s not in the game controller database.

OS: macOS 26 Tahoe (I’m not at my Linux machine to test it there for a couple of days)  
GLFW version: Tested with 3.4 from Homebrew, 3.4 built from source, and the current master branch

---

<div class="post-metadata">

**Author:** ![dougbinks](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.glfw.org/dougbinks/32/39_2.png) [@dougbinks](https://discourse.glfw.org/u/dougbinks)\
**Post date:** [December 1, 2025, 11:58am UTC](https://discourse.glfw.org/t/glfwjoystickisgamepad-returns-false-for-an-xbox-wireless-controller/2976/2 "2025-12-01T11:58:11Z")

</div>

You’ve reported this on Github [glfwJoystickIsGamepad returns false for an Xbox Wireless Controller · Issue #2797 · glfw/glfw · GitHub](https://github.com/glfw/glfw/issues/2797) with a workaround so for updates on this issue refer to there. We are currently working on a backlog of issues/PRs so it will be some time before we can get around to resolving this.
