Logan Capaldo wrote:
> What ^C is actually depends on your terminal. If ^C is SIGINT for the
> terminal, you'll never get ^C in the input stream no matter what you do.

Not true - if you handle the SIGINT, there's no reason why you
shouldn't get a character in the input stream. Here's an irb session
on Windows:

>> trap(:INT) {}
=> #<Proc:0x02855d78@C:/Documents and Settings/dburt/Program Files/ruby/lib/ruby
/1.8/irb.rb:65>
>> require "Win32API"
=> true
>> def read_char
>>   Win32API.new("crtdll", "_getch", [], "L").Call
>> end
=> nil
>> read_char  # and press enter
=> 13
>> read_char  # and press Ctrl+A
=> 1
>> read_char  # and press Ctrl+C
=> 3

Cheers,
Dave