This is possible with Ruby 1.9.3's new getch
method:
require 'io/console'
input = STDIN.getch
Docs (Core): http://ruby-doc.org/core-2.3.0/IO.html#class-IO-label-io-2Fconsole
Docs (Lib): http://ruby-doc.org/stdlib-2.3.0/libdoc/io/console/rdoc/IO.html#method-i-getch
Source: https://github.com/ruby/ruby/tree/trunk/ext/io/console