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

PS5 controller doesn't work in 4.3-stable #95588

Open
fkallevik opened this issue Aug 15, 2024 · 11 comments
Open

PS5 controller doesn't work in 4.3-stable #95588

fkallevik opened this issue Aug 15, 2024 · 11 comments

Comments

@fkallevik
Copy link

Tested versions

  • Reproducible in: 4.3-stable. - Not reproducible in: 4.2-stable.

System information

Godot v4.3.stable - macOS 14.3.1 - GLES3 (Compatibility) - Apple M1 Max - Apple M1 Max (10 Threads)

Issue description

PS5 controller no longer registers any inputs after updating from Godot 4.2-stable to 4.3-stable. No errors in console. Installed 4.2 again and confirmed the PS5 controller works again in that version.

Steps to reproduce

Run "2D Platformer Demo" in Godot 4.3-stable w/ a PS5 controller connected and try playing w/ PS5 controller.

Minimal reproduction project (MRP)

2d_platformer.zip

@AThousandShips
Copy link
Member

Can you check if it happens in 4.2.2? To compare with a supported version

@clayjohn clayjohn moved this from Unassessed to Bad in 4.x Release Blockers Aug 15, 2024
@bruvzg
Copy link
Member

bruvzg commented Aug 15, 2024

I can't reproduce it, PS5 controller seems to be working (macOS 14.6.1). The menu in the 2D Platformer demo seems to behaving strangely, so there might be an issue with input map in the demo.

Joysticks demo detect all inputs correctly, so controller mapping should be fine as well.

Edit: Demo input map is definitly off:
Screenshot 2024-08-15 at 23 33 26

@egnrse
Copy link

egnrse commented Aug 16, 2024

I have the same Problem on Win10 after updating to 4.3 (from 4.2) it doesn't work anymore. The keyboard controls work fine though. Godot recognizes the input of the controller if I want add another action to my project, but if I start it (with F5) the controller input seems to be ignored.
image

@fkallevik
Copy link
Author

@AThousandShips PS5 controller also works in version 4.2.2-stable

@fkallevik
Copy link
Author

fkallevik commented Aug 16, 2024

I did a git bisect bad 4.3-stable && git bisect good 4.2.2-stable and it seems the bug was introduced in:
[07313a0] Migrate macos controller API to GameController.h

@bruvzg
Copy link
Member

bruvzg commented Aug 16, 2024

Migrate macos controller API to GameController.h

This commit removed old deprecated controller API in favor of new API.

Are you connecting the controller via Bluetooth? I'm not sure if wired connections are supported by the new API. Check if your controller is visible in the System Preferences.

Screenshot 2024-08-16 at 19 56 32

@fkallevik
Copy link
Author

The controller shows up in System Preferences "Game Controllers". I tested both wired and Bluetooth now and neither works in Godot 4.3. The controller does vibrate when clicking "Identify" for both wired and wireless, and the controller works in Steam games w/ either connection type (tested in Celeste).

@Perryplats
Copy link

Perryplats commented Aug 17, 2024

Just want to add on that my Xbox series controller is having the same issue, but for some reason my ps5 controller does not
(on Windows)

@egnrse
Copy link

egnrse commented Sep 13, 2024

I could fix my problem (on windows 10, godot installed over steam) by disabling the steam controller input before launching godot.

@francoisdlt
Copy link

francoisdlt commented Dec 6, 2024

I have a project under 4.3-mono with macOS 15.1.1 and PS5 Dualsense controller works perfectly fine in wired and bluetooth mode

2D platformer demo with 4.3 vanilla works fine as well

@problematik
Copy link

I'm having the same issue with a PS5 controller (using Bluetooth, have not tried wired) on Mac 15.1

There are no events generated for any of the controller keys/axis in Godot 4.3 but they generate in 4.2

this is the code i've used to check if there are any events being created.

public override void _Input(InputEvent @event)
{
	if (@event is InputEventKey keyEvent)
	{
		GD.Print($"Key: {keyEvent.Keycode}, Pressed: {keyEvent.Pressed}");
	}
	else if (@event is InputEventMouseButton mouseEvent)
	{
		GD.Print($"Mouse Button: {mouseEvent.ButtonIndex}, Pressed: {mouseEvent.Pressed}, Position: {mouseEvent.Position}");
	}
	else if (@event is InputEventMouseMotion motionEvent)
	{
		GD.Print($"Mouse Motion - Position: {motionEvent.Position}, Relative: {motionEvent.Relative}");
	}
	else if (@event is InputEventJoypadButton joypadEvent)
	{
		GD.Print($"Joypad Button: {joypadEvent.ButtonIndex}, Pressed: {joypadEvent.Pressed}");
	}
	else if (@event is InputEventJoypadMotion joypadMotionEvent)
	{
		GD.Print($"Joypad Axis: {joypadMotionEvent.Axis}, Value: {joypadMotionEvent.AxisValue}");
	}
}

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

No branches or pull requests

9 participants