如何更改基于终端的程序的行为

时间:2019-04-07 13:56:25

标签: python editor curses

我正在尝试为终端开发一个新的文本编辑器。按下CTRL键时,是否可以创建自定义命令?

我已经尝试使用getch()和getkey()命令,但它们只给我提供了ASCII码的字符和数字

class UI:

    def __init__(self, texthandler):
        self.end_column = 0
        self.start_column = 0
        self.end_row = 0
        self.start_row = 0
        self.texthandler = texthandler
        self.window = None
        self.stdscr = None
        self.init()

    def init(self):
        if 'windows' in OS.lower():
            colorama.init(convert=True)
        else:
            colorama.init()
        self.stdscr = curses.initscr()
        curses.noecho()
        curses.cbreak()
        self.stdscr.keypad(True)

    def get_stdscr(self):
        return self.stdscr

    def mainloop(self):
        while True:
            self.stdscr.addstr(0, 0,
                               self.texthandler.get(self.start_row, self.end_row, self.start_column, self.end_column))
            key = self.stdscr.getch()
            if key == 27:
                break
            else:
                self.texthandler.add(key)
                self.end_row += 1
            self.render()

    def render(self):
        curses.doupdate()
        self.stdscr.refresh()

类texthandler仅用于获取和设置文本。它不会执行任何其他操作。 我已经尝试过curses.unctrl(),它与我期望的非常相似,但是它不能单独触发shift和ctrl键。有没有一种方法允许窗口检测到这些键?

0 个答案:

没有答案
相关问题