Keyboard.

There might be bugs, but I need to commit before cleaning the code.