Forráskód Böngészése

test: testwm2 now displays keyboard mod state.

(cherry picked from commit 258849c9bc2f28b2b6dcacbab4d415054539598c)
Ryan C. Gordon 1 éve
szülő
commit
c5b0ff77d7
1 módosított fájl, 89 hozzáadás és 0 törlés
  1. 89 0
      src/test/SDL_test_common.c

+ 89 - 0
src/test/SDL_test_common.c

@@ -861,6 +861,82 @@ static void SDLTest_PrintWindowFlags(char *text, size_t maxlen, Uint32 flags)
     }
 }
 
+static void SDLTest_PrintModStateFlag(char *text, size_t maxlen, SDL_Keymod flag)
+{
+    switch (flag) {
+    case SDL_KMOD_LSHIFT:
+        SDL_snprintfcat(text, maxlen, "LSHIFT");
+        break;
+    case SDL_KMOD_RSHIFT:
+        SDL_snprintfcat(text, maxlen, "RSHIFT");
+        break;
+    case SDL_KMOD_LCTRL:
+        SDL_snprintfcat(text, maxlen, "LCTRL");
+        break;
+    case SDL_KMOD_RCTRL:
+        SDL_snprintfcat(text, maxlen, "RCTRL");
+        break;
+    case SDL_KMOD_LALT:
+        SDL_snprintfcat(text, maxlen, "LALT");
+        break;
+    case SDL_KMOD_RALT:
+        SDL_snprintfcat(text, maxlen, "RALT");
+        break;
+    case SDL_KMOD_LGUI:
+        SDL_snprintfcat(text, maxlen, "LGUI");
+        break;
+    case SDL_KMOD_RGUI:
+        SDL_snprintfcat(text, maxlen, "RGUI");
+        break;
+    case SDL_KMOD_NUM:
+        SDL_snprintfcat(text, maxlen, "NUM");
+        break;
+    case SDL_KMOD_CAPS:
+        SDL_snprintfcat(text, maxlen, "CAPS");
+        break;
+    case SDL_KMOD_MODE:
+        SDL_snprintfcat(text, maxlen, "MODE");
+        break;
+    case SDL_KMOD_SCROLL:
+        SDL_snprintfcat(text, maxlen, "SCROLL");
+        break;
+    default:
+        SDL_snprintfcat(text, maxlen, "0x%8.8x", (unsigned int) flag);
+        break;
+    }
+}
+
+static void SDLTest_PrintModState(char *text, size_t maxlen, SDL_Keymod keymod)
+{
+    const SDL_Keymod kmod_flags[] = {
+        SDL_KMOD_LSHIFT,
+        SDL_KMOD_RSHIFT,
+        SDL_KMOD_LCTRL,
+        SDL_KMOD_RCTRL,
+        SDL_KMOD_LALT,
+        SDL_KMOD_RALT,
+        SDL_KMOD_LGUI,
+        SDL_KMOD_RGUI,
+        SDL_KMOD_NUM,
+        SDL_KMOD_CAPS,
+        SDL_KMOD_MODE,
+        SDL_KMOD_SCROLL
+    };
+
+    int i;
+    int count = 0;
+    for (i = 0; i < SDL_arraysize(kmod_flags); ++i) {
+        const SDL_Keymod flag = kmod_flags[i];
+        if ((keymod & flag) == flag) {
+            if (count > 0) {
+                SDL_snprintfcat(text, maxlen, " | ");
+            }
+            SDLTest_PrintModStateFlag(text, maxlen, flag);
+            ++count;
+        }
+    }
+}
+
 static void SDLTest_PrintButtonMask(char *text, size_t maxlen, Uint32 flags)
 {
     int i;
@@ -2663,6 +2739,19 @@ void SDLTest_CommonDrawWindowInfo(SDL_Renderer *renderer, SDL_Window *window, fl
     SDLTest_DrawString(renderer, 0.0f, textY, text);
     textY += lineHeight;
 
+    /* Keyboard */
+
+    SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
+    SDLTest_DrawString(renderer, 0, textY, "-- Keyboard --");
+    textY += lineHeight;
+
+    SDL_SetRenderDrawColor(renderer, 170, 170, 170, 255);
+
+    (void)SDL_snprintf(text, sizeof(text), "SDL_GetModState: ");
+    SDLTest_PrintModState(text, sizeof(text), SDL_GetModState());
+    SDLTest_DrawString(renderer, 0, textY, text);
+    textY += lineHeight;
+
     if (usedHeight) {
         *usedHeight = textY;
     }