diff --git a/shell/android-studio/flycast/src/main/AndroidManifest.xml b/shell/android-studio/flycast/src/main/AndroidManifest.xml index e61bfb451..cd4d29c26 100644 --- a/shell/android-studio/flycast/src/main/AndroidManifest.xml +++ b/shell/android-studio/flycast/src/main/AndroidManifest.xml @@ -50,7 +50,8 @@ android:name="com.reicast.emulator.NativeGLActivity" android:configChanges="orientation|navigation|screenSize|screenLayout|uiMode|keyboard|keyboardHidden" android:screenOrientation="sensorLandscape" - android:exported="true"/> + android:exported="true" + android:theme="@style/Theme.AppCompat.NoActionBar"/> diff --git a/shell/android-studio/flycast/src/main/java/com/reicast/emulator/BaseGLActivity.java b/shell/android-studio/flycast/src/main/java/com/reicast/emulator/BaseGLActivity.java index e9551b35c..e21cf7beb 100644 --- a/shell/android-studio/flycast/src/main/java/com/reicast/emulator/BaseGLActivity.java +++ b/shell/android-studio/flycast/src/main/java/com/reicast/emulator/BaseGLActivity.java @@ -42,6 +42,7 @@ import tv.ouya.console.api.OuyaController; import static android.view.View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; import static android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS; +import static android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION; import static android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; public abstract class BaseGLActivity extends Activity implements ActivityCompat.OnRequestPermissionsResultCallback { @@ -66,7 +67,7 @@ public abstract class BaseGLActivity extends Activity implements ActivityCompat. // Set the navigation bar color to 0 to avoid left over when it fades out on Android 10 Window window = getWindow(); window.addFlags(FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); - window.clearFlags(FLAG_TRANSLUCENT_STATUS); + window.clearFlags(FLAG_TRANSLUCENT_STATUS | FLAG_TRANSLUCENT_NAVIGATION); window.setNavigationBarColor(0); window.getDecorView().setSystemUiVisibility(SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); } diff --git a/shell/android-studio/flycast/src/main/java/com/reicast/emulator/emu/VirtualJoystickDelegate.java b/shell/android-studio/flycast/src/main/java/com/reicast/emulator/emu/VirtualJoystickDelegate.java index 687fbd076..90071482b 100644 --- a/shell/android-studio/flycast/src/main/java/com/reicast/emulator/emu/VirtualJoystickDelegate.java +++ b/shell/android-studio/flycast/src/main/java/com/reicast/emulator/emu/VirtualJoystickDelegate.java @@ -358,7 +358,8 @@ public class VirtualJoystickDelegate { int joyy = get_anal(11, 1); InputDeviceManager.getInstance().virtualGamepadEvent(rv, joyx, joyy, left_trigger, right_trigger); // Only register the mouse event if no virtual gamepad button is down - if ((!editVjoyMode && rv == 0xFFFFFFFF) || JNIdc.guiIsOpen()) + if ((!editVjoyMode && rv == 0xFFFFFFFF && left_trigger == 0 && right_trigger == 0 && joyx == 0 && joyy == 0) + || JNIdc.guiIsOpen()) InputDeviceManager.getInstance().mouseEvent(mouse_pos[0], mouse_pos[1], mouse_btns); return(true); } diff --git a/shell/android-studio/flycast/src/main/jni/src/android_gamepad.h b/shell/android-studio/flycast/src/main/jni/src/android_gamepad.h index 1c1da7b19..3b7169c75 100644 --- a/shell/android-studio/flycast/src/main/jni/src/android_gamepad.h +++ b/shell/android-studio/flycast/src/main/jni/src/android_gamepad.h @@ -269,6 +269,18 @@ public: kcode = 0xffffffff; joyx = joyy = rt = lt = 0; } + if (rt > 0) + { + if ((kcode & DC_BTN_A) == 0) + // RT + A -> D (coin) + kcode &= ~DC_BTN_D; + if ((kcode & DC_BTN_B) == 0) + // RT + B -> C (service) + kcode &= ~DC_BTN_C; + if ((kcode & DC_BTN_X) == 0) + // RT + X -> Z (test) + kcode &= ~DC_BTN_Z; + } u32 changes = kcode ^ previous_kcode; for (int i = 0; i < 32; i++) if (changes & (1 << i))