2017-02-03 63 views
0

我正在使用Python的curses庫在Linux終端中實現一些鼠標可點擊的UI。我注意到,當屏幕寬度大於250列左右,如果我叫Python curses getmouse返回負數

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

mouse_x將是負數(例如,-33)

任何想法,爲什麼會這樣呢?

回答

2

流行的xterm鼠標協議只允許高達224的值(即256-32)。當您在該範圍之外單擊時,您會得到有趣的結果。

支持在xterm鼠標協議的終端的一些(但不是所有)已被修改,以支持較新的xterm協議(SGR 1006),其允許更大的座標值。 一些(再次不是全部)使用鼠標協議的應用程序可以使用較新的協議。

如果您安裝了完整的ncurses終端數據庫,並且正在使用與此協議配合使用的應用程序(包括ncurses),則可以使用TERM=xterm-1006來獲取此功能。