curses 中的自定义键绑定功能

Custom key-bind functionality in curses

我正在尝试在我正在使用的 TUI 中实现一些简单的文本编辑功能。我正在为 curses 使用 Python 包装器。

目前我正在尝试做的是将某些键绑定与特定功能或操作相关联,但不确定如何进行,而且文档也不清楚。根据 documentation 有一些默认键绑定,但是如果我想添加我自己的与特定键绑定关联的“事件”怎么办?

首先要查看 curses.textpad 的源代码,了解它是如何实现的。它是硬编码的,例如,

    elif ch == curses.ascii.ENQ:                           # ^e
        if self.stripspaces:
            self.win.move(y, self._end_of_line(y))
        else:
            self.win.move(y, self.maxx)

它可以重写以允许自定义绑定,但请记住,目前(2021 年 2 月中旬),最近一次提交是在 4 年多以前 (December 2016)。