SDL: wayland: Return true for HasScreenKeyboardSupport only if no physical keyboard exists

From fc998b8ec963101466ee9827423ee29b270d93a2 Mon Sep 17 00:00:00 2001
From: Ethan Lee <[EMAIL REDACTED]>
Date: Mon, 8 Nov 2021 12:37:10 -0500
Subject: [PATCH] wayland: Return true for HasScreenKeyboardSupport only if no
 physical keyboard exists

---
 src/video/wayland/SDL_waylandkeyboard.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/video/wayland/SDL_waylandkeyboard.c b/src/video/wayland/SDL_waylandkeyboard.c
index 747a886dda..3695e1ec0c 100644
--- a/src/video/wayland/SDL_waylandkeyboard.c
+++ b/src/video/wayland/SDL_waylandkeyboard.c
@@ -140,8 +140,13 @@ Wayland_SetTextInputRect(_THIS, SDL_Rect *rect)
 SDL_bool
 Wayland_HasScreenKeyboardSupport(_THIS)
 {
+    /* In reality we just want to return tru when the screen keyboard is the
+     * _only_ way to get text input. So, in addition to checking for the text
+     * input protocol, make sure we don't have any physical keyboards either.
+     */
     SDL_VideoData *driverdata = _this->driverdata;
-    return (driverdata->text_input_manager != NULL);
+    return (driverdata->input->keyboard == NULL &&
+            driverdata->text_input_manager != NULL);
 }
 
 #endif /* SDL_VIDEO_DRIVER_WAYLAND */