M-x Kelsin

A Hacking Blog

Custom Zerg Hotkeys Part II

After playing with these hotkeys for one day (only one ladder game however, I'm a wimp) I've made quite a few changes.

I played with the setup I had yesterday for a bunch of custom games vs the AI to see how it felt. Overall I liked it. I then played one ladder game with it and lost due to being out of practice (at least not due to the keys!). I then I played two custom games with my old key bindings. Immediately a bunch of things stuck out.

Space for Base Camera

I'm going to try and make this my main key to spam when looking for things to do. This is the only way to see how my hatcheries are doing as far as injects. I love having all of my queens on one hotkey again (wasn't doing this for a little while) but this leads to not being able to inject which isn't very good.

Unit Control Groups

Going back to 1-6 for units with A as attack felt COMPLETELY natural so basically I decided that I shouldn't change this. Unit groups being 1-6 and A being attack will stay no matter what. This morning I even tried making S, D and F control groups for units and this felt wrong as well.

Custom control groups for buildings

This aspect was something I immediately missed when going back to standard keys. Using control groups 5-7 for buildings immediately felt very wrong! This told me I was on the right track.

Using this data I tried some more stuff out this morning. I've ended up deciding that I want three custom control groups. One for macroing and then 3 more for production. After multiple trials I've settled on Q for macro (loved this from yesterday) and T, G and B for production. F for production was too useful for units/abilities and didn't leave a lot of space for the other two groups. If I made R and V control groups as well I was left with almost NO space at all... not good!

I also figured out (this morning) that I didn't like putting keys to the right of these production hotkeys for anything. I didn't like having to move my hand to macro AND use abilities so that was scratched quickly. I did however want to use more camera locations. I've settled on Tab with Y,H and N to be camera locations (as well as F1-F4). Tab will be my main base. This is where I go to build buildings and stuff like that. This provides a easy hotkey to return to home and provides Tab-Q to immediately go home and select Queens, or go home and select my town hall for other races. From then W does creep/build workers and E does my macro ability (chrono, inject or mule). I'm going to make Y,H and N be other camera locations with the idea being I can quicklky hit GH to select a production building and then focus on it. For Protoss I will make H go to my warp in location since I already have a notification that my warp in is ready (the icon on the screen). For other races H will focus on the barracks that are grouped to G.  For zerg H will be my rally location for units so I can quickly go "GH", hit the hotkey for the unit I want to make and then select new units that are coming out. Simular stuff will happen for TY and BN.


I did love using WE for abilities on units so I'm keeping that and seeing how it feels in big battles. R is stance changing. For zerg this is ALWAYS burron on all of the units and it's also the key for moving my crawlers. For tanks R is siege/unsiege and cloak. I make sure that R is always the key to train cloak and siege as well. Anytime a unit morphs that hotkey is V (hatchery, spire, ling, overlord, corrupter). V is also always upgrade buildings (evolution, forge, engineering bay etc). Building normal building is always W and advance is E. I then try to keep buildings semi simular across races. W is town hall, E is gas, R is supply (roach warren for zerg). S is rax/gateway/pool. F is always turret/spore and C is bunker/spine. Cannons for Toss are F and C.


For zerg selecting hatcheries will always be T, G or B and units are as follows:

  • D: Drone
  • Z: Ling
  • A: Overlord
  • R: Roach
  • E: Hydra
  • F: Infestor
  • X: Muta
  • C: Corruptor
  • W: Ultra
  • S: Select Larva

When I can I keep the building that allows for these units to be the same key (roach, infestor, hydra, ultra, etc)

I follow simular strats with Toss and Terran but try to keep the keys close to the building control group. Robo and Factory use Z,X,C and V for production for example. For Terran I have W and E do tech lab and reactor so my Starport hotkeys are A,S,D,F and R.


I moved Stop, Hold Position and Patrol to X, C and Z respectively. The best part about this is my early game spam. I constantly hit GSD as zerg now (to build drones) and none of these keys are abilities of the drone so spamming can't cause me to stop them (since stop is changed). I havn't tried this for toss/terran yet. I know I'll be hitting Tab-Q a lot on them so hopefully the same thing applys. I'll hopefully find anyother bad key overloads soon and change them.

I know this has been a long post but it was very interesting to me how returning to normal keys immediately told me which changes were good and which were bad. I hope the camera/control groups pairs prove helpful!

Custom Zerg Hotkeys

After hearing Tyler talk about his hotkey setup it made me want to try and create my own as well. We'll see how it goes.

I had no idea where to begin so I'm just going to try and solve large groups of functionality.

My control groups

I have 1-4 being normal control groups and then Q, A, Z and X also being control groups. While playing zerg I'm going to have hatches on A and and queens on Q. When playing other races I'm going to have town halls on Q and rax on A, fac/robo on Z and star's on X. Unit creation buttons stream from this so raz units are sdf and star/fac/robo units are cvb while the macro ability is E. Zerg creep spread is W (on queen and tumor) and larva inject is E.

Unit Control

Right now I put units on 1-4 and us 5 as attack. I don't know if I like this. It can feel clunky. 6 is hold position and ` is patrol. S is stop and M is move (which I don't use). Mainly I can't use A as attack anymore and that's the most ingrained muscle memory I have.

Abilities and Upgrades

Abilities are almost always W, E, R and T. R is used for burrow on all zerg units so normal abilities are W, E and T. Upgrades on buildings are ussually on W, E and R or W, E, S and D. Just kind of grid laid out.


I feel like unit control is really hard right now. I don't like 5 as attack but the only "comfortable" button is A. I think this is only muscle memory though and nothing else. I'm going to try and get used to this 5 thing for now. 

I have no idea if this is worth it or not, I feel almost like I should just go back to classic... don't now. Guess I'll try this for a little bit and change it later if I really don't like it.

New Dog

So with Sadie's passing me and Caitlin wasted no time getting another dog. We want someone for Grubby to play with, and want two dogs in general so there was no reason to wait


Caitlin did make the fatal mistake of letting me name the dog for the second time. Our first dog is named Grubby after my favorite Warcraft 3 pro player. This dog I decided to name Tcl after the programming language that I've used a lot while programming at Berklee College of Music. Like the wikipedia page says it's pronounced "tickle". It satisfies our requirements of being incredibly geeky, while at the same time being incredibly cute.

So our new dog Tcl will be spending the next few days getting used to Grubby and our 3 cats!

Updated Git branch in bash prompt

I had my git branch showing in my bash prompt for a long time. I recently changed my code around to make it much faster (more info below). Here are all the steps to go through.

Bash Completion

The first step is to get bash completion installed and install the git files for this as well. I use homebrew on the mac to install most open source stuff so you can just install bash-completion from that:

brew install bash-completion

At the end of the install it tells you to do some things… Do them:

Add the following lines to your ~/.bash_profile file:  if [ -f `brew --prefix`/etc/bash_completion ]; then    . `brew --prefix`/etc/bash_completion  fiTo install Homebrew's own completion script:  ln "#{HOMEBREW_PREFIX}/Library/Contributions/brew_bash_completion.sh" "#{etc}/bash_completion.d"

After this you can install git:

brew install git

and it will install the git prompt functions as well. You can try running __git_ps1 from inside a git working directory (in a new shell) to check that it’s working correctly

Adding branch to prompt

If you just want to add the git branch to your prompt you can just use __git_ps1 in your prompt. There’s a lot of details in the git completion file. It’s located at /usr/local/etc/bash_completion.d/git-completion.bash in a standard install of homebrew.

My prompt

I wanted my branch to change color based on if I’m root or not, if I’m on a remote machine or not and I want the branch color to change based on the git status. I did all this via some really messy shell code before. Recently git added support for some git status information in the git_ps1 output (but not using colors) so I rewrote my code using the same methods they had for determining git status. This was all stuff I could have done before but I’ve never looked into fancy git commands like diff-index and rev-parse before. My current_version of my prompt file is pretty great and ends up much faster.

New Blog

Finally getting around to moving my blog over to posterous. I will be moving some posts over to my coding blog at mx.kelsin.net but unfortunately I will be losing some information and making some long running google links no longer work. I'm generally ok with this since a lot of that data is so old it shouldn't really be relevant anymore anyway.