

Ask HN: Theory for Keyboard Shortcut Layout - hackerblues

When playing the computer game Starcraft 2 it is reasonably important to have a good hotkey setup to enable quick, clean control of your buildings and units. (Analogous to Ctrl+C to copy highlighted text.) I am trying to find a set of guiding principles which would allow the creation of an 'optimal' hotkey layout. Does anyone know of any research work on this problem?<p>I haven't had much luck searching for "Industrial Design" and "shortcut layout", but perhaps that is nonstandard terminology.<p>The most useful reference I've found was a website which outlined the story of a programmer who remapped his keyboard from QWERTY. In that case he guesstimated a cost for each key press (eg, pointer from 'f' to 'r' is 1 unit, from 'f' to '5' is two units), calculated the frequency of each character used from a collection of sample code, and then used a genetic algorithm to find an arrangement which minimized the cost.<p>This seems like an interesting starting point but I am concerned it might give a solution which breaks some higher level principle. For instance, in SC2 there are sequences of actions which occur together frequently, maybe it has been shown that it is best for one finger to push all the necessary hotkeys in the sequence or perhaps each hotkey should be given to a different finger. Is it better for the hotkeys associated with qualitatively different targets to be physically separated on the keyboard or is key reuse ok? Etc.<p>Thanks for any useful references or suggestions of appropriate keywords I should be searching for.
======
muyyatin
I've heard Carpalx [1] works well. In general, you want to feed an
optimization algorithm the "text" that you would be typing. Maybe you could
run a keylogger on one of your SC2 sessions and use that for input? That would
help with hotkeys in sequence, as usually typing with different fingers is
faster (compare "df" to "aa").

[1] <http://mkweb.bcgsc.ca/carpalx/>

~~~
hackerblues
This seems very promising - thanks for the link!

