The KEYBOARD-source veto added in #5439 drops face-button key events that arrive with both AINPUT_SOURCE_KEYBOARD and AINPUT_SOURCE_GAMEPAD set on the source bitmask. Confirmed reproducible on GameSir X2 Type-C and 8BitDo Ultimate Bluetooth, both reporting source 0x501 on every face-button key event. This source-bit pattern is general AOSP behaviour since Android 3.2 (commit 6f2fba4 in frameworks/base, Feb 2011): EventHub adds InputDeviceClass::KEYBOARD to any device whose evdev keyBitmask claims gamepad buttons (BTN_JOYSTICK..BTN_DIGI), and KeyboardInputMapper::getEventSource stamps the resulting KEYBOARD|GAMEPAD source on every outgoing key event. Use AndroidTranslateGamepadButton(keycode) as the discriminator instead. Recognised gamepad keycodes route to the gamepad path; unknown keycodes fall through to the keyboard handler. Assisted-by: Claude:claude-opus-4-7 |
||
|---|---|---|
| .. | ||
| rcore_android.c | ||
| rcore_desktop_glfw.c | ||
| rcore_desktop_rgfw.c | ||
| rcore_desktop_sdl.c | ||
| rcore_desktop_win32.c | ||
| rcore_drm.c | ||
| rcore_memory.c | ||
| rcore_template.c | ||
| rcore_web_emscripten.c | ||
| rcore_web.c | ||