summaryrefslogtreecommitdiff
path: root/sample/cbreak.rb
diff options
context:
space:
mode:
Diffstat (limited to 'sample/cbreak.rb')
-rw-r--r--sample/cbreak.rb34
1 files changed, 34 insertions, 0 deletions
diff --git a/sample/cbreak.rb b/sample/cbreak.rb
new file mode 100644
index 00000000000..4b4cb1d3e65
--- /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