Python诅咒getmouse返回负数

时间:2017-02-03 20:19:55

标签: curses python-curses

我正在使用Python的curses库在Linux终端中实现一些鼠标可点击的UI。我注意到当屏幕宽度大于250列左右时,如果我调用

_, mouse_x, mouse_y, _, mouse_event_type = curses.getmouse()

mouse_x将为负数(例如,-33)

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

流行的xterm鼠标协议仅允许高达224的值(即256-32)。当您在该范围之外点击时,您将获得有趣的结果。

支持xterm鼠标协议的终端的某些(但不是所有)已被修改为支持更新的xterm协议(SGR 1006),允许更大的坐标值。 使用鼠标协议的某些(同样不是所有)应用程序可以使用较新的协议。

如果您安装了完整的ncurses终端数据库,并且正在使用使用此协议的应用程序(包括ncurses),则可以使用TERM=xterm-1006来获取此功能。