From 0cc0db0a6590e3ea7fad9af95bfc52860cfc12dc Mon Sep 17 00:00:00 2001 From: CookieTraces Date: Wed, 29 Apr 2026 00:18:41 +0200 Subject: [PATCH] [android] Fix swkbd inline keyboard submitting before appearing --- .../yuzu/yuzu_emu/applets/keyboard/SoftwareKeyboard.kt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/applets/keyboard/SoftwareKeyboard.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/applets/keyboard/SoftwareKeyboard.kt index 26e787f377..5b28c04219 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/applets/keyboard/SoftwareKeyboard.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/applets/keyboard/SoftwareKeyboard.kt @@ -46,12 +46,20 @@ object SoftwareKeyboard { // There isn't a good way to know that the IMM is dismissed, so poll every 500ms to submit inline keyboard result. val handler = Handler(Looper.myLooper()!!) val delayMs = 500 + var keyboardEverShown = false handler.postDelayed( object : Runnable { override fun run() { val insets = ViewCompat.getRootWindowInsets(overlayView) - val isKeyboardVisible = insets!!.isVisible(WindowInsets.Type.ime()) + val isKeyboardVisible = insets?.isVisible(WindowInsets.Type.ime()) == true if (isKeyboardVisible) { + keyboardEverShown = true + handler.postDelayed(this, delayMs.toLong()) + return + } + + if (!keyboardEverShown) { + // Keyboard hasn't appeared yet; keep polling instead of submitting empty input. handler.postDelayed(this, delayMs.toLong()) return }