Make it all keyboard navigable

Add in a keypress library, and a few little cleanups