Godot version:
3.0.6
OS/device including version:
Mac OS X El Capitan
Version 10.11.6 (15G20015)
Issue description:
When I use a Nintendo Gamecube controller that’s connected to a USB Mayflash adaptor, pressing only one d-pad button at a time results in multiple buttons being pressed at the same time.
Here’s what the Output says when I press each button and print out which button was pressed:
Pressing left on the d-pad:
Output prints: Controller pressed buttons #15,#14,#15 and #14.
I was expecting it to only say one of these numbers, and only once per button press.
Pressing down: Output prints: #14,13,14 and 13
Same expectation.
Pressing Right: Prints 13, 13, 15 and 15.
Pressing up: Prints 12 and 12.
I don’t think it’s because I pressed the button for too long because I can press any other button only once with ease.
Tested with two different Gamecube controllers,
one of them is 1st party from Nintendo,
the other is a third party “SUPERPAD” from InterAct.
Both controller D-pads work fine when tested with Joystick and Gamepad Tester:
https://download.freedownloadmanager.org/Mac-OS/Joystick-And-Gamepad-Tester/FREE-7.1.html
Steps to reproduce:
Plug in a Gamecube controller into a USB Mayflash adaptor.
Plug the adaptor into an iMac (Intel).
Run attached Godot Project.
Run the scene.
Press D-pad buttons one at a time and read the Output messages provided by the autoloaded script.
You can also test any other USB joystick.
Note: the script is autoloaded. It automatically detects which gamecube controller is pushing buttons. Without it, button testing might not work because: simply using Input.is_joy_button_pressed(0, 12) might not work since the active gamecube controller # is always random each time you run the scene.
Please fix. Thank you!
Minimal reproduction project:
See attached zip file.
GamecubeControllerTest.zip
If the project doesn't work, please make a new one with a scene and set the project to autoload this script:
CC @Hinsbart
Any progress on this issue? My target market will likely include gamers with Gamecube controllers with iGPUs, so if this is fixed in stable Godot 3.1 with GLES 2, that'd be amazing!
Well, it's quite a specific setup (GameCube controller on macOS). So if no one else has the setup then there's no one who can reproduce the issue to understand the cause and fix it.
It would be nice if you can test with other controllers and the same controller on another OS. Maybe the problem is broader and easier to reproduce.
I have GameCube controllers and an USB Mayflash Adapter but I can try to reproduce it only on Windows. Idk about Linux, I've never used it there before.
I tried it on Windows and I think this is not a Godot bug.

I have 3 hypotheses:
It's-a me again.
Using filter driver for WiiU mode and Dolphin built-in support. Same behavior.
(I'm pressing only the d-pad down in this test)

I reinforce that this does not seem to be a Godot bug.
Thanks for testing. If it's a hardware/drivers bug there's indeed nothing we can do sadly, so closing.
Everything now works properly.
First, I tested it on windows. Didn't work, so I installed the firmware driver thing and it worked.
Then I installed the firmware for Mac and tested it on Mac, and now it works!
I swear I installed the Mac firmware before. Not sure why it didn't work that time.
Thanks for testing it out, William
Can we reopen this issue? I have the same problem on Linux, with a Mayflash USB Gamecube adapter. It is not a hardware issue, because the D-Pad works in Dolphin, the Gamecube emulator. It also works in pygame, which uses SDL. In Godot I receive two events when I press or release a single D-Pad button, the button codes are:
Right: 13 15
Down: 14 13
Left: 15 14
Up: 12 12
Input.is_joy_button_pressed(...) also returns true for two button codes, when only one button is pressed.
Is this still reproducible in the current master branch / latest Godot 3.2 builds?
If so, can you retrieve the GUID of the affected gamepad with Input.get_joy_guid(0) (assuming it's the device 0)?
Most helpful comment
It's-a me again.
Using filter driver for WiiU mode and Dolphin built-in support. Same behavior.
(I'm pressing only the d-pad down in this test)

I reinforce that this does not seem to be a Godot bug.