Move keyboard to arch specific, and privatise io