Big thread of gamepad testing

Now that 1.2.157 is out, having a bunch of different gamepads, I decided to test them all on as many platforms and as many connection modes as I can, looking for issues. I’ll keep updating this post as I go through them all.

Feel free to post your own findings for your own controllers in this structured format.

I used Controllers Lite (abrev. CL from now on) on macOS to cross-check that the gamepads actually work. All the Linux tests were made on Ubuntu 18.04.2.

Gamepad Tester project: https://github.com/britzl/publicexamples/tree/master/examples/gamepad_tester

gdc tool

TLDR:

Just download this and most things will work:
all_gamepads.gamepads.txt (450.7 KB)

Big table of gamepads

Gamepad OS Issues Gamepad mapping
Xbox One (Bluetooth) macOS gdc doesn’t see triggers (Button 18/19, analog, in CL) and the share and guide buttons (Button 17/1 in CL). Everything else works. xboxone_bt_mac.gamepads.txt (2.7 KB)
Xbox One (Bluetooth) Windows Same issue as Xbox 360 Wireless See xbox360_win.gamepads.txt
Xbox One (Bluetooth, default Ubuntu driver) Linux Driver doesn’t report share and guide buttons. Everything else works. xboxone_bt_linux.gamepads.txt (3.3 KB)
Xbox One (Bluetooth, xpadneo driver) Linux All ok, but has the same name as the default driver, so cannot use both maps at the same time. xboxone_xpadneo_linux.gamepads.txt (2.6 KB)
Xbox One (USB) (driver) macOS All ok default.gamepads
Xbox One (USB) Windows Same issue as Xbox 360 Wireless See xbox360_win.gamepads.txt
Xbox One (USB) Linux All ok xboxone_usb_linux.gamepads.txt (2.6 KB)
Xbox 360 Wireless (with dongle) (driver) macOS All ok default.gamepads
Xbox 360 Wireless (with dongle) Windows Using default.gamepads the triggers are stuck in the 0.5-1.0 range. Creating a new mapping with gdc works ok. Forum post xbox360_win.gamepads.txt (2.3 KB)
Xbox 360 Wireless (with dongle) Linux All ok xbox360_linux.gamepads.txt (2.6 KB)
DualShock 4 (Bluetooth) macOS Defold sees it as “Wireless Controller” and uses the same mapping as USB DS4. gdc sees it, but pressing anything does nothing. Forum post
DualShock 4 (Bluetooth) (driver) Windows Same issue as Xbox 360 Wireless; gdc freezes with this connected, but works in-engine See xbox360_win.gamepads.txt
DualShock 4 (Bluetooth) Linux All ok ds4_bt_linux.gamepads.txt (3.5 KB)
DualShock 4 (USB) macOS All ok default.gamepads
DualShock 4 (USB) (driver) Windows Same issue as Xbox 360 Wireless; gdc freezes with this connected, but works in-engine See xbox360_win.gamepads.txt
DualShock 4 (USB) Linux All ok ds4_usb_linux.gamepads.txt (3.6 KB)
JoyCon L (Bluetooth) macOS All ok. Stick is not analog due to OS driver limitations joycon_l_mac.gamepads.txt (1.0 KB)
JoyCon R (Bluetooth) macOS All ok. Stick is not analog due to OS driver limitations joycon_r_mac.gamepads.txt (1.0 KB)
JoyCon L (Bluetooth) (driver) Windows Couldn’t get it to recognize as an XInput device (probably driver issue)
JoyCon R (Bluetooth) (driver) Windows Couldn’t get it to recognize as an XInput device (probably driver issue)
JoyCon L (Bluetooth) Linux All ok. Stick is not analog due to OS driver limitations joycon_l_linux.gamepads.txt (1.6 KB)
JoyCon R (Bluetooth) Linux All ok. Stick is not analog due to OS driver limitations joycon_r_linux.gamepads.txt (1.6 KB)
Logitech Chillstream (old aftermarket Wired 360 clone, XInput) (USB) (driver) macOS All ok default.gamepads
Logitech Chillstream (USB) Windows Same issue as Xbox 360 Wireless See xbox360_win.gamepads.txt
Logitech Chillstream (USB) Linux All ok chillstream_linux.gamepads.txt (2.6 KB)
Genius Maxfire Blaze 3 (ancient DualShock 1 clone, DirectInput) (USB) macOS All ok maxfireblaze3_mac.gamepads.txt (2.2 KB)
Genius Maxfire Blaze 3 (USB) Windows Doesn’t work due to it not being XInput
Genius Maxfire Blaze 3 (USB) Linux All ok maxfireblaze3_linux.gamepads.txt (3.3 KB)
17 Likes

Wow, impressive work! We should be able to add the mappings you’ve shared to builtins. @AGulev can you please create a ticket for this?

3 Likes

Wow, thanks a lot @dapetcu21! Really helpful!

3 Likes

Thanks! I’ll concatenate all the mappings tomorrow, together with what’s already in builtins, but I wouldn’t add the Maxfire Blaze and Logitech Chillstream to builtins. They’re ancient, out of production controllers me and a colleague had since childhood :laughing: .

2 Likes

I found this in the xpad driver source code, and I was wondering if we should add all those controller names (at least the ones with XTYPE_XBOX360 and XTYPE_XBOXONE) to the default .gamepads file. They probably have the same button maps (They were consistent between Xbox One, Xbox 360 and Chillstream from what I noticed).

For example, there are at least 3 versions of the Xbox One controller, with different names.

Here’s the .gamepads file with all the gamepads (what was already there in default.gamepads, Xbox 360, Xbox One, DS4, Joycons, plus all the xpad gamepads on Linux).

all_gamepads.gamepads.txt (450.7 KB)

To sum up:

  • On macOS, the DS4 controller doesn’t work at all via Bluetooth
  • On macOS, the Xbox One controller via Bluetooth is missing triggers and the share and guide buttons
  • On Windows, the Xbox 360 binding in default.gamepads had wrong trigger ranges. I replaced it with a working one
  • On Linux, it would be cool to be able to differentiate between Xbox One Bluetooth via xpadneo vs default HID driver.
  • On Linux, gdc crashes on startup for me (and it crashes for @Klear on Windows)
  • On Windows, gdc freezes, then exits silently when a DS4 is connected
5 Likes

I added new task for that: Issue-4217 ( #4217)

5 Likes

Hi, I found duplicates in you list for linux:
device: “Mad Catz Xbox 360 Controller”
device: “Afterglow AX.1 Gamepad for Xbox 360”
device: “PDP Xbox One Controller”
device: “Rock Candy Gamepad for Xbox 360”
device: “Logic3 Controller”
device: “PDP Afterglow AX.1”
device: “SteelSeries Stratus Duo”
device: “PDP AFTERGLOW AX.1”
device: “Razer Sabertooth”
device: “Razer Atrox Arcade Stick”
device: “Xbox Airflo wired controller”
device: “ThrustMaster Ferrari 458 Racing Wheel”

I think I can remove it? (or maybe duplicates should have another platform?)

1 Like

Sure, if you found duplicates, you can remove them

Solved in Defold 1.2.160 has been released

3 Likes

Update for Catalina:

DS4 through Bluetooth shows up as “DUALSHOCK 4 Wireless Controller” instead of just “Wireless Controller”, but gdc crashes with a segfault immediately after that.

Yeah. gdc crashes on Catalina no matter the controller

gdc tool does not detect joycons on Windows 11, seems to crash / close on its own.

Thanks, we’ll look into it!

1 Like

Created GitHub issue: https://github.com/defold/defold/issues/6658

3 Likes

I’m getting reports that DualShock 5 isn’t working. I checked the list in the original post and indeed it only goes as far as 4. I tried to download the utility but I get a 404.

Each of the gdc links worked for me here (version 1.3.4):
http://d.defold.com/stable/

Thanks! Managed to get the utility from there.

I don’t own a DualShock 5 but my friend does. He reports that the utility is not detecting any controllers. He is confident that the controller works (i.e. it is currently being detected by other games). As expected, Fates of Ort is not detecting the gamepad. I imagine this is the case for all Defold games.

What might we do next? :thinking:

Do you get any raw input from the DualShock 5?

No. Well, I haven’t previously checked for “raw” specifically but when I print the action_id nothing is returned at all, and we’d expect “raw” there.