• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 16:01
CEST 22:01
KST 05:01
  • 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
[ASL21] Ro24 Preview Pt2: News Flash8[ASL21] Ro24 Preview Pt1: New Chaos0Team Liquid Map Contest #22 - Presented by Monster Energy12ByuL: The Forgotten Master of ZvT30Behind the Blue - Team Liquid History Book20
Community News
Weekly Cups (March 23-29): herO takes triple5Aligulac acquired by REPLAYMAN.com/Stego Research3Weekly Cups (March 16-22): herO doubles, Cure surprises3Blizzard Classic Cup @ BlizzCon 2026 - $100k prize pool49Weekly Cups (March 9-15): herO, Clem, ByuN win4
StarCraft 2
General
What mix of new & old maps do you want in the next ladder pool? (SC2) herO wins SC2 All-Star Invitational Weekly Cups (March 23-29): herO takes triple Team Liquid Map Contest #22 - Presented by Monster Energy Aligulac acquired by REPLAYMAN.com/Stego Research
Tourneys
Sparkling Tuna Cup - Weekly Open Tournament RSL Season 4 announced for March-April StarCraft Evolution League (SC Evo Biweekly) WardiTV Mondays World University TeamLeague (500$+) | Signups Open
Strategy
Custom Maps
[M] (2) Frigid Storage Publishing has been re-enabled! [Feb 24th 2026]
External Content
Mutation # 519 Inner Power The PondCast: SC2 News & Results Mutation # 518 Radiation Zone Mutation # 517 Distant Threat
Brood War
General
Build Order Practice Maps [ASL21] Ro24 Preview Pt2: News Flash BGH Auto Balance -> http://bghmmr.eu/ Pros React To: SoulKey vs Ample ASL21 General Discussion
Tourneys
[ASL21] Ro24 Group E 🌍 Weekly Foreign Showmatches [Megathread] Daily Proleagues [ASL21] Ro24 Group D
Strategy
What's the deal with APM & what's its true value Fighting Spirit mining rates Simple Questions, Simple Answers
Other Games
General Games
Stormgate/Frost Giant Megathread Starcraft Tabletop Miniature Game Nintendo Switch Thread General RTS Discussion Thread Darkest Dungeon
Dota 2
The Story of Wings Gaming Official 'what is Dota anymore' discussion
League of Legends
G2 just beat GenG in First stand
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
Mafia Game Mode Feedback/Ideas TL Mafia Community Thread Five o'clock TL Mafia
Community
General
US Politics Mega-thread Things Aren’t Peaceful in Palestine The Games Industry And ATVI European Politico-economics QA Mega-thread Canadian Politics Mega-thread
Fan Clubs
The IdrA Fan Club
Media & Entertainment
[Manga] One Piece [Req][Books] Good Fantasy/SciFi books Movie Discussion!
Sports
2024 - 2026 Football Thread Formula 1 Discussion Cricket [SPORT] Tokyo Olympics 2021 Thread General nutrition recommendations
World Cup 2022
Tech Support
[G] How to Block Livestream Ads
TL Community
The Automated Ban List
Blogs
Funny Nicknames
LUCKY_NOOB
Money Laundering In Video Ga…
TrAiDoS
Iranian anarchists: organize…
XenOsky
FS++
Kraekkling
Shocked by a laser…
Spydermine0240
ASL S21 English Commentary…
namkraft
Customize Sidebar...

Website Feedback

Closed Threads



Active: 2366 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
Next event in 3h 59m
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
elazer 363
UpATreeSC 135
trigger 95
EmSc Tv 4
StarCraft: Brood War
EffOrt 981
ggaemo 170
Dewaltoss 120
Aegong 73
hero 71
IntoTheRainbow 15
Dota 2
capcasts340
League of Legends
JimRising 2
Counter-Strike
fl0m1471
Heroes of the Storm
Liquid`Hasu413
Other Games
summit1g5922
FrodaN4458
Grubby3003
tarik_tv2352
Beastyqt609
B2W.Neo555
C9.Mang0122
Hui .83
Trikslyr62
Organizations
StarCraft 2
angryscii 31
EmSc Tv 4
EmSc2Tv 4
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 17 non-featured ]
StarCraft 2
• Reevou 10
• davetesta8
• LaughNgamezSOOP
• sooper7s
• AfreecaTV YouTube
• intothetv
• Migwel
• Kozan
• IndyKCrew
StarCraft: Brood War
• 80smullet 18
• STPLYoutube
• ZZZeroYoutube
• BSLYoutube
Dota 2
• WagamamaTV1442
League of Legends
• TFBlade1254
Other Games
• imaqtpie1118
• Shiphtur185
Upcoming Events
PiGosaur Cup
3h 59m
Replay Cast
12h 59m
Afreeca Starleague
13h 59m
BeSt vs Leta
Queen vs Jaedong
Kung Fu Cup
14h 59m
Replay Cast
1d 3h
The PondCast
1d 13h
OSC
2 days
RSL Revival
2 days
TriGGeR vs Cure
ByuN vs Rogue
Replay Cast
3 days
RSL Revival
3 days
Maru vs MaxPax
[ Show More ]
BSL
3 days
RSL Revival
4 days
uThermal 2v2 Circuit
4 days
BSL
4 days
Replay Cast
6 days
Sparkling Tuna Cup
6 days
Liquipedia Results

Completed

Acropolis #4 - TS6
WardiTV Winter 2026
NationLESS Cup

Ongoing

BSL Season 22
CSL Elite League 2026
CSL Season 20: Qualifier 1
ASL Season 21
RSL Revival: Season 4
Nations Cup 2026
BLAST Open Spring 2026
ESL Pro League S23 Finals
ESL Pro League S23 Stage 1&2
PGL Cluj-Napoca 2026
IEM Kraków 2026
BLAST Bounty Winter 2026
BLAST Bounty Winter Qual

Upcoming

CSL Season 20: Qualifier 2
Escore Tournament S2: W1
CSL 2026 SPRING (S20)
Acropolis #4
IPSL Spring 2026
BSL 22 Non-Korean Championship
CSLAN 4
Kung Fu Cup 2026 Grand Finals
HSC XXIX
uThermal 2v2 2026 Main Event
StarCraft2 Community Team League 2026 Spring
IEM Cologne Major 2026
Stake Ranked Episode 2
CS Asia Championships 2026
Asian Champions League 2026
IEM Atlanta 2026
PGL Astana 2026
BLAST Rivals Spring 2026
CCT Season 3 Global Finals
IEM Rio 2026
PGL Bucharest 2026
Stake Ranked Episode 1
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 © 2026 TLnet. All Rights Reserved.