>>797のいうようにスリープを入れないと、キー状態を取得するスレッドに処理が切り替わらない。
ループの頭に1msスリープするようにすべし。