direct key control done, but sometimes crash. orz