Initial import
Moved code to separate modules, support for different keyboards