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

Bind Timeout regression bug for Android #16217

Closed
davidhedlund opened this issue Feb 10, 2024 · 13 comments · Fixed by #17704
Closed

Bind Timeout regression bug for Android #16217

davidhedlund opened this issue Feb 10, 2024 · 13 comments · Fixed by #17704

Comments

@davidhedlund
Copy link
Contributor

davidhedlund commented Feb 10, 2024

RetroArch for Android version 1.16.0 respects the default Settings -> Input -> Bind Timeout: 3 for all buttons, but RetroArch 1.17.0 does not do this

Analog button issue

  • Go to: Settings -> Input -> RetroPad Binds -> Port 1 Controls
  • Use a gamepad controller and press the face button that will activate "Set All Controls"
  • All buttons are requested to be remapped, except R2. Analog L2 is pressed, it functions as a double click.

Evaluated in Android 13 with a Sony DualSense controller.

Screen touch activation issues

Description

Affects entries in:

  • Settings -> Input -> RetroPad Binds -> Port * Controls
  • Settings -> Input -> Hotkeys

If you touch a menu entry to activate button remapping. This does not happen if you press the controller button to activate it.

  • 1.16.0: 3 seconds
  • 1.17.0: 0.2~ second -- you will barely see it, so there's a risk that you don't remap it

There's a risk that people will upload incomplete autoconfig files to https://github.com/libretro/retroarch-joypad-autoconfig

"Set All Controls"

"Set All Controls" -> "D-Pad Up" (the first button that pop-ups):

  • 1.16.0: 3 seconds

1.17.0:

  • D-PAD up appears for 0.2~ second (it's very difficult to detect it)! More importantly, the "Set All Controls" process it not cancelled when the D-pad Up is not pressed.

If you press D-Pad Up during "Set All Controls", then these buttons are not requested automatically:

  • "B Button (Down)" is not requested later.

These buttons are sometimes never requested to be remapped (not even for a blink of an eye) regardless if you pressed D-Pad Up earlier or not:

  • L3, and R3
  • Right thumb stick Up

D-PAD Up issue

Platform Input Method to press "OK" to set Set All Controls Settings -> Input -> Bind Timeout: 3 prompts for D-Pad Up Notes
RetroArch Android Touch Screen No
RetroArch Android Gamepad button (fallback profile) Yes
RetroArch Android Gamepad touch screen activation button (fallback profile) Yes
RetroArch Android Bluetooth Mouse N/A Mouse activation doesn't work
RetroArch Desktop (GNU/Linux) Touch Screen Unknown Not tested. Does quick tap source code exist in other releases than Android? If so, then someone with a touch screen could help us.
RetroArch Desktop (GNU/Linux) Gamepad button (fallback profile) Yes
RetroArch Android (GNU/Linux) Gamepad touch screen activation button (fallback profile) Yes
RetroArch Desktop (GNU/Linux) Bluetooth Mouse Yes

Version/Commit

You can find this information under Information/System Information

Environment information

  • OS: I could reproduce this issue in both Android 10, and Android 13.
@davidhedlund davidhedlund changed the title RetroArch 1.17.0 for Android: "Port * Controls" countdown issue RetroArch 1.17.0 for Android: Countdown issue for button remap activated via the touch screen Feb 10, 2024
@davidhedlund davidhedlund changed the title RetroArch 1.17.0 for Android: Countdown issue for button remap activated via the touch screen RetroArch 1.17.0 for Android: Remap issues Feb 10, 2024
@davidhedlund davidhedlund changed the title RetroArch 1.17.0 for Android: Remap issues RetroArch 1.17.0 for Android: Remap regression bugs Feb 10, 2024
@davidhedlund
Copy link
Contributor Author

@LibretroAdmin This issue should be highly prioritized. Can you please label it?

@LibretroAdmin
Copy link
Contributor

I'll let @sonninnos know about it, since I think he last handled the input remapping code.

@davidhedlund
Copy link
Contributor Author

I'll let @sonninnos know about it, since I think he last handled the input remapping code.

Thank you very much.

@davidhedlund
Copy link
Contributor Author

@sonninnos These bugs persist in https://buildbot.libretro.com/stable/1.19.1/android/RetroArch.apk it makes it very inconvenient for people to configure controllers. Have you taken a look at this yet?

@sonninnos
Copy link
Collaborator

Works fine here. Bind timeout is respected, and when setting all it proceeds to the next one in proper order without missing any, and if timeout is triggered, it stops the whole process, because forcefully continuing to the end without a way to quit is way more annoying.

Tested on Windows, and zero idea how platform could make any difference with that code.

@davidhedlund
Copy link
Contributor Author

Works fine here. Bind timeout is respected, and when setting all it proceeds to the next one in proper order without missing any, and if timeout is triggered, it stops the whole process, because forcefully continuing to the end without a way to quit is way more annoying.

Tested on Windows, and zero idea how platform could make any difference with that code.

Thank you for testing it.

@cvshepherd
Copy link

i am experiencing these exact problems with version 1.20.0 on my google pixel 7a. the hotkey feature is unusable in this state.

@davidhedlund
Copy link
Contributor Author

@zoltanvb Hello. Do you have any idea what may causing this?

@zoltanvb
Copy link
Contributor

Would the same workaround be applicable here as #17157 ? That is, setting "Bind Hold" to e.g. 5.

@davidhedlund
Copy link
Contributor Author

davidhedlund commented Mar 1, 2025

Would the same workaround be applicable here as #17157 ? That is, setting "Bind Hold" to e.g. 5.

That worked. This will prompt all entries to be displayed for 3 seconds:
Settings -> Input -> Bind Hold: 1

Implementing the 1-second hold requirement as a default setting for Android could significantly enhance user experience, despite making the remapping process longer compared to single taps. This change benefits regular users by ensuring they can map all controller buttons effectively, even if it takes longer than the quicker single-tap method, because regular users are not aware that you have to press button super fast as a workaround if they are not prompted. Also, it makes it easier for them to upload correct autoconfig files.

Do you think that it should it be added as a default setting for the Android release?

@davidhedlund davidhedlund changed the title RetroArch 1.17.0 for Android: Remap regression bugs RetroArch 1.17.0 for Android: Remap regression bugs for Bind Timeout Mar 1, 2025
@davidhedlund davidhedlund changed the title RetroArch 1.17.0 for Android: Remap regression bugs for Bind Timeout Bind Timeout issue via touch screen RetroArch 1.17.0 for Android: Remap regression bug Mar 1, 2025
@davidhedlund
Copy link
Contributor Author

The "Bind Hold" workaround could be improved significantly by implementing:

This would allow users to hold buttons for 0.1 second instead of 1 second.

@davidhedlund davidhedlund changed the title Bind Timeout issue via touch screen RetroArch 1.17.0 for Android: Remap regression bug Bind Timeout regression bug for Android Mar 1, 2025
@davidhedlund
Copy link
Contributor Author

davidhedlund commented Mar 15, 2025

@davidhedlund
Copy link
Contributor Author

davidhedlund commented Mar 21, 2025

@zoltanvb Thank you very much!

@LibretroAdmin The workarounds are useful but don't solve the underlying cause. Right now I opened, referenced, and closed #17720 so you can re-open this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants