added preliminary keyboard support. still in the testing phase.