|
@@ -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;
|
|
|
}
|