import curses import asyncio class Console(): def __init__(self, stdscr): self.stdscr = stdscr def __enter__(self): curses.noecho() curses.cbreak() self.stdscr.keypad(True) def __exit__(self, _a, _b, _c): curses.nocbreak() self.stdscr.keypad(False) curses.echo() curses.endwin() def start(on_str, on_tab): stdscr = curses.initscr() with Console(stdscr) as _: string = "" while True: char = stdscr.getkey() if char == '\n': on_str(string) string = "" elif char == '\t': on_tab() else: string += char