From b0cb925a5e892a3d831e1a42392fce9412fe92e4 Mon Sep 17 00:00:00 2001 From: DakkJaniels <6080734+DakkJaniels@users.noreply.github.com> Date: Fri, 28 Apr 2023 14:20:32 -0400 Subject: [PATCH] Add print screen to event handler for UI (#6058) --- Source/DiabloUI/diabloui.cpp | 6 ++++++ Source/diablo.cpp | 7 ++++++- Source/diablo.h | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Source/DiabloUI/diabloui.cpp b/Source/DiabloUI/diabloui.cpp index c2fb5c826..55882fbf6 100644 --- a/Source/DiabloUI/diabloui.cpp +++ b/Source/DiabloUI/diabloui.cpp @@ -10,6 +10,7 @@ #include "controls/input.h" #include "controls/menu_controls.h" #include "controls/plrctrls.h" +#include "diablo.h" #include "discord/discord.h" #include "engine/assets.hpp" #include "engine/clx_sprite.hpp" @@ -461,6 +462,11 @@ void UiHandleEvents(SDL_Event *event) return; } + if (event->type == SDL_KEYUP && event->key.keysym.sym == SDLK_PRINTSCREEN) { + PrintScreen(SDLK_PRINTSCREEN); + return; + } + if (event->type == SDL_KEYDOWN && event->key.keysym.sym == SDLK_RETURN) { const Uint8 *state = SDLC_GetKeyState(); if (state[SDLC_KEYSTATE_LALT] != 0 || state[SDLC_KEYSTATE_RALT] != 0) { diff --git a/Source/diablo.cpp b/Source/diablo.cpp index f30df8bfe..300e7ebb9 100644 --- a/Source/diablo.cpp +++ b/Source/diablo.cpp @@ -439,7 +439,7 @@ void RightMouseDown(bool isShiftHeld) void ReleaseKey(SDL_Keycode vkey) { remap_keyboard_key(&vkey); - if (sgnTimeoutCurs != CURSOR_NONE || dropGoldFlag) + if ((sgnTimeoutCurs != CURSOR_NONE || dropGoldFlag) && vkey != SDLK_PRINTSCREEN) return; sgOptions.Keymapper.KeyReleased(vkey); } @@ -3025,4 +3025,9 @@ bool IsDiabloAlive(bool playSFX) return true; } +void PrintScreen(SDL_Keycode vkey) +{ + ReleaseKey(vkey); +} + } // namespace devilution diff --git a/Source/diablo.h b/Source/diablo.h index 24a0c58a0..0d34a62be 100644 --- a/Source/diablo.h +++ b/Source/diablo.h @@ -96,6 +96,7 @@ bool PressEscKey(); void DisableInputEventHandler(const SDL_Event &event, uint16_t modState); void LoadGameLevel(bool firstflag, lvl_entry lvldir); bool IsDiabloAlive(bool playSFX); +void PrintScreen(SDL_Keycode vkey); /** * @param bStartup Process additional ticks before returning