Big keyboard update; still not perfect