Project

General

Profile

Bug #5626

io/console: Cannot disable raw mode

Added by Misty De Meo over 4 years ago. Updated about 4 years ago.

Status:
Closed
Priority:
Normal
ruby -v:
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0]
[ruby-core:40992]

Description

There doesn't seem to be a way to disable tty raw mode from within a Ruby script. The tty can be stuck in raw mode on script termination if IO.console.raw! is used, or if a raw command like IO.console.getch is in a thread that is terminated.

The documentation recommends following IO.console.raw! with #raw { ... } to restore the terminal, but this does not restore the terminal, either if IO.console.raw! is used or if a raw command is interrupted.

While I can use an external command like system("stty -raw"), I would rather be able to do this within IO.console. I can disable echo with IO.console.echo=, but that doesn't affect the raw mode.

History

#1 [ruby-core:41123] Updated by Nobuyoshi Nakada over 4 years ago

  • Status changed from Open to Feedback
  • Assignee set to Nobuyoshi Nakada
  • Target version set to 2.0.0

Misty De Meo wrote:

There doesn't seem to be a way to disable tty raw mode from within a Ruby script. The tty can be stuck in raw mode on script termination if IO.console.raw! is used, or if a raw command like IO.console.getch is in a thread that is terminated.

Sure, it can be.
I'll add IO#cooked and IO#cooked! methods.
Thank you for pointing out.

The documentation recommends following IO.console.raw! with #raw { ... } to restore the terminal, but this does not restore the terminal, either if IO.console.raw! is used or if a raw command is interrupted.

It sounds like a bug.
How can I reproduce it?

#2 [ruby-core:43091] Updated by Nobuyoshi Nakada about 4 years ago

  • Status changed from Feedback to Closed

Also available in: Atom PDF