From 34f54d80c425fde193cf410fb356abef77088b51 Mon Sep 17 00:00:00 2001 From: Amadeus Folego Date: Sat, 19 Nov 2022 07:10:02 -0300 Subject: [PATCH] Modernize keyboard input handling Use engine provided action handling, will only work on byar spring 1353+ don't merge before that engine version is deployed There are a few opinionated changes here: - Keybindings that were patches for lack of language support, for example binding to , and o because [ does not exist in keyboard layouts is replaced by scancode usage, in this case sc_[ - User keys are not loaded by default, uncomment the corresponding line on cmd_tap_hotkeys.lua if that's desired. Users can avoid using that widget if they want custom bindings on the other hand, see comments on that file --- luaui/Widgets/cmd_tap_hotkeys.lua | 478 +--------------------- luaui/Widgets/cmd_tap_hotkeys_swap_yz.lua | 30 -- luaui/actions.lua | 52 +-- luaui/configs/uikeys.txt | 401 ++++++++++++++++++ luaui/tapmain.lua | 8 +- luaui/tapwidgets.lua | 12 +- 6 files changed, 436 insertions(+), 545 deletions(-) delete mode 100644 luaui/Widgets/cmd_tap_hotkeys_swap_yz.lua create mode 100644 luaui/configs/uikeys.txt diff --git a/luaui/Widgets/cmd_tap_hotkeys.lua b/luaui/Widgets/cmd_tap_hotkeys.lua index 1eefce58..0c751e90 100644 --- a/luaui/Widgets/cmd_tap_hotkeys.lua +++ b/luaui/Widgets/cmd_tap_hotkeys.lua @@ -11,476 +11,18 @@ function widget:GetInfo() } end --- table of stuff that we unbind on load -local unbinds={ - "bind b", - "bind any+h", - "bind any+k cloak", - "bind any+q", - "bind q", - "bind any+c controlunit", - "bind c controlunit", - "bind Ctrl+c select", - "bind any+x buildspacing dec", - "bind x buildspacing dec", - "bind x onoff", - "bind Shift+x onoff", - "bindaction buildspacing dec", - "bind any+z buildspacing inc", - "bind z buildspacing inc", - "bindaction buildspacing inc", - "bind f fight", - "bind Shift+f fight", - "bind , prevmenu", - "bind . nextmenu", - "bind Any+i gameinfo", - "bind any+m move", -- Leaving 'M' for morph. Who uses M to move anyways? - "bind m move", - -- Below are new, from former uikeys.txt - "bind Ctrl+b", - "bind Ctrl+a", - "bind Ctrl+d", --selfd - "bind Ctrl+w", --FPS camera - "bind Ctrl+shift+w", --FPS camera - "bind Ctrl+Shift+d", --selfd queued - "bind Ctrl+Shift+a", - "bind Ctrl+alt+w", - "bind alt+v", - "bind alt+shift+v", - "bind Any+i", --gameinfo - --"bind ` drawinmap", -} - --- table of stuff that we bind on load -local binds = {} -function MakeBindsTable (swapYZ) - -- handle swapping YZ, its very awkward to have them the 'wrong' way around on AZERTY keyboards - if swapYZ==nil then swapYZ=false end - local Y = swapYZ and "z" or "y" - local Z = swapYZ and "y" or "z" - - local _binds = { - -- generic commands - "bind Ctrl+a select AllMap++_ClearSelection_SelectAll+", - "bind Ctrl+b select AllMap+_Builder_Idle+_ClearSelection_SelectOne+", - "bind Ctrl+shift+c select AllMap+_ManualFireUnit+_ClearSelection_SelectOne+", - "bind Ctrl+c select AllMap+_NameContain_Commander+_ClearSelection_SelectOne+", - "bind Ctrl+alt+v select AllMap+_NameContain_Outpost+_ClearSelection_SelectOne+", --for Outposts - "bind Ctrl+r select AllMap+_Radar+_ClearSelection_SelectAll+", - "bind Ctrl+v select AllMap+_Not_Builder_Not_Commander_InPrevSel_Not_InHotkeyGroup+_SelectAll+", - "bind Ctrl+w select AllMap+_Not_Aircraft_Weapons+_ClearSelection_SelectAll+", - --"bind Ctrl+x select AllMap+_InPrevSel_Not_InHotkeyGroup+_SelectAll+", - "bind Ctrl+z select AllMap+_InPrevSel+_ClearSelection_SelectAll+", - "bind ctrl+x onoff", - "bind l loadunits", - "bind Shift+l loadunits", - "bind u unloadunits", - "bind Shift+u unloadunits", - - -- building hotkeys - - --- Metal extractors - ---TEST - ---"bind b,h buildunit_armmex", - ---"unbind h", - "bind "..Z.." buildunit_armmex", - "bind shift+"..Z.." buildunit_armmex", - "bind "..Z.." buildunit_cormex", - "bind shift+"..Z.." buildunit_cormex", - "bind "..Z.." buildunit_armmoho", - "bind shift+"..Z.." buildunit_armmoho", - "bind "..Z.." buildunit_cormoho", - "bind shift+"..Z.." buildunit_cormoho", - --- FARK-class units - "bind "..Z.." buildunit_armfark", - "bind shift+"..Z.." buildunit_armfark", - "bind "..Z.." buildunit_cormuskrat", - "bind shift+"..Z.." buildunit_cormuskrat", - --"bind "..Z.." buildunit_corfast", - --"bind shift+"..Z.." buildunit_corfast", - --"bind "..Z.." buildunit_armconsul", - --"bind shift+"..Z.." buildunit_armconsul", - --- Underwater Metal extractors - "bind "..Z.." buildunit_coruwmex", - "bind shift+"..Z.." buildunit_coruwmex", - "bind "..Z.." buildunit_armuwmex", - "bind shift+"..Z.." buildunit_armuwmex", - "bind "..Z.." buildunit_coruwmme", - "bind shift+"..Z.." buildunit_coruwmme", - "bind "..Z.." buildunit_armuwmme", - "bind shift+"..Z.." buildunit_armuwmme", - --- Arm Poker / Commando Mines - "bind "..Z.." buildunit_armmine1", - "bind shift+"..Z.." buildunit_armmine1", - "bind "..Z.." buildunit_cormine4", - "bind shift+"..Z.." buildunit_cormine4", - - "bind x buildunit_armsolar", -- Solars, Wind Gens & Fusions - "bind shift+x buildunit_armsolar", - "bind x buildunit_armwin", - "bind shift+x buildunit_armwin", - "bind x buildunit_corsolar", - "bind shift+x buildunit_corsolar", - "bind x buildunit_corwin", - "bind shift+x buildunit_corwin", - --"bind x buildunit_armgeo", - --"bind shift+x buildunit_armgeo", - --"bind x buildunit_corgeo", - --"bind shift+x buildunit_corgeo", - "bind x buildunit_armfus", - "bind shift+x buildunit_armfus", - "bind x buildunit_corfus", - "bind shift+x buildunit_corfus", - "bind x buildunit_armawin", - "bind shift+x buildunit_armawin", - "bind x buildunit_corawin", - "bind shift+x buildunit_corawin", - - --- Arm Poker Vehicle Mine - "bind x buildunit_armmine3", - "bind shift+x buildunit_armmine3", - - - "bind x buildunit_armtide", - "bind shift+x buildunit_armtide", - "bind x buildunit_cortide", - "bind shift+x buildunit_cortide", - "bind x buildunit_armuwfus", - "bind shift+x buildunit_armuwfus", - "bind x buildunit_coruwfus", - "bind shift+x buildunit_coruwfus", - "bind x buildunit_armuwmmm", - "bind shift+x buildunit_armuwmmm", - "bind x buildunit_coruwmmm", - "bind shift+x buildunit_coruwmmm", - - "bind c buildunit_armllt", -- Basic Defenses (LLT, RL) & Radar - "bind shift+c buildunit_armllt", - "bind c buildunit_armrl", - "bind shift+c buildunit_armrl", - "bind c buildunit_armrad", - "bind shift+c buildunit_armrad", - "bind c buildunit_corllt", - "bind shift+c buildunit_corllt", - "bind c buildunit_corrl", - "bind shift+c buildunit_corrl", - "bind c buildunit_corrad", - "bind shift+c buildunit_corrad", - - "bind alt+c capture", - "bind alt+shift+c capture", - - "bind c buildunit_armdeva", -- adv infantry defense - "bind shift+c buildunit_armdeva", - "bind c buildunit_corshred", - "bind shift+c buildunit_corshred", - "bind c buildunit_armcir", -- adv rocket defense - "bind shift+c buildunit_armcir", - "bind c buildunit_corerad", - "bind shift+c buildunit_corerad", - "bind c buildunit_armarad", -- adv radar towers - "bind shift+c buildunit_armarad", - "bind c buildunit_corarad", - "bind shift+c buildunit_corarad", - - "bind c buildunit_armtl", - "bind shift+c buildunit_armtl", - "bind c buildunit_cortl", - "bind shift+c buildunit_cortl", -- torpedo launcher - "bind c buildunit_armsonar", - "bind shift+c buildunit_armsonar", - "bind c buildunit_corsonar", - "bind shift+c buildunit_corsonar", - "bind c buildunit_armfrad", - "bind shift+c buildunit_armfrad", -- floating radar - "bind c buildunit_corfrad", - "bind shift+c buildunit_corfrad", - "bind c buildunit_armfrt", -- floating AA - "bind shift+c buildunit_armfrt", - "bind c buildunit_corfrt", - "bind shift+c buildunit_corfrt", - - -- Dragon Eyes - "bind v buildunit_armeyes", - "bind shift+v buildunit_armeyes", - "bind v buildunit_coreyes", - "bind shift+v buildunit_coreyes", - - -- Outposts - "bind v buildunit_armoutpost2", - "bind shift+v buildunit_armoutpost2", - "bind v buildunit_coroutpost2", - "bind shift+v buildunit_coroutpost2", - "bind v buildunit_armoutpost", - "bind shift+v buildunit_armoutpost", - "bind v buildunit_coroutpost", - "bind shift+v buildunit_coroutpost", - - -- Tech Centers - "bind v buildunit_armtech", - "bind shift+v buildunit_armtech", - "bind v buildunit_cortech", - "bind shift+v buildunit_cortech", - "bind v buildunit_armtech2", - "bind shift+v buildunit_armtech2", - "bind v buildunit_cortech2", - "bind shift+v buildunit_cortech2", - - -- Factories - "bind v buildunit_armlab", - "bind shift+v buildunit_armlab", - "bind v buildunit_armvp", - "bind shift+v buildunit_armvp", - "bind v buildunit_corlab", - "bind shift+v buildunit_corlab", - "bind v buildunit_corvp", - "bind shift+v buildunit_corvp", - "bind v buildunit_armsy", - "bind shift+v buildunit_armsy", - "bind v buildunit_corsy", - "bind shift+v buildunit_corsy", - - -- Advanced bot, vehicle and sea labs - "bind alt+v buildunit_armalab", - "bind alt+shift+v buildunit_armalab", - "bind alt+v buildunit_coralab", - "bind alt+shift+v buildunit_coralab", - "bind alt+v buildunit_armavp", - "bind alt+shift+v buildunit_armavp", - "bind alt+v buildunit_coravp", - "bind alt+shift+v buildunit_coravp", - "bind alt+v buildunit_armasy", - "bind alt+shift+v buildunit_armasy", - "bind alt+v buildunit_corasy", - "bind alt+shift+v buildunit_corasy", - - -- Air, Advanced Air and Experimental Gantries - "bind ctrl+alt+v buildunit_corgant", - "bind ctrl+alt+shift+v buildunit_corgant", - "bind ctrl+alt+v buildunit_corgantuw", - "bind ctrl+alt+shift+v buildunit_corgantuw", - "bind ctrl+alt+v buildunit_armshltx", - "bind ctrl+alt+shift+v buildunit_armshltx", - "bind ctrl+alt+v buildunit_armshltxuw", - "bind ctrl+alt+shift+v buildunit_armshltxuw", -- underwater - "bind ctrl+alt+v buildunit_armap", - "bind ctrl+alt+shift+v buildunit_armap", - "bind ctrl+alt+v buildunit_corap", - "bind ctrl+alt+shift+v buildunit_corap", - "bind ctrl+alt+v buildunit_armaap", - "bind ctrl+alt+shift+v buildunit_armaap", - "bind ctrl+alt+v buildunit_coraap", - "bind ctrl+alt+shift+v buildunit_coraap", - - --"bind alt+x buildunit_corbhmth", - --"bind alt+shift+x buildunit_corbhmth", - - -- Metal Converters, Energy and Metal Storages - "bind f buildunit_armmakr", - "bind shift+f buildunit_armmakr", - "bind f buildunit_cormakr", - "bind shift+f buildunit_cormakr", - "bind f buildunit_armestor", - "bind shift+f buildunit_armestor", - "bind f buildunit_corestor", - "bind shift+f buildunit_corestor", - "bind f buildunit_armmstor", - "bind shift+f buildunit_armmstor", - "bind f buildunit_cormstor", - "bind shift+f buildunit_cormstor", - - -- Advanced Metal Converters and Storages - "bind f buildunit_armmmkr", - "bind shift+f buildunit_armmmkr", - "bind f buildunit_cormmkr", - "bind shift+f buildunit_cormmkr", - "bind f buildunit_armuwadves", - "bind shift+f buildunit_armuwadves", - "bind f buildunit_coruwadves", - "bind shift+f buildunit_coruwadves", - "bind f buildunit_armuwadvms", - "bind shift+f buildunit_armuwadvms", - "bind f buildunit_coruwadvms", - "bind shift+f buildunit_coruwadvms", - - -- Energy defense, laser defense, heavy laser - --"bind b buildunit_tawf001", - --"bind shift+b buildunit_tawf001", - --"bind b buildunit_hllt", - --"bind shift+b buildunit_hllt", - --"bind b buildunit_armclaw", - --"bind shift+b buildunit_armclaw", - --"bind b buildunit_cormaw", - --"bind shift+b buildunit_cormaw", - --"bind b buildunit_armhlt", - --"bind shift+b buildunit_armhlt", - --"bind b buildunit_corhlt", - --"bind shift+b buildunit_corhlt", - - -- Ambusher, annihilator, bigbertha (Arm) - --"bind b buildunit_armguard", - --"bind shift+b buildunit_armguard", - --"bind b buildunit_armamb", - --"bind shift+b buildunit_armamb", - "bind alt+b buildunit_armanni", - "bind alt+shift+b buildunit_armanni", - "bind alt+b buildunit_armbrtha", - "bind alt+shift+b buildunit_armbrtha", - -- Toaster, Doomsday Machine, Intimidator (Core) - --"bind b buildunit_corpun", - --"bind shift+b buildunit_corpun", - --"bind b buildunit_cortoast", - --"bind shift+b buildunit_cortoast", - "bind alt+b buildunit_cordoom", - "bind alt+shift+b buildunit_cordoom", - "bind alt+b buildunit_corint", - "bind alt+shift+b buildunit_corint", - - -- Nukes, Anti-nukes and LOLcannons :) - "bind i buildunit_armsilo", - "bind shift+i buildunit_armsilo", - "bind i buildunit_corsilo", - "bind shift+i buildunit_corsilo", - -- Not included: buildunit_cortron (Tactical Nuke Launcher) - "bind i buildunit_armamd", - "bind shift+i buildunit_armamd", - "bind i buildunit_corfmd", - "bind shift+i buildunit_corfmd", - "bind i buildunit_armvulc", - "bind shift+i buildunit_armvulc", - "bind i buildunit_corbuzz", - "bind shift+i buildunit_corbuzz", - - -- Plasma Deflector - "bind alt+i buildunit_armgate", - "bind alt+shift+i buildunit_armgate", - "bind alt+i buildunit_armfgate", -- floating - "bind alt+shift+i buildunit_armfgate", - "bind alt+i buildunit_corgate", - "bind alt+shift+i buildunit_corgate", - "bind alt+i buildunit_corfgate", -- floating - "bind alt+shift+i buildunit_corfgate", - - -- Air Pads - "bind p buildunit_armpad", - "bind shift+p buildunit_armpad", - "bind p buildunit_corpad", - "bind shift+p buildunit_corpad", - "bind p buildunit_armasp", - "bind shift+p buildunit_armasp", - "bind p buildunit_corasp", - "bind shift+p buildunit_corasp", - - -- Build Spacing - "bind any+t buildspacing inc", - "bind shift+t buildspacing inc", - "bind alt+t buildspacing dec", - "bind alt+shift+t buildspacing dec", - --"bind alt+"..Z.." buildspacing inc", - --"bind shift+alt+"..Z.." buildspacing inc", - --"bind any+alt+x buildspacing dec", - --"bind shift+alt+x buildspacing dec", - - -- area mex - "bind ctrl+alt+z areamex", - - -- numpad movement - "bind numpad2 moveback", - "bind numpad6 moveright", - "bind numpad4 moveleft", - "bind numpad8 moveforward", - "bind numpad9 moveup", - "bind numpad3 movedown", - "bind numpad1 movefast", - - -- set target - "bind Y settarget", - "bind alt+Y canceltarget", - "bind shift+q morphqueue", - "bind shift+alt+q morphpause", - "bind shift+alt+ctrl+q morphstop", - "bind m morph", - - "bind j buildunit_armdrag", - "bind shift+j buildunit_armdrag", - "bind j buildunit_cordrag", - "bind shift+j buildunit_cordrag", - "bind j buildunit_armfort", - "bind shift+j buildunit_armfort", - "bind j buildunit_corfort", - "bind shift+j buildunit_corfort", - - "bind q drawinmap", --some keyboards don't have ` or \ - "bind , buildfacing inc", --because some keyboards don't have [ and ] ke"..Y.."s - "bind . buildfacing dec", - "bind o buildfacing inc", --apparently some keyboards don't have , and . either... - - "bind ctrl+f fight", - - -- New in v.0.998 - "bind Ctrl+Alt+d selfd", - "bind Ctrl+Alt+a select AllMap++_ClearSelection_SelectAll+", - - "bind Ctrl+Alt+s SpecFullView", - "bind Ctrl+Alt+m minimap simplecolors 1", - - -- Modified to select all builders in MaDDPack. You can filter the type - -- the bottom row selector, and get only idle ones with the left row selector. - "bind Ctrl+b select AllMap+_Not_Building_Not_NameContain_Nano_Builder_Not_NameContain_Commander+_ClearSelection_SelectAll+", - "bind Ctrl+Alt+w select AllMap+_Aircraft_Weapons+_ClearSelection_SelectAll+", - - "bind space deselect", - "bind Ctrl+p pause", - "bind Ctrl+Alt+z areamex", - "bind any+k wantcloak", --cloak was deprecated in the engine - "bind Alt+z select Visible+_InPrevSel+_ClearSelection_SelectAll+", - "bind Any+f9 showhealthbars", - } - - binds = _binds -end - ------------ - -function LoadBindings() - for k,v in ipairs(unbinds) do - Spring.SendCommands("un"..v) - end - - MakeBindsTable(WG.swapYZbinds) -- in case Y/Z swap has changed since last load - - for k,v in ipairs(binds) do - Spring.SendCommands(v) - end -end - -function UnloadBindings() - for k,v in ipairs(binds) do - Spring.SendCommands("un"..v) - end - - for k,v in ipairs(unbinds) do - Spring.SendCommands(v) - end -end - -function ReloadBindings() - UnloadBindings() - LoadBindings() -end - function widget:Initialize() - MakeBindsTable(WG.swapYZbinds) - LoadBindings() - - WG.Reload_TAP_Hotkeys = ReloadBindings + -- keyreload: load with unbindall before + Spring.SendCommands("keyreload luaui/configs/uikeys.txt") + + -- Load user keybindings with tap defaults on top + -- Keep in mind users can do 'keyreload luaui/configs/uikeys.txt' + -- on top of their uikeys instead + -- + -- keyload: load without unbindall before + -- Spring.SendCommands("keyload uikeys.txt") end function widget:Shutdown() - UnloadBindings() - WG.Reload_TAP_Hotkeys = nil - - if widgetHandler.orderList and (widgetHandler.orderList["TAPrime Hotkeys -- swap YZ"] or 0) > 0 then - widgetHandler:DisableWidget("TAPrime Hotkeys -- swap YZ") - end + Spring.SendCommands("keyreload") end diff --git a/luaui/Widgets/cmd_tap_hotkeys_swap_yz.lua b/luaui/Widgets/cmd_tap_hotkeys_swap_yz.lua deleted file mode 100644 index 7b3b3822..00000000 --- a/luaui/Widgets/cmd_tap_hotkeys_swap_yz.lua +++ /dev/null @@ -1,30 +0,0 @@ -function widget:GetInfo() - return { - name = "TAPrime Hotkeys -- swap YZ", - desc = "Swaps Y and Z in TAP Hotkeys widget" , - author = "Beherith, modified by MaDDoX", - date = "23 march 2012", - license = "GNU LGPL, v2.1 or later", - layer = 100, --should load AFTER TAP hotkeys - enabled = false, - } -end - -function widget:Initialize() - if WG.Reload_TAP_Hotkeys then - WG.swapYZbinds = true - WG.Reload_TAP_Hotkeys() - else - Spring.Echo("TAPrime Hotkeys widget not found, cannot swap YZ") - widgetHandler:RemoveWidget(self) - end -end - -function widget:Shutdown() - WG.swapYZbinds = nil - if WG.Reload_TAP_Hotkeys then - WG.Reload_TAP_Hotkeys() - else - Spring.Echo("TAPrime Hotkeys widget not found, cannot swap YZ") - end -end diff --git a/luaui/actions.lua b/luaui/actions.lua index 82c28482..eb141805 100644 --- a/luaui/actions.lua +++ b/luaui/actions.lua @@ -194,21 +194,7 @@ local function MakeWords(line) end -local function MakeKeySetString(key, mods, getSymbol) - if key == nil then return "" end - - getSymbol = getSymbol or Spring.GetKeySymbol - local keyset = "" - if (mods.alt) then keyset = keyset .. "A+" end - if (mods.ctrl) then keyset = keyset .. "C+" end - if (mods.meta) then keyset = keyset .. "M+" end - if (mods.shift) then keyset = keyset .. "S+" end - local _, defSym = getSymbol(key) - return (keyset .. defSym) -end - - -local function TryAction(actionMap, cmd, optLine, optWords, isRepeat, release) +local function TryAction(actionMap, cmd, optLine, optWords, isRepeat, release, actions) local callInfoList = actionMap[cmd] if (callInfoList == nil) then return false @@ -217,7 +203,7 @@ local function TryAction(actionMap, cmd, optLine, optWords, isRepeat, release) --local widget = callInfo[1] local func = callInfo[2] local data = callInfo[3] - if (func(cmd, optLine, optWords, data, isRepeat, release)) then + if (func(cmd, optLine, optWords, data, isRepeat, release, actions)) then return true end end @@ -225,32 +211,24 @@ local function TryAction(actionMap, cmd, optLine, optWords, isRepeat, release) end -function actionHandler:KeyAction(press, key, mods, isRepeat, scanCode) - local defBinds - local keyset = MakeKeySetString(key, mods, Spring.GetKeySymbol) +function actionHandler:KeyAction(press, _, _, isRepeat, _, actions) + if not (actions and next(actions)) then return false end - if scanCode then -- engine supports scancodes - local scanset = MakeKeySetString(scanCode, mods, Spring.GetScanSymbol) - defBinds = Spring.GetKeyBindings(keyset, scanset) + local actionSet + if (press) then + actionSet = isRepeat and self.keyRepeatActions or self.keyPressActions else - defBinds = Spring.GetKeyBindings(keyset) + actionSet = self.keyReleaseActions end - if (defBinds) then - local actionSet - if (press) then - actionSet = isRepeat and self.keyRepeatActions or self.keyPressActions - else - actionSet = self.keyReleaseActions - end - for _,bAction in ipairs(defBinds) do - local bCmd, bOpts = next(bAction, nil) - local words = MakeWords(bOpts) - if (TryAction(actionSet, bCmd, bOpts, words, isRepeat, not press)) then - return true - end + for _,bAction in ipairs(actions) do + local bCmd, bOpts = next(bAction, nil) + local words = MakeWords(bOpts) + if (TryAction(actionSet, bCmd, bOpts, words, isRepeat, not press, actions)) then + return true end end + return false end @@ -267,7 +245,7 @@ function actionHandler:TextAction(line) if (line == nil) then line = "" -- no args end - return TryAction(self.textActions, cmd, line, words, false, nil) + return TryAction(self.textActions, cmd, line, words, false, nil, {}) end diff --git a/luaui/configs/uikeys.txt b/luaui/configs/uikeys.txt new file mode 100644 index 00000000..c1d5a1f1 --- /dev/null +++ b/luaui/configs/uikeys.txt @@ -0,0 +1,401 @@ +keydefaults // load engine defaults + +// DEFAULT UNBINDS + +unbindaction sharedialog +unbindaction cloak + +// q default binds +unbindaction groupselect +unbindaction groupadd +unbindaction aiselect +unbindaction groupclear + +unbindaction prevmenu +unbindaction nextmenu + +unbindaction buildspacing +unbindaction controlunit +unbindaction onoff +unbindaction move +unbindaction fight +unbindaction select +unbindaction selfd +unbindaction debugcolvol +unbindaction gameinfo +unbindaction drawinmap +unbindaction drawlabel + +// BINDS + +bind sc_`,sc_` drawlabel // double hit ` for drawlabel +bind sc_` drawinmap + +bind sc_[ buildfacing inc +bind shift+sc_[ buildfacing inc +bind sc_] buildfacing dec +bind shift+sc_] buildfacing dec + +bind Ctrl+a select AllMap++_ClearSelection_SelectAll+ +bind Ctrl+b select AllMap+_Builder_Idle+_ClearSelection_SelectOne+ +bind Ctrl+shift+c select AllMap+_ManualFireUnit+_ClearSelection_SelectOne+ +bind Ctrl+c select AllMap+_NameContain_Commander+_ClearSelection_SelectOne+ +bind Ctrl+alt+v select AllMap+_NameContain_Outpost+_ClearSelection_SelectOne+ //for Outposts +bind Ctrl+r select AllMap+_Radar+_ClearSelection_SelectAll+ +bind Ctrl+v select AllMap+_Not_Builder_Not_Commander_InPrevSel_Not_InHotkeyGroup+_SelectAll+ +bind Ctrl+w select AllMap+_Not_Aircraft_Weapons+_ClearSelection_SelectAll+ +bind Ctrl+z select AllMap+_InPrevSel+_ClearSelection_SelectAll+ +//bind Ctrl+x select AllMap+_InPrevSel_Not_InHotkeyGroup+_SelectAll+ +bind ctrl+x onoff +bind l loadunits +bind Shift+l loadunits +bind u unloadunits +bind Shift+u unloadunits + +bind sc_z buildunit_armmex +bind shift+sc_z buildunit_armmex +bind sc_z buildunit_cormex +bind shift+sc_z buildunit_cormex +bind sc_z buildunit_armmoho +bind shift+sc_z buildunit_armmoho +bind sc_z buildunit_cormoho +bind shift+sc_z buildunit_cormoho +//- FARK-class units +bind sc_z buildunit_armfark +bind shift+sc_z buildunit_armfark +bind sc_z buildunit_cormuskrat +bind shift+sc_z buildunit_cormuskrat +//bind sc_z buildunit_corfast +//bind shift+sc_z buildunit_corfast +//bind sc_z buildunit_armconsul +//bind shift+sc_z buildunit_armconsul +//- Underwater Metal extractors +bind sc_z buildunit_coruwmex +bind shift+sc_z buildunit_coruwmex +bind sc_z buildunit_armuwmex +bind shift+sc_z buildunit_armuwmex +bind sc_z buildunit_coruwmme +bind shift+sc_z buildunit_coruwmme +bind sc_z buildunit_armuwmme +bind shift+sc_z buildunit_armuwmme +//- Arm Poker / Commando Mines +bind sc_z buildunit_armmine1 +bind shift+sc_z buildunit_armmine1 +bind sc_z buildunit_cormine4 +bind shift+sc_z buildunit_cormine4 + +bind x buildunit_armsolar // Solars, Wind Gens & Fusions +bind shift+x buildunit_armsolar +bind x buildunit_armwin +bind shift+x buildunit_armwin +bind x buildunit_corsolar +bind shift+x buildunit_corsolar +bind x buildunit_corwin +bind shift+x buildunit_corwin +//bind x buildunit_armgeo +//bind shift+x buildunit_armgeo +//bind x buildunit_corgeo +//bind shift+x buildunit_corgeo +bind x buildunit_armfus +bind shift+x buildunit_armfus +bind x buildunit_corfus +bind shift+x buildunit_corfus +bind x buildunit_armawin +bind shift+x buildunit_armawin +bind x buildunit_corawin +bind shift+x buildunit_corawin + +//- Arm Poker Vehicle Mine +bind x buildunit_armmine3 +bind shift+x buildunit_armmine3 + + +bind x buildunit_armtide +bind shift+x buildunit_armtide +bind x buildunit_cortide +bind shift+x buildunit_cortide +bind x buildunit_armuwfus +bind shift+x buildunit_armuwfus +bind x buildunit_coruwfus +bind shift+x buildunit_coruwfus +bind x buildunit_armuwmmm +bind shift+x buildunit_armuwmmm +bind x buildunit_coruwmmm +bind shift+x buildunit_coruwmmm + +bind c buildunit_armllt // Basic Defenses (LLT, RL) & Radar +bind shift+c buildunit_armllt +bind c buildunit_armrl +bind shift+c buildunit_armrl +bind c buildunit_armrad +bind shift+c buildunit_armrad +bind c buildunit_corllt +bind shift+c buildunit_corllt +bind c buildunit_corrl +bind shift+c buildunit_corrl +bind c buildunit_corrad +bind shift+c buildunit_corrad + +bind alt+c capture +bind alt+shift+c capture + +bind c buildunit_armdeva // adv infantry defense +bind shift+c buildunit_armdeva +bind c buildunit_corshred +bind shift+c buildunit_corshred +bind c buildunit_armcir // adv rocket defense +bind shift+c buildunit_armcir +bind c buildunit_corerad +bind shift+c buildunit_corerad +bind c buildunit_armarad // adv radar towers +bind shift+c buildunit_armarad +bind c buildunit_corarad +bind shift+c buildunit_corarad + +bind c buildunit_armtl +bind shift+c buildunit_armtl +bind c buildunit_cortl +bind shift+c buildunit_cortl // torpedo launcher +bind c buildunit_armsonar +bind shift+c buildunit_armsonar +bind c buildunit_corsonar +bind shift+c buildunit_corsonar +bind c buildunit_armfrad +bind shift+c buildunit_armfrad // floating radar +bind c buildunit_corfrad +bind shift+c buildunit_corfrad +bind c buildunit_armfrt // floating AA +bind shift+c buildunit_armfrt +bind c buildunit_corfrt +bind shift+c buildunit_corfrt + +// Dragon Eyes +bind v buildunit_armeyes +bind shift+v buildunit_armeyes +bind v buildunit_coreyes +bind shift+v buildunit_coreyes + +// Outposts +bind v buildunit_armoutpost2 +bind shift+v buildunit_armoutpost2 +bind v buildunit_coroutpost2 +bind shift+v buildunit_coroutpost2 +bind v buildunit_armoutpost +bind shift+v buildunit_armoutpost +bind v buildunit_coroutpost +bind shift+v buildunit_coroutpost + +// Tech Centers +bind v buildunit_armtech +bind shift+v buildunit_armtech +bind v buildunit_cortech +bind shift+v buildunit_cortech +bind v buildunit_armtech2 +bind shift+v buildunit_armtech2 +bind v buildunit_cortech2 +bind shift+v buildunit_cortech2 + +// Factories +bind v buildunit_armlab +bind shift+v buildunit_armlab +bind v buildunit_armvp +bind shift+v buildunit_armvp +bind v buildunit_corlab +bind shift+v buildunit_corlab +bind v buildunit_corvp +bind shift+v buildunit_corvp +bind v buildunit_armsy +bind shift+v buildunit_armsy +bind v buildunit_corsy +bind shift+v buildunit_corsy + +// Advanced bot, vehicle and sea labs +bind alt+v buildunit_armalab +bind alt+shift+v buildunit_armalab +bind alt+v buildunit_coralab +bind alt+shift+v buildunit_coralab +bind alt+v buildunit_armavp +bind alt+shift+v buildunit_armavp +bind alt+v buildunit_coravp +bind alt+shift+v buildunit_coravp +bind alt+v buildunit_armasy +bind alt+shift+v buildunit_armasy +bind alt+v buildunit_corasy +bind alt+shift+v buildunit_corasy + +// Air, Advanced Air and Experimental Gantries +bind ctrl+alt+v buildunit_corgant +bind ctrl+alt+shift+v buildunit_corgant +bind ctrl+alt+v buildunit_corgantuw +bind ctrl+alt+shift+v buildunit_corgantuw +bind ctrl+alt+v buildunit_armshltx +bind ctrl+alt+shift+v buildunit_armshltx +bind ctrl+alt+v buildunit_armshltxuw +bind ctrl+alt+shift+v buildunit_armshltxuw // underwater +bind ctrl+alt+v buildunit_armap +bind ctrl+alt+shift+v buildunit_armap +bind ctrl+alt+v buildunit_corap +bind ctrl+alt+shift+v buildunit_corap +bind ctrl+alt+v buildunit_armaap +bind ctrl+alt+shift+v buildunit_armaap +bind ctrl+alt+v buildunit_coraap +bind ctrl+alt+shift+v buildunit_coraap + +//bind alt+x buildunit_corbhmth +//bind alt+shift+x buildunit_corbhmth + +// Metal Converters, Energy and Metal Storages +bind f buildunit_armmakr +bind shift+f buildunit_armmakr +bind f buildunit_cormakr +bind shift+f buildunit_cormakr +bind f buildunit_armestor +bind shift+f buildunit_armestor +bind f buildunit_corestor +bind shift+f buildunit_corestor +bind f buildunit_armmstor +bind shift+f buildunit_armmstor +bind f buildunit_cormstor +bind shift+f buildunit_cormstor + +// Advanced Metal Converters and Storages +bind f buildunit_armmmkr +bind shift+f buildunit_armmmkr +bind f buildunit_cormmkr +bind shift+f buildunit_cormmkr +bind f buildunit_armuwadves +bind shift+f buildunit_armuwadves +bind f buildunit_coruwadves +bind shift+f buildunit_coruwadves +bind f buildunit_armuwadvms +bind shift+f buildunit_armuwadvms +bind f buildunit_coruwadvms +bind shift+f buildunit_coruwadvms + +// Energy defense, laser defense, heavy laser +//bind b buildunit_tawf001 +//bind shift+b buildunit_tawf001 +//bind b buildunit_hllt +//bind shift+b buildunit_hllt +//bind b buildunit_armclaw +//bind shift+b buildunit_armclaw +//bind b buildunit_cormaw +//bind shift+b buildunit_cormaw +//bind b buildunit_armhlt +//bind shift+b buildunit_armhlt +//bind b buildunit_corhlt +//bind shift+b buildunit_corhlt + +// Ambusher, annihilator, bigbertha (Arm) +//bind b buildunit_armguard +//bind shift+b buildunit_armguard +//bind b buildunit_armamb +//bind shift+b buildunit_armamb +bind alt+b buildunit_armanni +bind alt+shift+b buildunit_armanni +bind alt+b buildunit_armbrtha +bind alt+shift+b buildunit_armbrtha +// Toaster, Doomsday Machine, Intimidator (Core) +//bind b buildunit_corpun +//bind shift+b buildunit_corpun +//bind b buildunit_cortoast +//bind shift+b buildunit_cortoast +bind alt+b buildunit_cordoom +bind alt+shift+b buildunit_cordoom +bind alt+b buildunit_corint +bind alt+shift+b buildunit_corint + +// Nukes, Anti-nukes and LOLcannons :) +bind i buildunit_armsilo +bind shift+i buildunit_armsilo +bind i buildunit_corsilo +bind shift+i buildunit_corsilo +// Not included: buildunit_cortron (Tactical Nuke Launcher) +bind i buildunit_armamd +bind shift+i buildunit_armamd +bind i buildunit_corfmd +bind shift+i buildunit_corfmd +bind i buildunit_armvulc +bind shift+i buildunit_armvulc +bind i buildunit_corbuzz +bind shift+i buildunit_corbuzz + +// Plasma Deflector +bind alt+i buildunit_armgate +bind alt+shift+i buildunit_armgate +bind alt+i buildunit_armfgate // floating +bind alt+shift+i buildunit_armfgate +bind alt+i buildunit_corgate +bind alt+shift+i buildunit_corgate +bind alt+i buildunit_corfgate // floating +bind alt+shift+i buildunit_corfgate + +// Air Pads +bind p buildunit_armpad +bind shift+p buildunit_armpad +bind p buildunit_corpad +bind shift+p buildunit_corpad +bind p buildunit_armasp +bind shift+p buildunit_armasp +bind p buildunit_corasp +bind shift+p buildunit_corasp + +// Build Spacing +bind any+t buildspacing inc +bind shift+t buildspacing inc +bind alt+t buildspacing dec +bind alt+shift+t buildspacing dec +//bind alt+z buildspacing inc +//bind shift+alt+z buildspacing inc +//bind any+alt+x buildspacing dec +//bind shift+alt+x buildspacing dec + +// area mex +bind ctrl+alt+z areamex + +// numpad movement +bind numpad2 moveback +bind numpad6 moveright +bind numpad4 moveleft +bind numpad8 moveforward +bind numpad9 moveup +bind numpad3 movedown +bind numpad1 movefast + +// set target +bind Y settarget +bind alt+Y canceltarget +bind shift+q morphqueue +bind shift+alt+q morphpause +bind shift+alt+ctrl+q morphstop +bind m morph + +bind j buildunit_armdrag +bind shift+j buildunit_armdrag +bind j buildunit_cordrag +bind shift+j buildunit_cordrag +bind j buildunit_armfort +bind shift+j buildunit_armfort +bind j buildunit_corfort +bind shift+j buildunit_corfort + +bind ctrl+f fight + +// New in v.0.998 +bind Ctrl+Alt+d selfd +bind Ctrl+Alt+a select AllMap++_ClearSelection_SelectAll+ + +bind Ctrl+Alt+s SpecFullView +bind Ctrl+Alt+m minimap simplecolors 1 + +// Modified to select all builders in MaDDPack. You can filter the type +// the bottom row selector, and get only idle ones with the left row selector. +bind Ctrl+b select AllMap+_Not_Building_Not_NameContain_Nano_Builder_Not_NameContain_Commander+_ClearSelection_SelectAll+ +bind Ctrl+Alt+w select AllMap+_Aircraft_Weapons+_ClearSelection_SelectAll+ + +bind space deselect +bind Ctrl+p pause +bind Ctrl+Alt+z areamex +bind any+k wantcloak //cloak was deprecated in the engine +bind Alt+z select Visible+_InPrevSel+_ClearSelection_SelectAll+ +bind Any+f9 showhealthbars diff --git a/luaui/tapmain.lua b/luaui/tapmain.lua index b6de0e76..e91c74d9 100644 --- a/luaui/tapmain.lua +++ b/luaui/tapmain.lua @@ -109,12 +109,12 @@ function DrawScreen(vsx, vsy) return widgetHandler:DrawScreen() end -function KeyPress(key, mods, isRepeat, label, unicode, scanCode) - return widgetHandler:KeyPress(key, mods, isRepeat, label, unicode, scanCode) +function KeyPress(key, mods, isRepeat, label, unicode, scanCode, actions) + return widgetHandler:KeyPress(key, mods, isRepeat, label, unicode, scanCode, actions) end -function KeyRelease(key, mods, label, unicode, scanCode) - return widgetHandler:KeyRelease(key, mods, label, unicode, scanCode) +function KeyRelease(key, mods, label, unicode, scanCode, actions) + return widgetHandler:KeyRelease(key, mods, label, unicode, scanCode, actions) end function MouseMove(x, y, dx, dy, button) diff --git a/luaui/tapwidgets.lua b/luaui/tapwidgets.lua index fbaa20dc..7301b62a 100644 --- a/luaui/tapwidgets.lua +++ b/luaui/tapwidgets.lua @@ -1350,7 +1350,7 @@ end -- Keyboard call-ins -- -function widgetHandler:KeyPress(key, mods, isRepeat, label, unicode, scanCode) +function widgetHandler:KeyPress(key, mods, isRepeat, label, unicode, scanCode, actions) if (self.tweakMode) then local mo = self.mouseOwner if (mo and mo.TweakKeyPress) then @@ -1359,12 +1359,12 @@ function widgetHandler:KeyPress(key, mods, isRepeat, label, unicode, scanCode) return true end - if (self.actionHandler:KeyAction(true, key, mods, isRepeat, scanCode)) then + if (self.actionHandler:KeyAction(true, key, mods, isRepeat, scanCode, actions)) then return true end for _,w in ipairs(self.KeyPressList) do - if (w:KeyPress(key, mods, isRepeat, label, unicode, scanCode)) then + if (w:KeyPress(key, mods, isRepeat, label, unicode, scanCode, actions)) then return true end end @@ -1372,7 +1372,7 @@ function widgetHandler:KeyPress(key, mods, isRepeat, label, unicode, scanCode) end -function widgetHandler:KeyRelease(key, mods, label, unicode, scanCode) +function widgetHandler:KeyRelease(key, mods, label, unicode, scanCode, actions) if (self.tweakMode) then local mo = self.mouseOwner if (mo and mo.TweakKeyRelease) then @@ -1384,12 +1384,12 @@ function widgetHandler:KeyRelease(key, mods, label, unicode, scanCode) return true end - if (self.actionHandler:KeyAction(false, key, mods, false, scanCode)) then + if (self.actionHandler:KeyAction(false, key, mods, false, scanCode, actions)) then return true end for _,w in ipairs(self.KeyReleaseList) do - if (w:KeyRelease(key, mods, label, unicode, scanCode)) then + if (w:KeyRelease(key, mods, label, unicode, scanCode, actions)) then return true end end