diff --git a/ChatTwo/ChatTwo.yaml b/ChatTwo/ChatTwo.yaml index c6916b3..87482ca 100755 --- a/ChatTwo/ChatTwo.yaml +++ b/ChatTwo/ChatTwo.yaml @@ -23,7 +23,5 @@ tags: - Replacement changelog: |- **Updates** - - More keybind handling improvements - - Add keybinds for switching tabs [thanks dean] - - Add auto hide after inactivity [default false, thanks dean] - - Fix auto scroll failing if custom cell padding is used [thanks zbee] + - Loc updates + - Fix multiple issues with keybinds diff --git a/ChatTwo/GameFunctions/KeybindManager.cs b/ChatTwo/GameFunctions/KeybindManager.cs index 75567bd..5ce87f9 100644 --- a/ChatTwo/GameFunctions/KeybindManager.cs +++ b/ChatTwo/GameFunctions/KeybindManager.cs @@ -5,11 +5,12 @@ using ChatTwo.Util; using Dalamud.Game.ClientState.Keys; using Dalamud.Game.Config; using Dalamud.Plugin.Services; -using Dalamud.Utility.Signatures; using FFXIVClientStructs.FFXIV.Client.System.String; using FFXIVClientStructs.FFXIV.Client.UI; using ImGuiNET; +using ModifierFlag = ChatTwo.GameFunctions.Types.ModifierFlag; + namespace ChatTwo.GameFunctions; internal enum KeyboardSource { @@ -18,11 +19,6 @@ internal enum KeyboardSource { } internal unsafe class KeybindManager : IDisposable { - // Functions - // Replace with - [Signature("E8 ?? ?? ?? ?? 48 8D 4D A0 8B F8")] - private readonly delegate* unmanaged GetKeybindNative = null!; - private Plugin Plugin { get; } internal bool DirectChat; @@ -454,21 +450,21 @@ internal unsafe class KeybindManager : IDisposable { } } - private Keybind GetKeybind(string id) + private static Keybind GetKeybind(string id) { - var outData = stackalloc byte[11]; + var outData = new UIInputData.Keybind(); var idString = Utf8String.FromString(id); - GetKeybindNative(UIInputData.Instance(), idString, (nint) outData); + UIInputData.Instance()->GetKeybind(idString, &outData); idString->Dtor(true); - var key1 = RemapInvalidVirtualKey((VirtualKey) outData[0]); - var key2 = RemapInvalidVirtualKey((VirtualKey) outData[2]); + var key1 = RemapInvalidVirtualKey((VirtualKey) outData.Key); + var key2 = RemapInvalidVirtualKey((VirtualKey) outData.AltKey); return new Keybind { Key1 = key1, - Modifier1 = (ModifierFlag) outData[1], + Modifier1 = (ModifierFlag) outData.Modifier, Key2 = key2, - Modifier2 = (ModifierFlag) outData[3], + Modifier2 = (ModifierFlag) outData.AltModifier, }; }