review read-unbuffered-keystroke recipe