Keyboard support

r? @metajack