如何在curses中启用鼠标移动事件?
我找到了这个NCurses 中的鼠标移动事件, Xterm 控制序列 and ncurses_鼠标_移动但我不明白如何在 python-curses 中启用鼠标移动事件。我认为它与 TERM=xterm-1003 有关,但我不知道如何在 python-curses 中设置它。
这就是我为启用任何鼠标事件所做的:
curses.mousemask(curses.REPORT_MOUSE_POSITION | curses.ALL_MOUSE_EVENTS)
我知道这是一个相当老的问题,OP可能不再需要它了,但我把它留在这里给那些经过几个小时的谷歌搜索和挠头之后偶然发现这个问题的人:
import curses
def main(win:curses.window):
win.clear()
win.nodelay(True)
curses.mousemask(curses.REPORT_MOUSE_POSITION)
print('\033[?1003h') # enable mouse tracking with the XTERM API
# https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking
while True:
ch=win.getch()
if ch==curses.KEY_MOUSE:
win.clear()
win.addstr(0,0,str(curses.getmouse()[1:3]))
win.refresh()
curses.wrapper(main)
这里最重要的一行是print('\033[?1003h')
,这使得鼠标位置能够报告给程序,而mousemask
使curses能够解释来自终端的输入。请注意,print
必须出现在mousemask()
叫做。
在 macOS 10.14.6 上使用 iTerm2 进行了测试。 terminfo 没有任何调整。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)