Keyboard

NOTE: this isn't ready to be merged yet