SDL: Check raw keyboard input in checkkeys

From 391a63f29fee4428269db9f818d58705035eba9d Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Tue, 11 Jun 2024 09:09:12 -0700
Subject: [PATCH] Check raw keyboard input in checkkeys

---
 test/checkkeys.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/test/checkkeys.c b/test/checkkeys.c
index e0baa5e052065..278365bb4ae5e 100644
--- a/test/checkkeys.c
+++ b/test/checkkeys.c
@@ -154,6 +154,19 @@ PrintText(const char *eventtype, const char *text)
     SDL_Log("%s Text (%s): \"%s%s\"\n", eventtype, expanded, *text == '"' ? "\\" : "", text);
 }
 
+static void CountKeysDown(void)
+{
+    int i, count = 0, max_keys = 0;
+    const Uint8 *keystate = SDL_GetKeyboardState(&max_keys);
+
+    for (i = 0; i < max_keys; ++i) {
+        if (keystate[i]) {
+            ++count;
+        }
+    }
+    SDL_Log("Keys down: %d\n", count);
+}
+
 static void loop(void)
 {
     SDL_Event event;
@@ -178,6 +191,7 @@ static void loop(void)
                     break;
                 }
             }
+            CountKeysDown();
             break;
         case SDL_EVENT_TEXT_EDITING:
             PrintText("EDIT", event.edit.text);
@@ -239,6 +253,8 @@ int main(int argc, char *argv[])
 {
     int w, h;
 
+    SDL_SetHint(SDL_HINT_WINDOWS_RAW_KEYBOARD, "1");
+
     /* Initialize test framework */
     state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
     if (!state) {