godotengine / godotengine/godot
Joypad trigger buttons incorrectly mapped on Android
- Dominant language
- C++
- Stars
- 117k
- Forks
- 26.8k
- PR merge metrics
- PR metrics pending
Description
### Tested versions
- Reproducible in v4.4.1.stable.official.49a5bc7b6
### System information
Godot v4.4.1.stable - Arch Linux #1 SMP PREEMPT_DYNAMIC Thu, 22 May 2025 05:37:49 +0000 on Wayland - X11 display driver, Multi-window, 1 monitor - Vulkan (Mobile) - integrated Intel(R) Iris(R) Xe Graphics (RPL-U) - 13th Gen Intel(R) Core(TM) i7-1355U (12 threads)
### Issue description
On Linux, the joypad right trigger input correctly reads values between 0 and 1.
On Android, the joypad right trigger begins by reading 0. Then if you press it, it reads 1. But when you release it reads 0.5 and not 0.
The issue persists whether you are using `InputEventJoypadMotion.axis_value` directly or `Input.get_action_strength()`
### Steps to reproduce
Create a label
Create a script for the label that gets the `axis_value` of `RIGHT_TRIGGER` on `_input()`
Test it out on Linux
- connect joypad controller
- press Right Trigger
- release Right Trigger
Test it out on Android
- connect joypad controller
- press Right Trigger
- release Right Trigger
### Minimal reproduction project (MRP)
[mrp.zip](https://github.com/user-attachments/files/21440675/mrp.zip)
Contributor guide
Research direction
Start by running the attached MRP on Linux and Android, then trace the values reported through _input(), InputEventJoypadMotion.axis_value, and Input.get_action_strength(). Compare the right-trigger readings before pressing, while pressing, and after releasing. Done means Android reports 0 after release, matching Linux behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, cpp
- Domain
- game-dev, mobile
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100