godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
90.93k stars 21.15k forks source link

Dualsense Edge controller inputs read incorrectly #93496

Closed eleonore122 closed 4 months ago

eleonore122 commented 4 months ago

Tested versions

Reproducible in 4.3 beta 1 and 4.2.2 stable. haven't checked other versions

System information

Godot v4.3.beta1 - Manjaro Linux #1 SMP PREEMPT_DYNAMIC Mon Jun 10 09:50:04 UTC 2024 - Wayland - Vulkan (Forward+) - dedicated AMD Radeon RX 6700 XT (RADV NAVI22) () - AMD Ryzen 7 3700X 8-Core Processor (16 Threads)

Issue description

put simply nearly all of the inputs on the dualsense edge controller are read incorrectly by godot. i also have a standard dualsense controller which 100% works.

Examples of inputs that are being read wrong: Left Bumper -> Joypad Button 4(Back, Sony Select, Xbox Back, Nintendo -) Right Bumper -> Joybad Button 5(Guide, Sony PS, Xbox Home) Left Trigger -> Joypad Axis +/- (Right stick left/right, joystick 1 left/right) Left trigger state changes for depressing or releasing the button Right Trigger -> especially interesting because depressing the button is read correctly, but releasing it is read as Joypad axis 5-(Joystick 2 up) PS button -> right bumper

Left stick is read entirely correctly, as are circle and cross, however every other input is registering as something it shouldn't.

Steps to reproduce

plug in dualsense edge controller, open input map settings, add a new action, and register the inputs for that action

Minimal reproduction project (MRP)

this problem is appearing in completely new projects, and existing projects as well.

eleonore122 commented 4 months ago

i have a custom SDL binding that works for the controller in lutris for example, but adding it to gamecontrollerdb.txt doesn't seem to actually affect anything. if anyone can offer guidance on where to go with this problem i'd be happy to tackle it myself, but looking through the code i can't figure out exactly what needs changing to reflect the new mapping being added

Calinou commented 4 months ago

but adding it to gamecontrollerdb.txt doesn't seem to actually affect anything.

Did you recompile Godot after adding it? The file is embedded in the binary at build-time.

If you can't build Godot, you can also use the environment variable override as mentioned here: https://docs.godotengine.org/en/stable/tutorials/inputs/controllers_gamepads_joysticks.html#my-controller-has-incorrectly-mapped-buttons-or-axes

eleonore122 commented 4 months ago

i did recompile, and nothing changed. setting the environment variable also didn't solve the issue. setting the mapping directly in script with Input.set_joy_mapping() also doesn't have any effect

eleonore122 commented 4 months ago

okay i did find the issue, it seems the program i was using to create the SDL config was reporting a different GUID for the controller than godot was recognizing. that really should have been something i checked sooner