Open MrEliptik opened 10 months ago
I also encountered this issue and can't figure it out. To add more details, PS5 controller works fine and PS button is recognized properly. At first I thought some app in the background might be stealing input. I exited Steam, Windows Gamebar etc. Still no success.
I can dig through the engine code and try fix it, but I don't know where to start. Could anyone give me any hint where to look and debug?
I would start looking at two possible reasons:
Does the controller have a mapping in https://github.com/godotengine/godot/blob/3.x/main/gamecontrollerdb.txt that includes the Home button?
3.x
or 3.5
branch by the latest upstream one to see if that solves it.SDL_GAMECONTROLLERCONFIG="<mapping string>"
to the environment when running Godot.Otherwise to dig into the Godot source code, the relevant files are https://github.com/godotengine/godot/blob/3.x/core/os/input.cpp and https://github.com/godotengine/godot/blob/3.x/platform/windows/joypad_windows.cpp
master
branch which seems to be working according to the OP (after confirming it locally), to see what it does differently that might have solved this. A possibility if you have a fast computer would be to bisect to find when the bug was fixed in the master
branch, between 3.2-stable
and the first Godot 4 version you can find that has the bug fixed.
Godot version
3.5.2.stable
System information
Windows 10, GLES3, GTX 1070 driver 537.13
Issue description
Steam asks that the controller home button (xbox in that case) should open the Steam Overlay.
_input(event)
, the event detected isInputEventKey
with a scancode of 33554431 which is unknown.The same issue was opened in 2021: https://github.com/godotengine/godot/issues/47579 and supposed to be fixed with https://github.com/godotengine/godot/pull/48934
The problem is not present in Godot 4.1.
I've tested this on Windows and Linux (Steam deck), with an Xbox One and Xbox Series controller, both in USB and wireless with the dongle. I've also tested the action with device 0 and all devices.
The button is correctly recognized by Steam and by this gamepad tester website: https://hardwaretester.com/gamepad
Steps to reproduce
Input.is_action_just_pressed("your_action")
in_process
, it does nothingor
_input(event)
, check the following code, which will print 33554431 which is unknown key.if event is InputEventKey: print(event.scancode)
Minimal reproduction project
NA