Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Joy-Con L and R are recognized as two gamepads on Windows, and all buttons never work #3127

Open
1 of 11 tasks
bin16 opened this issue Oct 11, 2024 · 6 comments
Open
1 of 11 tasks

Comments

@bin16
Copy link

bin16 commented Oct 11, 2024

Ebitengine Version

github.com/hajimehoshi/ebiten/v2 v2.8.1

Operating System

  • Windows
  • macOS
  • Linux
  • FreeBSD
  • OpenBSD
  • Android
  • iOS
  • Nintendo Switch
  • PlayStation 5
  • Xbox
  • Web Browsers

Go Version (go version)

go version go1.22.5 windows/amd64

What steps will reproduce the problem?

  1. Connect Joy Con L and R to Windows (my is Windows 11)
  2. Open a terminal, and run go run github.com/hajimehoshi/ebiten/v2/examples/gamepad@latest
  3. See the window, and test buttons.

图片

What is the expected result?

Chrome

Gamdpad Tester

What happens instead?

  • Joy Con L and Joy Con R display as two gamepads in demo
  • All StandardGamepadButton (0 to max) and all GamepadButton (0 to max) were never triggered.

Anything else you feel useful to add?

  • All buttons of Xbox Series Controller work well both on Chrome and Windows
  • Both Xbox Series Controller and Joy Con L+R on Chrome support vibration
  • None of Xbox Series Controller and Joy Con L and Joy Con R supports vibration on Windows
  • Joy Con L+R looks good in Steam, it is taken as one gamepad.
@bin16
Copy link
Author

bin16 commented Oct 11, 2024

On macOS, it's a bit different on Chrome. macOS 14.4.1 (23E224)

Gamepad example, macOS

Running from terminal is same, Joy-Con L and Joy-Con R

图片 图片

Gamepad example, Chrome on macOS

Running from Chrome, it's two gamepads, but Joy-Con L/R and Joy-Con L+R, and when press buttons, the two gamepads are triggered, button different buttons.

Chrome on macOS, no button pressed:

图片

Chrome on macOS, and Button (X) is pressed, (X) is right top button:

图片

Gamepad Tester, Chrome on macOS

Joy-Con L/R, Chrome on macOS, Gamepad Tester, button (X) pressed.

图片

Joy-Con L+R, Chrome on macOS, Gamepad Tester, button (X) pressed.

图片

https://hardwaretester.com/gamepad

@hajimehoshi
Copy link
Owner

Thank you for reporting. This seems pretty tricky and I am not sure I can fix ths.

@bin16
Copy link
Author

bin16 commented Oct 11, 2024

Joy-Con on Chrome on macOS is wild, but not a problem of ebiten i think, browser and macOS should fix that, may be i should upgrade to macOS 15 to test that.

So, the question is, Joy-Con L and Joy-Con R are taken as two gamepad but not one, both on Windows and macOS. (and buttons never work) I have no Linux device to test if it will be different.

@hajimehoshi
Copy link
Owner

hajimehoshi commented Oct 11, 2024

So, the question is, Joy-Con L and Joy-Con R are taken as two gamepad but not one, both on Windows and macOS. (and buttons never work)

As long as an OS recognizes them as a separate gamepads, there is nothing Ebitengine can do unfortunately. I am not sure what happens with buttons.

Browsers have special care about gamepads and as far as I understand. They implement special drivers for some famous gamepads.

@bin16
Copy link
Author

bin16 commented Oct 11, 2024

As long as an OS recognizes them as a separate gamepads, there is nothing Ebitengine can do unfortunately. I am not sure what happens with buttons.

Browsers have special care about gamepads and as far as I understand. They implement special drivers for some famous gamepads.

Thanks for your reply. It would be very helpful if buttons can work, even two gamepads.

@bin16
Copy link
Author

bin16 commented Oct 11, 2024

Never mind, Godot never recognize buttons too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants