1. Click this link:
2. Click "Download Raw File" button in the upper right.
3. Save this .lua file into your Local Zero-K folder inside
(create the Widgets folder if it doesnt exist yet).
4. Launch Zero-K and start a skingleplayer skirmish. Pause the game once it has started.
5. Enter the pause menu with ESC. and go to Settings/Misc.
6. Click on 'Show Advanced Settings'
7. Click 'Local Widget Config' . Make sure both options for 'Enable Local Widgets' and 'Load Local Widgets first' are checked.
8. press enter to chat in the game and type '/luaUI reload'
9. The game will briefly reload and now the widget should be active. Go to Pause Menu: Hotkeys/Hot Select. Special Groups at the bottom is where all of the custom groups are.
Recommended trying these Special Groups with the grid layout I've posted above first as I'm trying to workshop it into a default that will benefit everyone but I need playtesting and feedback to know if it's all working as intended.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
function widget:GetInfo()
return {
name = "Global Selection Hotkeys and Hot Select",
desc = "Global Selection Hotkeys for all factory built units and special groupings for Hot Select.",
author = "FrequentPilgrim",
date = "2025-04-23",
license = "GNU GPL, v2 or later",
layer = 1002,
enabled = true,
}
end
----------------------------------------------------------------------------
----------------------------------------------------------------------------
--[[
Note:
The selection actions in this file must match those in luaui/configs/zk_keys.lua
Please keep them up to date.
--]]
----------------------------------------------------------------------------
options_path = 'Hotkeys/Hot Select/Cloakbot Factory'
options_order = {
'uikey1',
'uikey2',
'uikey3',
'uikey4',
'uikey5',
'uikey6',
'uikey7',
'uikey8',
'uikey9',
'uikey10',
'uikey11',
'uikey12',
'uikey13',
'uikey14',
'uikey15',
'uikey16',
'uikey17',
'uikey18',
'uikey19',
'uikey20',
'uikey20',
'uikey21',
'uikey22',
'uikey23',
'uikey24',
'uikey25',
'uikey26',
'uikey27',
'uikey28',
'uikey29',
'uikey30',
'uikey31',
'uikey32',
'uikey33',
'uikey34',
'uikey35',
'uikey36',
'uikey37',
'uikey38',
'uikey39',
'uikey40',
'uikey41',
'uikey42',
'uikey43',
'uikey44',
'uikey45',
'uikey46',
'uikey47',
'uikey48',
'uikey49',
'uikey50',
'uikey51',
'uikey52',
'uikey53',
'uikey54',
'uikey55',
'uikey56',
'uikey57',
'uikey58',
'uikey59',
'uikey60',
'uikey61',
'uikey62',
'uikey63',
'uikey64',
'uikey65',
'uikey66',
'uikey67',
'uikey68',
'uikey69',
'uikey70',
'uikey71',
'uikey72',
'uikey73',
'uikey74',
'uikey75',
'uikey76',
'uikey77',
'uikey78',
'uikey79',
'uikey80',
'uikey81',
'uikey82',
'uikey83',
'uikey84',
'uikey85',
'uikey86',
'uikey87',
'uikey88',
'uikey89',
'uikey90',
'uikey91',
'uikey92',
'uikey93',
'uikey94',
'uikey95',
'uikey96',
'uikey97',
'uikey98',
'uikey99',
'uikey100',
'uikey101',
'uikey102',
'uikey103',
'uikey104',
'uikey105',
'uikey106',
'uikey107',
'uikey108',
'uikey109',
'uikey110',
'uikey111',
'uikey112',
'uikey113',
'uikey114',
'uikey115',
'uikey116',
'uikey117',
'uikey118',
'uikey119',
'uikey120',
'uikey121',
'uikey122',
'uikey123',
'uikey124',
'uikey125',
'uikey126',
'uikey127',
'uikey128',
'uikey129',
'uikey130',
'uikey131',
'uikey132',
'uikey133',
'uikey134',
'uikey135',
'uikey136',
'uikey137',
'uikey138',
'uikey139',
'uikey140',
'uikey141',
'uikey142',
'uikey143',
}
options = {
uikey1
{ type
'button',
name = 'Conjurer',
desc = 'cloakcon',
action = 'select AllMap+_IdMatches_cloakcon+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Cloakbot Factory',
},
uikey2
{ type
'button',
name = 'Glaive',
desc = 'cloakraid',
action = 'select AllMap+_IdMatches_cloakraid+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Cloakbot Factory',
},
uikey3
{ type
'button',
name = 'Scythe',
desc = 'cloakheavyraid',
action = 'select AllMap+_IdMatches_cloakheavyraid+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Cloakbot Factory',
},
uikey4
{ type
'button',
name = 'Ronin',
desc = 'cloakskirm',
action = 'select AllMap+_IdMatches_cloakskirm+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Cloakbot Factory',
},
uikey5
{ type
'button',
name = 'Reaver',
desc = 'cloakriot',
action = 'select AllMap+_IdMatches_cloakriot+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Cloakbot Factory',
},
uikey6
{ type
'button',
name = 'Knight',
desc = 'cloakassault',
action = 'select AllMap+_IdMatches_cloakassault+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Cloakbot Factory',
},
uikey7
{ type
'button',
name = 'Sling',
desc = 'cloakarty',
action = 'select AllMap+_IdMatches_cloakarty+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Cloakbot Factory',
},
uikey8
{ type
'button',
name = 'Phantom',
desc = 'cloaksnipe',
action = 'select AllMap+_IdMatches_cloaksnipe+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Cloakbot Factory',
},
uikey9
{ type
'button',
name = 'Gremlin',
desc = 'cloakaa',
action = 'select AllMap+_IdMatches_cloakaa+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Cloakbot Factory',
},
uikey10
{ type
'button',
name = 'Imp',
desc = 'cloakbomb',
action = 'select AllMap+_IdMatches_cloakbomb+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Cloakbot Factory',
},
uikey11
{ type
'button',
name = 'Iris',
desc = 'cloakjammer',
action = 'select AllMap+_IdMatches_cloakjammer+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Cloakbot Factory',
},
uikey12
{ type
'button',
name = 'Convict',
desc = 'shieldcon',
action = 'select AllMap+_IdMatches_shieldcon+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Shieldbot Factory',
},
uikey13
{ type
'button',
name = 'Bandit',
desc = 'shieldraid',
action = 'select AllMap+_IdMatches_shieldraid+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Shieldbot Factory',
},
uikey14
{ type
'button',
name = 'Rogue',
desc = 'shieldskirm',
action = 'select AllMap+_IdMatches_shieldskirm+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Shieldbot Factory',
},
uikey15
{ type
'button',
name = 'Outlaw',
desc = 'shieldriot',
action = 'select AllMap+_IdMatches_shieldriot+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Shieldbot Factory',
},
uikey16
{ type
'button',
name = 'Thug',
desc = 'shieldassault',
action = 'select AllMap+_IdMatches_shieldassault+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Shieldbot Factory',
},
uikey17
{ type
'button',
name = 'Racketeer',
desc = 'shieldarty',
action = 'select AllMap+_IdMatches_shieldarty+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Shieldbot Factory',
},
uikey18
{ type
'button',
name = 'Dirtbag',
desc = 'shieldscout',
action = 'select AllMap+_IdMatches_shieldscout+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Shieldbot Factory',
},
uikey19
{ type
'button',
name = 'Vandal',
desc = 'shieldaa',
action = 'select AllMap+_IdMatches_shieldaa+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Shieldbot Factory',
},
uikey20
{ type
'button',
name = 'Felon',
desc = 'shieldfelon',
action = 'select AllMap+_IdMatches_shieldfelon+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Shieldbot Factory',
},
uikey21
{ type
'button',
name = 'Snitch',
desc = 'shieldbomb',
action = 'select AllMap+_IdMatches_shieldbomb+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Shieldbot Factory',
},
uikey22
{ type
'button',
name = 'Aspis',
desc = 'shieldshield',
action = 'select AllMap+_IdMatches_shieldshield+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Shieldbot Factory',
},
uikey23
{ type
'button',
name = 'Mason',
desc = 'vehcon',
action = 'select AllMap+_IdMatches_vehcon+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Rover Assembly',
},
uikey24
{ type
'button',
name = 'Scorcher',
desc = 'vehraid',
action = 'select AllMap+_IdMatches_vehraid+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Rover Assembly',
},
uikey25
{ type
'button',
name = 'Fencer',
desc = 'vehsupport',
action = 'select AllMap+_IdMatches_vehsupport+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Rover Assembly',
},
uikey26
{ type
'button',
name = 'Ripper',
desc = 'vehriot',
action = 'select AllMap+_IdMatches_vehriot+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Rover Assembly',
},
uikey27
{ type
'button',
name = 'Ravager',
desc = 'vehassault',
action = 'select AllMap+_IdMatches_vehassault+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Rover Assembly',
},
uikey28
{ type
'button',
name = 'Badger',
desc = 'veharty',
action = 'select AllMap+_IdMatches_veharty+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Rover Assembly',
},
uikey29
{ type
'button',
name = 'Dart',
desc = 'vehscout',
action = 'select AllMap+_IdMatches_vehscout+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Rover Assembly',
},
uikey30
{ type
'button',
name = 'Crasher',
desc = 'vehaa',
action = 'select AllMap+_IdMatches_vehaa+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Rover Assembly',
},
uikey31
{ type
'button',
name = 'Impaler',
desc = 'vehheavyarty',
action = 'select AllMap+_IdMatches_vehheavyarty+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Rover Assembly',
},
uikey32
{ type
'button',
name = 'Dominatrix',
desc = 'vehcapture',
action = 'select AllMap+_IdMatches_vehcapture+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Rover Assembly',
},
uikey33
{ type
'button',
name = 'Quill',
desc = 'hovercon',
action = 'select AllMap+_IdMatches_hovercon+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Hovercraft Platform',
},
uikey34
{ type
'button',
name = 'Dagger',
desc = 'hoverraid',
action = 'select AllMap+_IdMatches_hoverraid+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Hovercraft Platform',
},
uikey35
{ type
'button',
name = 'Scalpel',
desc = 'hoverskirm',
action = 'select AllMap+_IdMatches_hoverskirm+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Hovercraft Platform',
},
uikey36
{ type
'button',
name = 'Mace',
desc = 'hoverriot',
action = 'select AllMap+_IdMatches_hoverriot+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Hovercraft Platform',
},
uikey37
{ type
'button',
name = 'Halberd',
desc = 'hoverassault',
action = 'select AllMap+_IdMatches_hoverassault+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Hovercraft Platform',
},
uikey38
{ type
'button',
name = 'Lance',
desc = 'hoverarty',
action = 'select AllMap+_IdMatches_hoverarty+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Hovercraft Platform',
},
uikey39
{ type
'button',
name = 'Bolas',
desc = 'hoverheavyraid',
action = 'select AllMap+_IdMatches_hoverheavyraid+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Hovercraft Platform',
},
uikey40
{ type
'button',
name = 'Flail',
desc = 'hoveraa',
action = 'select AllMap+_IdMatches_hoveraa+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Hovercraft Platform',
},
uikey41
{ type
'button',
name = 'Claymore',
desc = 'hoverdepthcharge',
action = 'select AllMap+_IdMatches_hoverdepthcharge+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Hovercraft Platform',
},
uikey42
{ type
'button',
name = 'Wasp',
desc = 'gunshipcon',
action = 'select AllMap+_IdMatches_gunshipcon+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Gunship Plant',
},
uikey43
{ type
'button',
name = 'Locust',
desc = 'gunshipraid',
action = 'select AllMap+_IdMatches_gunshipraid+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Gunship Plant',
},
uikey44
{ type
'button',
name = 'Harpy',
desc = 'gunshipskirm',
action = 'select AllMap+_IdMatches_gunshipskirm+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Gunship Plant',
},
uikey45
{ type
'button',
name = 'Blastwing',
desc = 'gunshipbomb',
action = 'select AllMap+_IdMatches_gunshipbomb+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Gunship Plant',
},
uikey46
{ type
'button',
name = 'Revenant',
desc = 'gunshipassault',
action = 'select AllMap+_IdMatches_gunshipassault+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Gunship Plant',
},
uikey47
{ type
'button',
name = 'Nimbus',
desc = 'gunshipheavyskirm',
action = 'select AllMap+_IdMatches_gunshipheavyskirm+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Gunship Plant',
},
uikey48
{ type
'button',
name = 'Gnat',
desc = 'gunshipemp',
action = 'select AllMap+_IdMatches_gunshipemp+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Gunship Plant',
},
uikey49
{ type
'button',
name = 'Trident',
desc = 'gunshipaa',
action = 'select AllMap+_IdMatches_gunshipaa+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Gunship Plant',
},
uikey50
{ type
'button',
name = 'Krow',
desc = 'gunshipkrow',
action = 'select AllMap+_IdMatches_gunshipkrow+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Gunship Plant',
},
uikey51
{ type
'button',
name = 'Charon',
desc = 'gunshiptrans',
action = 'select AllMap+_IdMatches_gunshiptrans+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Gunship Plant',
},
uikey52
{ type
'button',
name = 'Hercules',
desc = 'gunshipheavytrans',
action = 'select AllMap+_IdMatches_gunshipheavytrans+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Gunship Plant',
},
uikey53
{ type
'button',
name = 'Crane',
desc = 'planecon',
action = 'select AllMap+_IdMatches_planecon+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Airplane Plant',
},
uikey54
{ type
'button',
name = 'Swift',
desc = 'planefighter',
action = 'select AllMap+_IdMatches_planefighter+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Airplane Plant',
},
uikey55
{ type
'button',
name = 'Magpie',
desc = 'bomberstrike',
action = 'select AllMap+_IdMatches_bomberstrike+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Airplane Plant',
},
uikey56
{ type
'button',
name = 'Phoenix',
desc = 'bomberriot',
action = 'select AllMap+_IdMatches_bomberriot+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Airplane Plant',
},
uikey57
{ type
'button',
name = 'Raven',
desc = 'bomberprec',
action = 'select AllMap+_IdMatches_bomberprec+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Airplane Plant',
},
uikey58
{ type
'button',
name = 'Odin',
desc = 'bomberassault',
action = 'select AllMap+_IdMatches_bomberassault+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Airplane Plant',
},
uikey59
{ type
'button',
name = 'Sparrow',
desc = 'planelightscout',
action = 'select AllMap+_IdMatches_planelightscout+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Airplane Plant',
},
uikey60
{ type
'button',
name = 'Raptor',
desc = 'planeheavyfighter',
action = 'select AllMap+_IdMatches_planeheavyfighter+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Airplane Plant',
},
uikey61
{ type
'button',
name = 'Likho',
desc = 'bomberheavy',
action = 'select AllMap+_IdMatches_bomberheavy+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Airplane Plant',
},
uikey62
{ type
'button',
name = 'Thunderbird',
desc = 'bomberdisarm',
action = 'select AllMap+_IdMatches_bomberdisarm+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Airplane Plant',
},
uikey63
{ type
'button',
name = 'Owl',
desc = 'planescout',
action = 'select AllMap+_IdMatches_planescout+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Airplane Plant',
},
uikey64
{ type
'button',
name = 'Weaver',
desc = 'spidercon',
action = 'select AllMap+_IdMatches_spidercon+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Spider Factory',
},
uikey65
{ type
'button',
name = 'Flea',
desc = 'spiderscout',
action = 'select AllMap+_IdMatches_spiderscout+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Spider Factory',
},
uikey66
{ type
'button',
name = 'Recluse',
desc = 'spiderskirm',
action = 'select AllMap+_IdMatches_spiderskirm+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Spider Factory',
},
uikey67
{ type
'button',
name = 'Redback',
desc = 'spiderriot',
action = 'select AllMap+_IdMatches_spiderriot+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Spider Factory',
},
uikey68
{ type
'button',
name = 'Hermit',
desc = 'spiderassault',
action = 'select AllMap+_IdMatches_spiderassault+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Spider Factory',
},
uikey69
{ type
'button',
name = 'Venom',
desc = 'spideremp',
action = 'select AllMap+_IdMatches_spideremp+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Spider Factory',
},
uikey70
{ type
'button',
name = 'Tarantula',
desc = 'spideraa',
action = 'select AllMap+_IdMatches_spideraa+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Spider Factory',
},
uikey71
{ type
'button',
name = 'Crab',
desc = 'spidercrabe',
action = 'select AllMap+_IdMatches_spidercrabe+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Spider Factory',
},
uikey72
{ type
'button',
name = 'Widow',
desc = 'spiderantiheavy',
action = 'select AllMap+_IdMatches_spiderantiheavy+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Spider Factory',
},
uikey73
{ type
'button',
name = 'Constable',
desc = 'jumpcon',
action = 'select AllMap+_IdMatches_jumpcon+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Jumpbot Factory',
},
uikey74
{ type
'button',
name = 'Pyro',
desc = 'jumpraid',
action = 'select AllMap+_IdMatches_jumpraid+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Jumpbot Factory',
},
uikey75
{ type
'button',
name = 'Moderator',
desc = 'jumpskirm',
action = 'select AllMap+_IdMatches_jumpskirm+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Jumpbot Factory',
},
uikey76
{ type
'button',
name = 'Placeholder',
desc = 'jumpblackhole',
action = 'select AllMap+_IdMatches_jumpblackhole+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Jumpbot Factory',
},
uikey77
{ type
'button',
name = 'Jack',
desc = 'jumpassault',
action = 'select AllMap+_IdMatches_jumpassault+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Jumpbot Factory',
},
uikey78
{ type
'button',
name = 'Firewalker',
desc = 'jumparty',
action = 'select AllMap+_IdMatches_jumparty+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Jumpbot Factory',
},
uikey79
{ type
'button',
name = 'Puppy',
desc = 'jumpscout',
action = 'select AllMap+_IdMatches_jumpscout+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Jumpbot Factory',
},
uikey80
{ type
'button',
name = 'Toad',
desc = 'jumpaa',
action = 'select AllMap+_IdMatches_jumpaa+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Jumpbot Factory',
},
uikey81
{ type
'button',
name = 'Jugglenaut',
desc = 'jumpsumo',
action = 'select AllMap+_IdMatches_jumpsumo+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Jumpbot Factory',
},
uikey82
{ type
'button',
name = 'Skuttle',
desc = 'jumpbomb',
action = 'select AllMap+_IdMatches_jumpbomb+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Jumpbot Factory',
},
uikey83
{ type
'button',
name = 'Welder',
desc = 'tankcon',
action = 'select AllMap+_IdMatches_tankcon+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Tank Foundry',
},
uikey84
{ type
'button',
name = 'Blitz',
desc = 'tankheavyraid',
action = 'select AllMap+_IdMatches_tankheavyraid+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Tank Foundry',
},
uikey85
{ type
'button',
name = 'Ogre',
desc = 'tankriot',
action = 'select AllMap+_IdMatches_tankriot+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Tank Foundry',
},
uikey86
{ type
'button',
name = 'Minotaur',
desc = 'tankassault',
action = 'select AllMap+_IdMatches_tankassault+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Tank Foundry',
},
uikey87
{ type
'button',
name = 'Emissary',
desc = 'tankarty',
action = 'select AllMap+_IdMatches_tankarty+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Tank Foundry',
},
uikey88
{ type
'button',
name = 'Kodachi',
desc = 'tankraid',
action = 'select AllMap+_IdMatches_tankraid+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Tank Foundry',
},
uikey89
{ type
'button',
name = 'Ettin',
desc = 'tankaa',
action = 'select AllMap+_IdMatches_tankaa+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Tank Foundry',
},
uikey90
{ type
'button',
name = 'Cyclops',
desc = 'tankheavyassault',
action = 'select AllMap+_IdMatches_tankheavyassault+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Tank Foundry',
},
uikey91
{ type
'button',
name = 'Tremor',
desc = 'tankheavyarty',
action = 'select AllMap+_IdMatches_tankheavyarty+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Tank Foundry',
},
uikey92
{ type
'button',
name = 'Conch',
desc = 'amphcon',
action = 'select AllMap+_IdMatches_amphcon+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Amphbot Factory',
},
uikey93
{ type
'button',
name = 'Duck',
desc = 'amphraid',
action = 'select AllMap+_IdMatches_amphraid+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Amphbot Factory',
},
uikey94
{ type
'button',
name = 'Buoy',
desc = 'amphfloater',
action = 'select AllMap+_IdMatches_amphfloater+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Amphbot Factory',
},
uikey95
{ type
'button',
name = 'Scallop',
desc = 'amphriot',
action = 'select AllMap+_IdMatches_amphriot+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Amphbot Factory',
},
uikey96
{ type
'button',
name = 'Bulkhead',
desc = 'amphsupport',
action = 'select AllMap+_IdMatches_amphsupport+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Amphbot Factory',
},
uikey97
{ type
'button',
name = 'Lobster',
desc = 'amphlaunch',
action = 'select AllMap+_IdMatches_amphlaunch+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Amphbot Factory',
},
uikey98
{ type
'button',
name = 'Archer',
desc = 'amphimpulse',
action = 'select AllMap+_IdMatches_amphimpulse+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Amphbot Factory',
},
uikey99
{ type
'button',
name = 'Angler',
desc = 'amphaa',
action = 'select AllMap+_IdMatches_amphaa+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Amphbot Factory',
},
uikey100
{ type
'button',
name = 'Grizzly',
desc = 'amphassault',
action = 'select AllMap+_IdMatches_amphassault+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Amphbot Factory',
},
uikey101
{ type
'button',
name = 'Limpet',
desc = 'amphbomb',
action = 'select AllMap+_IdMatches_amphbomb+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Amphbot Factory',
},
uikey102
{ type
'button',
name = 'Djinn',
desc = 'amphtele',
action = 'select AllMap+_IdMatches_amphtele+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Amphbot Factory',
},
uikey103
{ type
'button',
name = 'Mariner',
desc = 'shipcon',
action = 'select AllMap+_IdMatches_shipcon+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Shipyard',
},
uikey104
{ type
'button',
name = 'Hunter',
desc = 'shiptorpraider',
action = 'select AllMap+_IdMatches_shiptorpraider+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Shipyard',
},
uikey105
{ type
'button',
name = 'Mistral',
desc = 'shipskirm',
action = 'select AllMap+_IdMatches_shipskirm+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Shipyard',
},
uikey106
{ type
'button',
name = 'Corsair',
desc = 'shipriot',
action = 'select AllMap+_IdMatches_shipriot+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Shipyard',
},
uikey107
{ type
'button',
name = 'Siren',
desc = 'shipassault',
action = 'select AllMap+_IdMatches_shipassault+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Shipyard',
},
uikey108
{ type
'button',
name = 'Envoy',
desc = 'shiparty',
action = 'select AllMap+_IdMatches_shiparty+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Shipyard',
},
uikey109
{ type
'button',
name = 'Cutter',
desc = 'shipscout',
action = 'select AllMap+_IdMatches_shipscout+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Shipyard',
},
uikey110
{ type
'button',
name = 'Zephyr',
desc = 'shipaa',
action = 'select AllMap+_IdMatches_shipaa+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Shipyard',
},
uikey111
{ type
'button',
name = 'Seawolf',
desc = 'subraider ',
action = 'select AllMap+_IdMatches_subraider+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Shipyard',
},
uikey112
{ type
'button',
name = 'Athena',
desc = 'athena',
action = 'select AllMap+_IdMatches_athena+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Strider Hub',
},
uikey113
{ type
'button',
name = 'Ultimatum',
desc = 'striderantiheavy',
action = 'select AllMap+_IdMatches_striderantiheavy+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Strider Hub',
},
uikey114
{ type
'button',
name = 'Scorpion',
desc = 'striderscorpion',
action = 'select AllMap+_IdMatches_striderscorpion+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Strider Hub',
},
uikey115
{ type
'button',
name = 'Dante',
desc = 'striderdante',
action = 'select AllMap+_IdMatches_striderdante+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Strider Hub',
},
uikey116
{ type
'button',
name = 'Merlin',
desc = 'striderarty',
action = 'select AllMap+_IdMatches_striderarty+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Strider Hub',
},
uikey117
{ type
'button',
name = 'Funnelweb',
desc = 'striderfunnelweb',
action = 'select AllMap+_IdMatches_striderfunnelweb+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Strider Hub',
},
uikey118
{ type
'button',
name = 'Paladin',
desc = 'striderbantha',
action = 'select AllMap+_IdMatches_striderbantha+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Strider Hub',
},
uikey119
{ type
'button',
name = 'Detriment',
desc = 'striderdetriment',
action = 'select AllMap+_IdMatches_striderdetriment+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Strider Hub',
},
uikey120
{ type
'button',
name = 'Shogun',
desc = 'shipheavyarty',
action = 'select AllMap+_IdMatches_shipheavyarty+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Strider Hub',
},
uikey121
{ type
'button',
name = 'Reef',
desc = 'shipcarrier',
action = 'select AllMap+_IdMatches_shipcarrier+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Strider Hub',
},
uikey122
{ type
'button',
name = 'Scylla',
desc = 'subtacmissile',
action = 'select AllMap+_IdMatches_subtacmissile+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Strider Hub',
},
uikey123
{ type
'button',
name = 'Ground Mobile Alternate/Heavy Raider (Q)',
desc = 'Venom Archer Bolas Blitz',
action = 'select AllMap+_IdMatches_spideremp_IdMatches_amphimpulse_IdMatches_hoverheavyraid_IdMatches_tankheavyraid+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Special Groups',
},
uikey124
{ type
'button',
name = 'Ground Mobile Raider (W)',
desc = 'Duck Kodachi Pyro Dagger Scorcher Bandit Glaive',
action = 'select AllMap+_IdMatches_amphraid_IdMatches_tankraid_IdMatches_jumpraid_IdMatches_hoverraid_IdMatches_vehraid_IdMatches_shieldraid_IdMatches_cloakraid+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Special Groups',
},
uikey125
{ type
'button',
name = 'Ground Mobile Skirmisher (E)',
desc = 'Fencer Buoy Moderator Recluse Scalpel Rogue Ronin',
action = 'select AllMap+_IdMatches_vehsupport_IdMatches_amphfloater_IdMatches_jumpskirm_IdMatches_spiderskirm_IdMatches_hoverskirm_IdMatches_shieldskirm_IdMatches_cloakskirm+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Special Groups',
},
uikey126
{ type
'button',
name = 'Ground Mobile Riot (R)',
desc = 'Placeholder Scallop Ogre Redback Mace Ripper Outlaw Reaver',
action = 'select AllMap+_IdMatches_jumpblackhole_IdMatches_amphriot_IdMatches_tankriot_IdMatches_spiderriot_IdMatches_hoverriot_IdMatches_vehriot_IdMatches_shieldriot_IdMatches_cloakriot+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Special Groups',
},
uikey127
{ type
'button',
name = 'Ground Mobile Assault (T)',
desc = 'Minotaur Jack Hermit Halberd Ravager Thug Knight',
action = 'select AllMap+_IdMatches_tankassault_IdMatches_jumpassault_IdMatches_spiderassault_IdMatches_hoverassault_IdMatches_vehassault_IdMatches_shieldassault_IdMatches_cloakassault+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Special Groups',
},
uikey128
{ type
'button',
name = 'Ground Mobile Artillery (Y)',
desc = 'Bulkhead Lance Emissary Firewalker Badger Racketeer Sling',
action = 'select AllMap+_IdMatches_amphsupport_IdMatches_hoverarty_IdMatches_tankarty_IdMatches_jumparty_IdMatches_veharty_IdMatches_shieldarty_IdMatches_cloakarty+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Special Groups',
},
uikey129
{ type
'button',
name = 'Ground Mobile Scout (S)',
desc = 'Puppy Flea Dart Dirtbag',
action = 'select AllMap+_IdMatches_jumpscout_IdMatches_spiderscout_IdMatches_vehscout_IdMatches_shieldscout+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Special Groups',
},
uikey130
{ type
'button',
name = 'Ground Mobile Anti-Air (D)',
desc = 'Angler Ettin Toad Tarantula Flail Crasher Gremlin Vandal',
action = 'select AllMap+_IdMatches_amphaa_IdMatches_tankaa_IdMatches_jumpaa_IdMatches_spideraa_IdMatches_hoveraa_IdMatches_vehaa_IdMatches_shieldaa_IdMatches_cloakaa+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Special Groups',
},
uikey131
{ type
'button',
name = 'Ground Factory Signature Units (F)',
desc = 'Grizzly Cyclops Jugglenaut Crab Impaler Felon Phantom',
action = 'select AllMap+_IdMatches_amphassault_IdMatches_tankheavyassault_IdMatches_jumpsumo_IdMatches_spidercrabe_IdMatches_vehheavyarty_IdMatches_shieldfelon_IdMatches_cloaksnipe+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Special Groups',
},
uikey132
{ type
'button',
name = 'Ground Mobile Bomb (G)',
desc = 'Limpet Skuttle Snitch Imp',
action = 'select AllMap+_IdMatches_amphbomb_IdMatches_jumpbomb_IdMatches_shieldbomb_IdMatches_cloakbomb+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Special Groups',
},
uikey133
{ type
'button',
name = 'Ground Mobile Utility (H)',
desc = 'Djinn Aspis Iris',
action = 'select AllMap+_IdMatches_amphtele_IdMatches_shieldshield_IdMatches_cloakjammer+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Special Groups',
},
uikey134
{ type
'button',
name = 'Ground Mobile Unique',
desc = 'Claymore Lobster Tremor Dominatrix Scythe Widow',
action = 'select AllMap+_IdMatches_hoverdepthcharge_IdMatches_amphlaunch_IdMatches_tankheavyarty_IdMatches_vehcapture_IdMatches_cloakheavyraid_IdMatches_spiderantiheavy+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Special Groups',
},
uikey135
{ type
'button',
name = 'All Offensive Striders',
desc = 'Ultimatum Scorpion Dante Merlin Paladin Detriment Shogun Reef Scylla',
action = 'select AllMap+_IdMatches_striderantiheavy_IdMatches_striderscorpion_IdMatches_striderdante_IdMatches_striderarty_IdMatches_striderbantha_IdMatches_striderdetriment_IdMatches_shipheavyarty_IdMatches_shipcarrier_IdMatches_subtacmissile+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Special Groups',
},
uikey136
{ type
'button',
name = 'Flying Anti-Air',
desc = 'Trident Raptor Swift',
action = 'select AllMap+_IdMatches_gunshipaa_IdMatches_planeheavyfighter_IdMatches_planefighter+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Special Groups',
},
uikey137
{ type
'button',
name = 'Flying Skirmisher',
desc = 'Harpy Magpie',
action = 'select AllMap+_IdMatches_gunshipskirm_IdMatches_bomberstrike+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Special Groups',
},
uikey138
{ type
'button',
name = 'Flying Riot',
desc = 'Blastwing Phoenix',
action = 'select AllMap+_IdMatches_gunshipbomb_IdMatches_bomberriot+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Special Groups',
},
uikey139
{ type
'button',
name = 'Flying Prec. Bomber & Assault Raider',
desc = 'Revenant Raven',
action = 'select AllMap+_IdMatches_gunshipassault_IdMatches_bomberprec+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Special Groups',
},
uikey140
{ type
'button',
name = 'Flying Support',
desc = 'Nimbus Odin',
action = 'select AllMap+_IdMatches_bomberassault_IdMatches_gunshipheavyskirm+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Special Groups',
},
uikey141
{ type
'button',
name = 'Flying Fortress & Singularity Bomber',
desc = 'Likho Krow',
action = 'select AllMap+_IdMatches_bomberheavy_IdMatches_gunshipkrow+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Special Groups',
},
uikey142
{ type
'button',
name = 'Flying Stun & Disarm',
desc = 'Thunderbird Gnat',
action = 'select AllMap+_IdMatches_gunshipemp_IdMatches_bomberdisarm+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Special Groups',
},
uikey143
{ type
'button',
name = 'Armed Shipyard Units',
desc = 'Seawolf Zephyr Cutter Envoy Siren Corsair Mistral Hunter',
action = 'select AllMap+_IdMatches_subraider_IdMatches_shipaa_IdMatches_shipscout_IdMatches_shiparty_IdMatches_shipassault_IdMatches_shipriot_IdMatches_shipskirm_IdMatches_shiptorpraider+_ClearSelection_SelectAll+',
path = 'Hotkeys/Hot Select/Special Groups',
},
}
local spGetSelectedUnits = Spring.GetSelectedUnits
local spSelectUnitArray = Spring.SelectUnitArray
local spGetUnitIsTransporting = Spring.GetUnitIsTransporting
local spGetUnitDefID = Spring.GetUnitDefID
local spGetTeamUnitsByDefs = Spring.GetTeamUnitsByDefs
local spGetMyTeamID = Spring.GetMyTeamID
local spGetModKeyState = Spring.GetModKeyState