require 'curses' def get_char_now(); Curses.init_screen char = Curses.getch Curses.close_screen return char end --- warning - code is approximate, you have to lookup Curses docs. Depending on your application, it might make sense just to use curses for everything, then there is no need to start/stop it every time. Curses work on windows in cygwin, I haven't tried the native installer.