我正在使用Python的curses库在Linux终端中实现一些鼠标可点击的UI。我注意到当屏幕宽度大于250列左右时,如果我调用
_, mouse_x, mouse_y, _, mouse_event_type = curses.getmouse()
mouse_x将为负数(例如,-33)
知道为什么会这样吗?
答案 0 :(得分:2)
流行的xterm鼠标协议仅允许高达224的值(即256-32)。当您在该范围之外点击时,您将获得有趣的结果。
支持xterm鼠标协议的终端的某些(但不是所有)已被修改为支持更新的xterm协议(SGR 1006),允许更大的坐标值。 使用鼠标协议的某些(同样不是所有)应用程序可以使用较新的协议。
如果您安装了完整的ncurses终端数据库,并且正在使用使用此协议的应用程序(包括ncurses),则可以使用TERM=xterm-1006
来获取此功能。