Replace function with CS version
This commit is contained in:
@@ -23,7 +23,5 @@ tags:
|
|||||||
- Replacement
|
- Replacement
|
||||||
changelog: |-
|
changelog: |-
|
||||||
**Updates**
|
**Updates**
|
||||||
- More keybind handling improvements
|
- Loc updates
|
||||||
- Add keybinds for switching tabs [thanks dean]
|
- Fix multiple issues with keybinds
|
||||||
- Add auto hide after inactivity [default false, thanks dean]
|
|
||||||
- Fix auto scroll failing if custom cell padding is used [thanks zbee]
|
|
||||||
|
|||||||
@@ -5,11 +5,12 @@ using ChatTwo.Util;
|
|||||||
using Dalamud.Game.ClientState.Keys;
|
using Dalamud.Game.ClientState.Keys;
|
||||||
using Dalamud.Game.Config;
|
using Dalamud.Game.Config;
|
||||||
using Dalamud.Plugin.Services;
|
using Dalamud.Plugin.Services;
|
||||||
using Dalamud.Utility.Signatures;
|
|
||||||
using FFXIVClientStructs.FFXIV.Client.System.String;
|
using FFXIVClientStructs.FFXIV.Client.System.String;
|
||||||
using FFXIVClientStructs.FFXIV.Client.UI;
|
using FFXIVClientStructs.FFXIV.Client.UI;
|
||||||
using ImGuiNET;
|
using ImGuiNET;
|
||||||
|
|
||||||
|
using ModifierFlag = ChatTwo.GameFunctions.Types.ModifierFlag;
|
||||||
|
|
||||||
namespace ChatTwo.GameFunctions;
|
namespace ChatTwo.GameFunctions;
|
||||||
|
|
||||||
internal enum KeyboardSource {
|
internal enum KeyboardSource {
|
||||||
@@ -18,11 +19,6 @@ internal enum KeyboardSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal unsafe class KeybindManager : IDisposable {
|
internal unsafe class KeybindManager : IDisposable {
|
||||||
// Functions
|
|
||||||
// Replace with <https://github.com/aers/FFXIVClientStructs/pull/1036>
|
|
||||||
[Signature("E8 ?? ?? ?? ?? 48 8D 4D A0 8B F8")]
|
|
||||||
private readonly delegate* unmanaged<UIInputData*, Utf8String*, nint, uint> GetKeybindNative = null!;
|
|
||||||
|
|
||||||
private Plugin Plugin { get; }
|
private Plugin Plugin { get; }
|
||||||
|
|
||||||
internal bool DirectChat;
|
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);
|
var idString = Utf8String.FromString(id);
|
||||||
GetKeybindNative(UIInputData.Instance(), idString, (nint) outData);
|
UIInputData.Instance()->GetKeybind(idString, &outData);
|
||||||
idString->Dtor(true);
|
idString->Dtor(true);
|
||||||
|
|
||||||
var key1 = RemapInvalidVirtualKey((VirtualKey) outData[0]);
|
var key1 = RemapInvalidVirtualKey((VirtualKey) outData.Key);
|
||||||
var key2 = RemapInvalidVirtualKey((VirtualKey) outData[2]);
|
var key2 = RemapInvalidVirtualKey((VirtualKey) outData.AltKey);
|
||||||
return new Keybind
|
return new Keybind
|
||||||
{
|
{
|
||||||
Key1 = key1,
|
Key1 = key1,
|
||||||
Modifier1 = (ModifierFlag) outData[1],
|
Modifier1 = (ModifierFlag) outData.Modifier,
|
||||||
Key2 = key2,
|
Key2 = key2,
|
||||||
Modifier2 = (ModifierFlag) outData[3],
|
Modifier2 = (ModifierFlag) outData.AltModifier,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user