Context manager for wrapping the use of a curses terminal

This commit is contained in:
Charles Peyrat 2020-10-09 16:14:23 +02:00
parent 07f2e4266a
commit c161f924e9
1 changed files with 25 additions and 0 deletions

View File

@ -0,0 +1,25 @@
import curses
class TermManager():
def __init__(self):
self.screen = curses.initscr()
# convert escapes sequences to curses abstraction
self.screen.keypad(True)
# stop printing typed keys to the terminal
curses.noecho()
# send keys through without having to press <enter>
curses.cbreak()
# make cursor invisible
curses.curs_set(False)
def __enter__(self):
return self.screen
def __exit__(self, type, value, traceback):
# restore the terminal to its original state
self.screen.keypad(False)
curses.echo()
curses.nocbreak()
curses.curs_set(True)
curses.endwin()