keyboard code written, not tested