don't absorb button presses

This changes the way in which hhpc grabs quite dramatically,
so this needs to be tested quite a bit.
code cleanup and more comments
improve error reporting