diff options
Diffstat (limited to 'sample/cbreak.rb')
-rw-r--r-- | sample/cbreak.rb | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/sample/cbreak.rb b/sample/cbreak.rb new file mode 100644 index 0000000000..4b4cb1d3e6 --- /dev/null +++ b/sample/cbreak.rb @@ -0,0 +1,34 @@ +%CBREAK = 0x00000002 +%ECHO = 0x00000008 +%TIOCGETP = 0x40067408 +%TIOCSETP = 0x80067409 + +def cbreak () + set_cbreak(%TRUE) +end + +def cooked () + set_cbreak(%FALSE) +end + +def set_cbreak (on) + tty = "\0" * 256 + $stdin.ioctl(%TIOCGETP, tty) + ttys = tty.unpack("C4 S") + if on + ttys[4] |= %CBREAK + ttys[4] &= ~%ECHO + else + ttys[4] &= ~%CBREAK + ttys[4] |= %ECHO + end + tty = ttys.pack("C4 S") + $stdin.ioctl(%TIOCSETP, tty) +end +cbreak(); + +print("this is echo line: "); +readline().print +cooked(); +print("this is non echo line: "); +readline().print |