Add support for CLICK keybinds

What a cancer API FUCK YOU BLIZZARD
This commit is contained in:
2025-05-07 21:30:38 +02:00
parent 53e201e414
commit 3e85b9933e

View File

@@ -24,6 +24,10 @@ local function SaveKeybindSet(setName)
for i = 1, numBindings do
local command, _, key1, key2 = GetBinding(i)
if string.find(command, "CLICK ") then
-- What a stupid fucking api, so fucking idiotic, retarded
command, key2 = strsplit(":", command)
end
if key1 or key2 then set[command] = {
key1 = key1,
key2 = key2,
@@ -34,6 +38,21 @@ local function SaveKeybindSet(setName)
print(string.format("Saved keybind set '%s'!", setName))
end
---@param command string
---@return nil
local function UnbindCommand(command)
if not command or command == "" then
print("Cannot unbind an empty command")
return
end
local keys = { GetBindingKey(command) }
for _, key in ipairs(keys) do
-- print("Unbinding", key)
SetBinding(key)
end
end
---@param setName string
---@return nil
local function RestoreKeybindSet(setName)
@@ -53,8 +72,22 @@ local function RestoreKeybindSet(setName)
-- Restore saved bindings
for command, keys in pairs(set) do
if keys.key1 then SetBinding(keys.key1, command) end
if keys.key2 then SetBinding(keys.key2, command) end
UnbindCommand(command)
-- This fucking catastrophe binds a KEY(2) to CLICK A BUTTON (command) as a MOUSE BUTTON (key1)
if string.find(command, "CLICK ") and keys.key2 then
command = string.gsub(command, "CLICK ", "")
local ok = SetBindingClick(keys.key2, command, keys.key1)
if not ok then print("Failed to bind click", keys.key1, command) end
else
if keys.key1 then
local ok = SetBinding(keys.key1, command)
if not ok then print("Failed to bind", keys.key1, command) end
end
if keys.key2 then
local ok = SetBinding(keys.key2, command)
if not ok then print("Failed to bind", keys.key2, command) end
end
end
end
-- Save the changes
@@ -108,14 +141,12 @@ local function ImportKeybindSet(setName, importStr)
local lines = { strsplit("\n", importStr) }
for _, line in ipairs(lines) do
local command, key = strsplit(":", line)
local command, key, key2 = strsplit(":", line)
if command and key then
if not set[command] then set[command] = {} end
if not set[command].key1 then
set[command].key1 = key
else
set[command].key2 = key
end
if not set[command] then set[command] = {
key1 = key,
key2 = key2,
} end
end
end
@@ -185,9 +216,14 @@ local function ExportKeybindSet(setName)
local export = {}
for command, keys in pairs(set) do
if keys.key1 then table.insert(export, string.format("%s:%s", command, keys.key1)) end
if keys.key2 then table.insert(export, string.format("%s:%s", command, keys.key2)) end
if command and keys and (keys.key1 or keys.key2) then
local formatted = command
if keys.key1 then formatted = formatted .. ":" .. keys.key1 end
if keys.key2 then formatted = formatted .. ":" .. keys.key2 end
export[#export + 1] = formatted
end
end
table.sort(export)
local exportStr = table.concat(export, "\n")
importExportFrame:Show()