Hi, thanks for reaching out.
An Android app should set up a list of permissions to access gamepads. One of the pop-ups when the app starts for the first time is a "BLUETOOTH_CONNECT" permission, which in theory is only needed for Steam controllers. I believe there's another one that pops up when you insert a gamepad in to USB, which is the important one. I've seen a discussion about this on Github regarding emulators not connecting to controllers because they're lacking this permission, which needs to be included in the Manifest when the app is built.
My app uses the same comprehensive gamepad mapping database used by the Steam client. This might be where my app has the advantage over others. Different Android versions will produce different scancodes for Nintendo Pro gamepads as well, which adds to this problem.
So in conclusion, the other apps need to have better gamepad support coded into them. It's a big task to get it working, which is where SDL & HIDAPI do the heavy lifting for me.
Does disabling HIDAPI in my app make much difference? If you use my app to give the gamepad a kick-start before entering the other app, does that help (it's been known to with some gamepads) ? Keylaout file? Is that the .kl file? I have considered adding support for kl files, but have zero experience with them. What puts me off is that the few mapping apps out there have terrible reviews because it opens a whole can of worms that end up disappointing users who don't know about rooting. Your input is welcome.