diff --git a/CustomResolution2782/ConfigurationV1.cs b/CustomResolution2782/ConfigurationV1.cs index fbdbaa8..69969d0 100644 --- a/CustomResolution2782/ConfigurationV1.cs +++ b/CustomResolution2782/ConfigurationV1.cs @@ -41,6 +41,9 @@ public struct ConfigurationV1 public VirtualKey HotkeyKey = VirtualKey.NO_KEY; public ModifierKey HotkeyModifier = ModifierKey.NONE; + [NonSerialized] + public bool HotkeyKeyDown = false; + public SizeConfig() { Width = 1024; diff --git a/CustomResolution2782/Plugin.cs b/CustomResolution2782/Plugin.cs index 92d18a3..97ff124 100644 --- a/CustomResolution2782/Plugin.cs +++ b/CustomResolution2782/Plugin.cs @@ -90,10 +90,16 @@ public sealed unsafe class Plugin : IDalamudPlugin private void OnFrameworkUpdateForSize(ref ConfigurationV1.SizeConfig size) { - var io = ImGui.GetIO(); + if (size.HotkeyKey == VirtualKey.NO_KEY) + { + return; + } - if (size.HotkeyKey != VirtualKey.NO_KEY && - (ImGuiNative.igIsKeyPressed((ImGuiKey) size.HotkeyKey, 0) != 0 || Service.KeyState.GetRawValue(size.HotkeyKey) != 0) && + var io = ImGui.GetIO(); + var keyPressedIm = ImGuiNative.igIsKeyPressed((ImGuiKey) size.HotkeyKey, 0) != 0; + var keyDownXiv = Service.KeyState.GetRawValue(size.HotkeyKey) != 0; + + if ((keyPressedIm || (keyDownXiv && !size.HotkeyKeyDown)) && (size.HotkeyModifier switch { ModifierKey.NONE => !io.KeyCtrl && !io.KeyAlt && !io.KeyShift, @@ -106,6 +112,8 @@ public sealed unsafe class Plugin : IDalamudPlugin size.IsEnabled = !size.IsEnabled; Service.Config.Save(); } + + size.HotkeyKeyDown = keyDownXiv; } private void OnFrameworkUpdate(IFramework framework)