• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 16:02
CEST 22:02
KST 05:02
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
[ASL20] Ro16 Preview Pt1: Ascent2Maestros of the Game: Week 1/Play-in Preview12[ASL20] Ro24 Preview Pt2: Take-Off7[ASL20] Ro24 Preview Pt1: Runway132v2 & SC: Evo Complete: Weekend Double Feature4
Community News
LiuLi Cup - September 2025 Tournaments2Weekly Cups (August 25-31): Clem's Last Straw?39Weekly Cups (Aug 18-24): herO dethrones MaxPax6Maestros of The Game—$20k event w/ live finals in Paris57Weekly Cups (Aug 11-17): MaxPax triples again!15
StarCraft 2
General
Production Quality - Maestros of the Game Vs RSL 2 #1: Maru - Greatest Players of All Time Team Liquid Map Contest #21 - Presented by Monster Energy Geoff 'iNcontroL' Robinson has passed away Heaven's Balance Suggestions (roast me)
Tourneys
Maestros of The Game—$20k event w/ live finals in Paris RSL: Revival, a new crowdfunded tournament series Chzzk MurlocKing SC1 vs SC2 Cup Sea Duckling Open (Global, Bronze-Diamond) LiuLi Cup - September 2025 Tournaments
Strategy
Custom Maps
External Content
Mutation # 490 Masters of Midnight Mutation # 489 Bannable Offense Mutation # 488 What Goes Around Mutation # 487 Think Fast
Brood War
General
BGH Auto Balance -> http://bghmmr.eu/ [ASL20] Ro16 Preview Pt1: Ascent The Korean Terminology Thread Pros React To: herO's Baffling Game ASL20 General Discussion
Tourneys
[Megathread] Daily Proleagues [IPSL] ISPL Season 1 Winter Qualis and Info! Is there English video for group selection for ASL Small VOD Thread 2.0
Strategy
Simple Questions, Simple Answers Muta micro map competition Fighting Spirit mining rates [G] Mineral Boosting
Other Games
General Games
Stormgate/Frost Giant Megathread General RTS Discussion Thread Nintendo Switch Thread Path of Exile Warcraft III: The Frozen Throne
Dota 2
Official 'what is Dota anymore' discussion
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Heroes of StarCraft mini-set
TL Mafia
TL Mafia Community Thread Vanilla Mini Mafia
Community
General
US Politics Mega-thread Things Aren’t Peaceful in Palestine UK Politics Mega-thread The Games Industry And ATVI Russo-Ukrainian War Thread
Fan Clubs
The Happy Fan Club!
Media & Entertainment
[Manga] One Piece Anime Discussion Thread Movie Discussion! [\m/] Heavy Metal Thread
Sports
Formula 1 Discussion MLB/Baseball 2023 2024 - 2026 Football Thread TeamLiquid Health and Fitness Initiative For 2023
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread High temperatures on bridge(s)
TL Community
The Automated Ban List TeamLiquid Team Shirt On Sale
Blogs
Collective Intelligence: Tea…
TrAiDoS
A very expensive lesson on ma…
Garnet
hello world
radishsoup
Lemme tell you a thing o…
JoinTheRain
RTS Design in Hypercoven
a11
Evil Gacha Games and the…
ffswowsucks
INDEPENDIENTE LA CTM
XenOsky
Customize Sidebar...

Website Feedback

Closed Threads



Active: 854 users

[G] Custom Maps and Custom Hotkeys

Forum Index > SC2 Maps & Custom Games
Post a Reply
SixtusTheFifth
Profile Blog Joined September 2010
New Zealand170 Posts
Last Edited: 2014-01-20 11:53:48
January 17 2014 11:22 GMT
#1
[G] Custom Maps and Custom Hotkeys


Update: Part two now here


The purpose of this guide is to demonstrate how to make your maps and mods accessible to those of us who customise our hotkeys. Having beaten every test Blizzard could throw at me helping with TheCore I wrote half of this guide and then stopped, possibly out of exhaustion. With renewed interest in Starbow (and Jakatak asking nicely) I have dusted this guide off.

It is my hope that by the end mapmakers will have the tools to update their maps to be playable with any hotkey setup, preferably with minimal fuss for everyone. In a perfect world every key would be accessible through the front end (and the icon movable), but while we wait for that to happen there are still ways to make life easier for players of your map.

These are
  • Plan ahead so conflicts don’t occur in the first place
  • Set keys to inherit wherever possible
  • Provide a text version of new keys

Presumably planning is something that mapmakers do anyway. Setting keys to inherit is 5-10 seconds more work per ability.

If both of these were done then in the worst case there would be a few lines for players to paste into their hotkey file. This is what I mean by minimal fuss for everyone. However these aren’t being done (not even by Blizzard) so the maximum amount of work is being pushed to individuals (who probably just switch to grid) or maintainers of hotkey setups (who are overwhelmed so their players probably just switch to grid).


Plan Ahead
There are a number of ways to make life difficult for players but only a couple to make life easy. Copy the Medivac, change the ID to MyMedivacBringsAllTheBoysToTheYard, check that no info appears in the front end, lock the map and voilà: hotkey this, bitch.

Further complications arise when the ID is kept the same but the unit changes to a new command card, more still if you swap units. In some of these cases, even if the hotkey could be written manually into the file, a whole new file would need to be created for the custom game.


How Hotkeys Work
In the .SC2HotKeys file the hotkeys are in the following format
buttonID/unitID=hotkey,alternate

Scroll through your file and you will see
Baneling/Zergling=

Open up the Editor and you’ll see the unit “Zergling” has the ID Zergling. Attached to the Zergling is the button “Morph to Baneling” which has the ID Baneling. Abilities, Actors, Behaviours and Buttons all have IDs, but only one combination allows players to change the key.

I point this out as part of planning ahead because either this is news to a lot of you, or old information and some of you are real pricks. MyMedivacBringsAllTheBoysToTheYard barely exaggerates some of the stuff I’ve seen and in most cases the unit was indistinguishable from the original. But if someone moves buildings between the Basic and Advanced Structures cards you can bet the one thing they won’t change is the UnitID.


IDs and Planning
If you remove the Siege Tank and replace it with the Battle Tank then by all means have the UnitID=SiegeTank. Same if you swap out Siege Mode for Battle Mode and leave the ID the same. The hotkeys will stay the same and with one for one swaps no conflict can occur.

If you keep the Siege Tank as is and shift it to the Planetary Fortress then change the ID to SiegeTankFromPF. Then write the following line where people can get to it: in the map’s How To Play, on a TL post, on a Mapster post… or wherever you think is easiest
SiegeTankFromPF/PlanetaryFortress=

Without this players can’t find conflicts without triggering them by opening the map. And in this example you think the SCV is the problem, what if rally point was set to ‘S’? There’s no telling which key will be unbound, but when it is it will revert to its hardcoded value, so in the case of Rally Point now shifting back to ‘Y’ on every building (and most Protoss units) a chain reaction of unbinds will be unleashed as yet more keys are sent to look for a new home.


Set Keys to Inherit
I stumbled across this when writing up a blog post for TheCore so all the background is there and I’ll just repeat the key point. The SC2 Map Editor can tell keys to inherit.

Remember all the “campaign keys don’t work” posts like this and this and this? Remember how they were fixed at the end of July 2013? Well the solution was in the editor all along, every unit has a simple setting and Blizzard have been doing it for years.

Here is the step by step exactly as I wrote it: Setting Inheritance. You won’t be able to follow those steps because if you now open that map and scroll to that button the change is already there. Three months after I found the fix that Blizzard already knew about they got around to doing it themselves.

Go have a look at Kerrigan K5: and look at the Leaping Strike button. See how it has that same Hotkey Alias set to Kinetic Blast?
Apocalypse has its Hotkey Alias set to Spawn Leviathan.
Psionic Shift has its Hotkey Alias set to Crushing Grip.

Go the Engineering Bay: Upgrade Infantry Armor Levels 2 and 3 both alias Level 1, as they have for years. Open up a WoL campaign map and see that Vanadium Plating has its Hotkey Alias set to VanadiITSSTILLNOTFIXEDFFS. But if you change all the Vanadium Platings to alias Level 1 (while you’re practising do the same for all campaign upgrades in the Engineering Bay and Armory) and test the map then you’ll see inheritance in action.


Inheritance and Planning
So now we can go further than just swapping units and avoiding conflicts. The new button can be set to inherit the original’s hotkey, which players will already have in their file.

Starbow has removed Calldown MULE and Calldown Supply Depot, replacing them with Calldown SCV and Overcharge. That seems like a good place to good start.
So set the Alias for Calldown SCV to Calldown MULE, and set the Alias for Overcharge to Calldown Extra Supplies (not Calldown Supply Depot which is a campaign ability which should have its own alias set to Build Supply Depot) and test the map.
Switch from Standard to your customised keys and whatever keys you’re used to in multiplayer should now be in Starbow.

Moving on, the Ghost’s Shock is an AoE and EMP has been removed. Set the Alias for Shock to EMP Shockwave and test the map.


Provide a Text Version of New Keys
Before you go too much further I will point out that there are a few cases that won’t work. This can be due to dependencies, or disabling buttons. It can also come from they way a button is designed. I will explain these later and how to design buttons so even this number is reduced.

But let’s say I get struck by lightning before I can update this post. Even if these cases were never fixed, with UnitIDs changed where a clash might occur, and with inheritance set where possible, most maps would be left with a handful of entries for players to paste into their hotkey file.

Their single hotkey file which would work for everything.





The above section functions as an overview. This update now moves into the nitty gritty. If I’d finished the whole thing at once rather than staggered episodes I would have structured it differently.





Mechanics of Buttons
This section explains the various settings and how they affect hotkeys. Using these too often or not enough can have the same result for players: make a new SC2HotKeys file for your game. So no pressure!

These settings are
  • (Basic) UI: Hotkey Alias
  • (Basic) UI: Universal
  • (Basic) UI: Hotkey Set

Hotkey Alias
This tells the button to use an assumed name. It’s limited as it only works for buttons on the same unit but this still covers a lot of ground since most buttons are swaps for others.

Buttons to build various units from larva are a good example. They all have the same unitID, so everything will be
buttonID/larva=

The Swarmling and Hunterling can alias the Zergling so the buttonID=zergling for all three. So one entry in the file covers three units
zergling/larva=

This solves the problem of players having to make their own bindings for the 12 units you added which were pretty similar to the one they replaced. They already have an entry in their file so your units using aliases will access those keys too. But bear in mind this alias cannot be overridden even with a manual entry to the file. Any different ideas that players have about binding will now require a new hotkey file.

If you take Blink, make it alias Storm and change the hotkey in game then SC2Hotkeys will record PsiStorm/Stalker=. So it is aliasing but it’s highly unlikely to inherit any key in the file. Lacking the option to tell buttons to also retrieve a unitID there is not an easy way to create new units and abilities and have them use hotkeys that players already have.

Actual units also have a Hotkey Alias, it’s mostly used on buildings and does even less. It moves the card to another unit on the hotkey GUI. The three Tech Labs that appear on the front are separate buildings with separate IDs which alias one Tech Lab. There would be no affect on the SC2Hotkey file if this was turned off, the buttons would just be harder to see all at once through the front.


Universal
So how do Ghost and Banshee share cloak then? How do Gateway units come from Warpgates?

Attack, Archon Merge, Build SCV, and Cloak all have Universal enabled and all appear in the format
buttonID=

This is almost always used in combination with the Hotkey Alias, and almost always where one button is shared by many units. When keys are updated through the front it forces an update of everything sharing that key.

Note the difference here: Hotkey Alias is used where one unit has many buttons, which you might not want or need on the front as no conflict can occur; Universal is used where one button is on many units, probably all of which are on the front and changing one might well conflict somewhere else.

The Load buttons for Overlord, Warp Prism, Nydus, and Medivac are all universal and all have the alias Load Bunker (which is also universal but has no alias). Same for all the unloads.
If you change the load key on any unit the alias setting decides which line to write to the SC2Hotkeys file (the bunker’s), the universal decides only the buttonID will be written (BunkerLoad= or BunkerUnloadAll=) and then tells all the other buttons on the GUI to update.

Edit a HotS map and turn off Universal on Load and Unload on all these units. Test the map and change only the Bunker’s Load and Unload. First you will notice no other unit’s button changed in the GUI, now change some of the rest and check the format in the file
BunkerLoad/Bunker=
BunkerLoad/Medivac=
BunkerLoad/NydusCanal=
BunkerLoad/NydusNetwork=
BunkerLoad/Overlord=
BunkerLoad/WarpPrism=
BunkerUnloadAll/Bunker=
BunkerUnloadAll/Medivac=
BunkerUnloadAll/NydusCanal=
BunkerUnloadAll/NydusNetwork=
BunkerUnloadAll/Overlord=
BunkerUnloadAll/WarpPrism=

You can see the alias is still working and you can see how units having separate hotkeys was bypassed: just remove the unitID.

Every Protoss Gateway unit is universal. If you make the Sentry come from the Robotics Facility there’s no Sentry/RoboticsFacility= for players to use to bypass whatever clash arises in their file. Those that make the mistake of changing it will just get another clash playing ladder.
Making Sentry2 non-universal will get past that, so what key will be the default for Sentry2/RoboticsFacility? What about the 14 buttons now in the format
buttonID/Sentry2=
Will you write them all somewhere easy to find? Because players might get conflicts if you don’t.

There’s more fun to be had moving units onto the gateways, they have to be universal. Or you can leave everything separate and players can just bind everything four times. Pussies.
Immortal=
Immortal/Gateway=
Immortal/RoboticsFacility=
Immortal/WarpGate=
Actual lines from TheCore



Hotkey Set
This tells keys to ignore a conflict with other members of the set. Fun things to do with this are
  • Fix the Spectre’s Hold Fire and Weapons Free. actually why bother?
  • Add everything on a command card to the same set.
I’d love this to be a magic bullet but it would probably prevent unbinds only in limited cases. The SCV and SiegeTankFromPF from earlier could both be added to a set to prevent a clash on standard. But on a custom game that overhauls everything you’d need a set for every command card.

I guess the chain reactions would be stopped.


Examples from Maps and Mods
Let’s start this off as ‘your own personal reflection journal’. I’ll describe the creation or editing of some buttons and you decide how you would design it. The goal of the design is for players to use your map without conflicts. Assume a player has no conflicts between WoL & HotS campaigns and ladder and they are reading about your map in the Arcade.
  • In Brood War
    • The Queen was built by larva. She also had 3 abilities.
    • The Defiler had 3 abilities
    • The Science Facility was built by the SCV
    • The Dragoon was built by the Gateway.
  • Build every Terran ship at the Starport
  • When the Greater Spire is upgraded it unlocks flyer upgrades 4
    • When upgraded again it unlocks a choice between Devourers and Guardians.
    • It’s your choice how Devourers and Guardians spawn.

External Consistency
Internal consistency would get every key working in your map, which would be an achievement in itself. External consistency would allow players to switch to any map without conflicts, which might be impossible but let’s take a shot.

Starbow removed the Colossus and added the Reaver, so one might set the Reaver’s Hotkey Alias to the Colossus. However this will presumably create a conflict when LotV has both. LotV might have the unitID’s EagerForTheReaver and OhCollyMyColly but
  • It will be bad enough coping with the conflicts Blizzard make never mind your custom thingy.
  • Some other custom game might already have both.

Each map has different ideas on which units belong on the Factory command card, but the pool of units is the same. Starbow removes the Hellion for the Vulture but the alias wouldn’t be set because these units need different keys for the campaign. Comparing OneGoal, SC2BW, Starbow and the current campaign mods shows, for the most part, agreement on the pool of units on each building.

I think external consistency is possible, and I’m sure it’s worth a shot. But I’ll revisit this later since it is less of a priority.
Doominator10
Profile Joined August 2012
United States515 Posts
January 17 2014 14:09 GMT
#2
Doom approves this message
Your DOOM has arrived,,,, and is handing out cookies
JaKaTaKSc2
Profile Blog Joined March 2011
United States2787 Posts
January 17 2014 15:22 GMT
#3
Hell yea, sixtus is still a fucking wizard of hotkeys
Commentatorhttps://www.youtube.com/JaKaTaKtv
SixtusTheFifth
Profile Blog Joined September 2010
New Zealand170 Posts
January 20 2014 11:55 GMT
#4
Part two

Please log in or register to reply.
Live Events Refresh
BSL Team Wars
19:00
Round 6
Team Hawk vs Team Sziky
LiquipediaDiscussion
Maestros of the Game
17:00
Group Stage - Group D
Maru vs Lambo
herO vs ShoWTimE
ComeBackTV 1667
SteadfastSC885
IndyStarCraft 342
CranKy Ducklings305
BRAT_OK 192
CosmosSc2 98
Rex84
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
SteadfastSC 885
IndyStarCraft 328
BRAT_OK 192
ProTech126
CosmosSc2 98
Rex 81
JuggernautJason61
Vindicta 18
StarCraft: Brood War
Shuttle 574
Dewaltoss 99
sSak 57
scan(afreeca) 38
NaDa 5
Dota 2
The International97158
Gorgc17718
Dendi615
KheZu45
League of Legends
JimRising 284
Counter-Strike
fl0m2791
Stewie2K425
kRYSTAL_6
Super Smash Bros
C9.Mang01971
Mew2King106
Other Games
summit1g3237
Grubby3036
FrodaN1615
B2W.Neo774
Hui .193
SortOf87
Organizations
Other Games
gamesdonequick2210
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 19 non-featured ]
StarCraft 2
• musti20045 58
• Adnapsc2 16
• intothetv
• IndyKCrew
• sooper7s
• AfreecaTV YouTube
• Migwel
• LaughNgamezSOOP
• Kozan
StarCraft: Brood War
• Azhi_Dahaki15
• FirePhoenix15
• STPLYoutube
• ZZZeroYoutube
• BSLYoutube
Dota 2
• C_a_k_e 2081
• masondota2842
League of Legends
• Doublelift1686
Counter-Strike
• Shiphtur177
Other Games
• imaqtpie1709
Upcoming Events
Sparkling Tuna Cup
13h 58m
Monday Night Weeklies
19h 58m
The PondCast
3 days
RSL Revival
3 days
Cure vs SHIN
Reynor vs Zoun
RSL Revival
4 days
Classic vs TriGGeR
ByuN vs Maru
Online Event
4 days
BSL Team Wars
4 days
Team Bonyth vs Team Dewalt
BSL Team Wars
4 days
RSL Revival
5 days
Maestros of the Game
5 days
[ Show More ]
Cosmonarchy
5 days
Bonyth vs Dewalt
[BSL 2025] Weekly
5 days
RSL Revival
6 days
Maestros of the Game
6 days
BSL Team Wars
6 days
Liquipedia Results

Completed

Ultimate Battle Special: Larva vs Mini
SEL Season 2 Championship
HCC Europe

Ongoing

Copa Latinoamericana 4
BSL 20 Team Wars
KCM Race Survival 2025 Season 3
BSL 21: BSL Points
ASL Season 20
CSL 2025 AUTUMN (S18)
LASL Season 20
RSL Revival: Season 2
Maestros of the Game
Chzzk MurlocKing SC1 vs SC2 Cup #2
BLAST Open Fall 2025
BLAST Open Fall Qual
Esports World Cup 2025
BLAST Bounty Fall 2025
BLAST Bounty Fall Qual
IEM Cologne 2025
FISSURE Playground #1

Upcoming

2025 Chongqing Offline CUP
BSL Polish World Championship 2025
BSL Season 21
BSL 21 Team A
EC S1
BLAST Rivals Fall 2025
IEM Chengdu 2025
PGL Masters Bucharest 2025
Thunderpick World Champ.
MESA Nomadic Masters Fall
CS Asia Championships 2025
ESL Pro League S22
StarSeries Fall 2025
FISSURE Playground #2
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2025 TLnet. All Rights Reserved.