Wul*_*ire 3 python curses ncurses xterm python-curses
当前,如果我将TERM环境变量设置为'xterm-1003',则可以获取鼠标移动事件,但是会得到cr脚的颜色和诅咒.can_change_color()== False
os.environ['TERM'] = 'xterm-1003'
...
curses.mousemask(curses.ALL_MOUSE_EVENTS | curses.REPORT_MOUSE_POSITION)
...
while True:
event = screen.getch()
if event == curses.KEY_MOUSE:
# I get nice events whenever I move the mouse (no click required)
_, mx, my, _, _ = curses.getmouse()
Run Code Online (Sandbox Code Playgroud)
如果我将TERM env var设置为'xterm-256color',我会得到一个漂亮的调色板以及curses.can_change_color()== True,但是除非单击按钮,否则我不会收到鼠标事件!
>ls /usr/share/terminfo/x/
Run Code Online (Sandbox Code Playgroud)
报告
xfce xterm-256color xterm-hp xterm-r5 xterm-xf86-v32 xterm-xfree86
xterm xterm-88color xterm-new xterm-r6 xterm-xf86-v33 xterm-xi
xterm-1002 xterm-8bit xterm-nic xterm-sco xterm-xf86-v333 xterms
xterm-1003 xterm-basic xterm-noapp xterm-sun xterm-xf86-v40
xterm-16color xterm-bold xterm-old xterm-vt220 xterm-xf86-v43
xterm-24 xterm-color xterm-pcolor xterm-vt52 xterm-xf86-v44
Run Code Online (Sandbox Code Playgroud)
我尝试过的所有方法似乎都不支持curses.can_change_color()== True和鼠标移动事件。有没有一种方法可以通过设置适当的$ TERM值或其他方法来同时获得它们?
谢谢!
您始终可以使用infocmp(显示条目的内容)和tic(编译条目)来制作自己的文件。如果您没有在系统区域中写权限,它将转到$ HOME / .terminfo
首先比较xterm-1003和xterm-256color:
> infocmp -x xterm-1003 xterm-256color
comparing xterm-1003 to xterm-256color.
comparing booleans.
ccc: F:T.
comparing numbers.
colors: 8, 256.
pairs: 64, 32767.
comparing strings.
initc: NULL, '\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\'.
setab: '\E[4%p1%dm', '\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m'.
setaf: '\E[3%p1%dm', '\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m'.
setb: '\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m', NULL.
setf: '\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m', NULL.
XM: '\E[?1003%?%p1%{1}%=%th%el%;', NULL.
Run Code Online (Sandbox Code Playgroud)
本质上,您所感兴趣的只是将XM功能添加到的副本中xterm-256color。
所以...
infocmp -x xterm-256color >foofoo,添加XM字符串tic -x footic编译XM功能需要使用“ -x”选项,这是扩展功能(用户定义的功能),ncurses可以识别该扩展功能(如针对终端数据库的注释所述)。