Browse Source

implemented curses_tty_wrapper()

Fabian Peter Hammerle 9 years ago
parent
commit
637685826b
1 changed files with 18 additions and 0 deletions
  1. 18 0
      ioex/__init__.py

+ 18 - 0
ioex/__init__.py

@@ -1,4 +1,22 @@
 import os
+import sys
+
+def curses_tty_wrapper(function, *args):
+    stdin_fd = os.dup(sys.stdin.fileno())
+    stdout_fd = os.dup(sys.stdout.fileno())
+    # set stdin to tty
+    tty_in = open('/dev/tty', 'r')
+    os.dup2(tty_in.fileno(), sys.stdin.fileno())
+    # set stdout to tty
+    tty_out = open('/dev/tty', 'w')
+    os.dup2(tty_out.fileno(), sys.stdout.fileno())
+    # os.system('ls -l /proc/self/fd/')
+    import curses
+    result = curses.wrapper(function, *args)
+    # reset stdin and stdout
+    os.dup2(stdin_fd, sys.stdin.fileno())
+    os.dup2(stdout_fd, sys.stdout.fileno())
+    return result
 
 def raw_input_with_default(prompt, default):
     import readline