【发布时间】:2017-02-03 20:19:54
【问题描述】:
我正在使用 Python 的 curses 库在 Linux 终端中实现一些鼠标可点击的 UI。我注意到当屏幕宽度大于 250 列左右时,如果我调用
_, mouse_x, mouse_y, _, mouse_event_type = curses.getmouse()
mouse_x 将是一个负数(例如,-33)
知道为什么会这样吗?
【问题讨论】:
标签: curses python-curses
我正在使用 Python 的 curses 库在 Linux 终端中实现一些鼠标可点击的 UI。我注意到当屏幕宽度大于 250 列左右时,如果我调用
_, mouse_x, mouse_y, _, mouse_event_type = curses.getmouse()
mouse_x 将是一个负数(例如,-33)
知道为什么会这样吗?
【问题讨论】:
标签: curses python-curses
流行的 xterm 鼠标协议只允许最大为 224 的值(即 256-32)。当您在该范围之外单击时,您会得到有趣的结果。
部分(但不是全部)支持 xterm 鼠标协议的终端已被修改以支持更新的 xterm 协议 (SGR 1006),该协议允许更大的坐标值. 一些(也不是所有)使用鼠标协议的应用程序可以使用较新的协议。
如果您安装了完整的 ncurses 终端数据库,并且正在使用支持此协议的应用程序(包括 ncurses),您可以使用TERM=xterm-1006 来获取此功能。
【讨论】: