keyboard support, may be slightly broken