devilutionX icon indicating copy to clipboard operation
devilutionX copied to clipboard

[android] Fingerprint scanner detected as gamepad

Open AJenbo opened this issue 3 years ago • 15 comments

From a review on Google Play:

poco f3 - controls for walking, attack, etc. are not displayed. In previous versions of the launcher, everything was fine (as if the game thinks that I have a gamepad connected, BUT I DON'T HAVE IT!) P.S. it doesn't matter, this error is a problem with the fingerprint scanner drivers of some smartphones. Gamepad auto-detect games mistake scanner for gamepad, solution is to add gamepad/touch manual control switch

If I'm understanding it correctly there phones fingerprint reader is being detected as a hardware input causing the input mode to switch away from touch.

While it is unfortunate I do not agree with the notion that auto detection should be removed. And preferably we can even avoid an overwrite setting.

The user was running Android 11 on a Xiaomi Poco F3 phone (which failed to be detected properly by Google Play, so may be an unofficial ROM).

(Original Russian text)

poco f3 - не отображаются элементы управления ходьбой, атакой и т.д. В предыдущих версиях лаунчера все было нормально (как будто игра думает что у меня подключен геймпад, НО У МЕНЯ ЕГО НЕТУ!) P.S. это не имеет значения, эта ошибка - проблема драйверов сканера отпечатков пальцев некоторых смартфонов. Игры с автоопределением геймпада принимают сканер за геймпад, решением проблемы является добавление переключателя ручного управления геймпад/сенсорный ввод

AJenbo avatar Apr 15 '22 00:04 AJenbo

I see this, and I think the same problem may occur with the Google Pixel.

https://github.com/libsdl-org/SDL/blob/120c76c84bbce4c1bfed4e9eb74e10678bd83120/src/joystick/SDL_gamecontroller.c#L1825

bubio avatar Apr 16 '22 07:04 bubio

@bubio that's probably the same case. There are lots of devices with this issue.

yuripourre avatar Apr 16 '22 23:04 yuripourre

@bubio that's probably the same case. There are lots of devices with this issue.

I see. Wish I had a good solution...

bubio avatar Apr 16 '22 23:04 bubio

It looks like it was confirmed on another phone of the same model:

image

AJenbo avatar Apr 17 '22 03:04 AJenbo

@yuripourre do you have access to an affected device? If we can get the debug output we can filter out the problematic devices.

AJenbo avatar Apr 17 '22 03:04 AJenbo

If we can find the names these two hints can be used to either whitelist or blacklist controllers. SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT Potentially we could expose this in the ini

AJenbo avatar Apr 17 '22 04:04 AJenbo

@AJenbo no, unfortunately not. I heard about this issue in controller libraries that relies on SDL. There is a "list of devices to be ignored" out there, I can try to find it.

yuripourre avatar Apr 17 '22 07:04 yuripourre

@AJenbo this is how SDL handles the fingertip for Google Pixel devices: https://github.com/libsdl-org/SDL/commit/a2e856523089d5d95ba565a26a35ab367c960f12

I will try to find a more complete list.

yuripourre avatar Apr 17 '22 07:04 yuripourre

I've tried it with a POCO F3 (M2012K11AG) and had no problems with the touch interface. Must be a specific sub model

ChaosMarc avatar Apr 17 '22 10:04 ChaosMarc

They appear to have removed there review so I'm not able to communicate with them any longer

AJenbo avatar Apr 17 '22 17:04 AJenbo

Good news, the guy apparently understands English: image

Google does appear to not be listing there reviews, but they can still be accessed directly so for future reference I'm adding the review id here: gp%3AAOqpTOF3_eUpqg33D0PiiDr5DEGM648zGokMTDIjGGBHJpfgQ6dWHB83Pu8MkbDmTREOeJf1gPlT0856JWZ8iF8

AJenbo avatar Apr 26 '22 11:04 AJenbo

Came across this while looking at the outher issues out of curiosity.

Poco F3 uses fpc fingerprint which gets detected as a joystick.

https://github.com/Android-Device-Development/android_kernel_xiaomi_sm8250/blob/b29471c8fa15fffe46bdc6c5d69294b02edba1fa/arch/arm64/configs/vendor/alioth_defconfig#L368

Fixed in upstream for android phones only and later globally. https://github.com/libsdl-org/SDL/commit/a2e856523089d5d95ba565a26a35ab367c960f12

https://github.com/libsdl-org/SDL/commit/7fa46ec40b8b6a58f174f0992ecead0a1ab23817

nitanmarcel avatar Jun 11 '22 07:06 nitanmarcel

@nitanmarcel the odd thing is that we actually released with https://github.com/libsdl-org/SDL/commit/727eef7064e02aea89281493d0c5f16ad9e3c16f which sould include https://github.com/libsdl-org/SDL/commit/a2e856523089d5d95ba565a26a35ab367c960f12

Are you able to trigger this on a Poco F3?

AJenbo avatar Jun 11 '22 07:06 AJenbo

@nitanmarcel the odd thing is that we actually released with libsdl-org/SDL@727eef7 which sould include libsdl-org/SDL@a2e8565

Are you able to trigger this on a Poco F3?

I don't have a Poco F3 but weirdly enough I tried to compile a sdl version with the global fpc fix and the fingerprint still got detected.

Will try on Android. Most likely the same will happen since I have the same fingerprint vendor

nitanmarcel avatar Jun 11 '22 07:06 nitanmarcel

If you can help with solving this it would be very much appreciated :)

AJenbo avatar Jun 11 '22 07:06 AJenbo