final version of keyboard interface