用于大型终端的ncurses(用于python)的鼠标支持

时间:2018-06-14 07:07:31

标签: python-3.x terminal ncurses tty python-curses

我在docker容器中使用带有ncurses(curses)的python3。 问题是鼠标事件不能准确地报告x单元格宽度超过222的终端中的stdout位置。乍一看这是一个明显的限制,因为据我所知,位置是以一个字节发送的。

然而Midnight Commander准确处理大型终端。经过一番挖掘后,我找不到如何正确处理带有curses的鼠标(这example无法正常工作)。我用curses尝试的一切都无法使用大型终端。午夜指挥官似乎正在使用gpm,但我找不到任何方法在python中使用它。

问题1:如何直接在python3中处理大型终端中的鼠标,最好是使用curses?

q2:以午夜指挥官为例,将直接在 id | user_id | created_on ------------------------ 15 | 42 | 1 day ago 16 | 43 | 1 day ago 17 | 44 | 1 day ago 18 | 45 | 2 day ago 打印转义序列,让鼠标按预期工作?

q3:是否还有其他终端gui库可以正确处理python的鼠标?

1 个答案:

答案 0 :(得分:1)

这不是对curses的python接口的直接限制,而是底层curses库,终端描述和终端的一个特性:

  • 对于ncurses,这是扩展鼠标功能,这是使用ABI 6(自2005年以来可用,ncurses 6 in 2015标准)的ncurses中的标准功能,并注意到某些发行版仍提供ABI 5 即可。
  • 终端描述必须使用ncurses认可为隐含SGR 1006支持的功能,当然还有
  • 终端本身必须支持该功能(请参阅January 2018的ncurses数据库中的注释,指出一些 的xterm模仿者。