Solution #5: provide an API for different keyboards

Ideally this would be realized through some kind of API so that different keyboards can later on be realized. This way one could start with the most simple/cheap solution and add something better later on.