Bug #5626
io/console: Cannot disable raw mode
| Status: | Closed | Start date: | 11/14/2011 | |
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assignee: | % Done: | 0% |
||
| Category: | ext | |||
| Target version: | 2.0.0 | |||
| ruby -v: | ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0] |
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
Updated by nobu (Nobuyoshi Nakada) 6 months ago
- Status changed from Open to Feedback
- Assignee set to nobu (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?
Updated by nobu (Nobuyoshi Nakada) 3 months ago
- Status changed from Feedback to Closed