implement basic on-screen keyboard