Android: improved default mappings for controller axis input #23
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
While this isn't a complete replacement to the 'prompt the user to map their controller manually' advice, I've made some adjustments to axis logic that should allow for Android controllers to work with the default mapping in a bunch more cases. These changes are based on Android's guide for handling controller actions: https://developer.android.com/training/game-controllers/controller-input.html#button
On my Android 11 device this totally fixed default mapping issues for a PS4 and Xbox One controller. A Switch pro controller already worked before and after. Lastly there were improvements with a PS5 controller and a 3rd party Switch controller, but button mappings were still wrong. The button mappings apparently are an Android 11 issue which is fixed in 12 though: https://stackoverflow.com/questions/68190869/dualshock-5-and-android
This should probably be considered a breaking change, as existing customized mappings might be incorrect with these axis changes.